@warlock.js/cascade 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +97 -0
- package/cjs/aggregate/DeselectPipeline.d.ts +10 -0
- package/cjs/aggregate/DeselectPipeline.d.ts.map +1 -0
- package/cjs/aggregate/DeselectPipeline.js +17 -0
- package/cjs/aggregate/DeselectPipeline.js.map +1 -0
- package/cjs/aggregate/GeoNearPipeline.d.ts +34 -0
- package/cjs/aggregate/GeoNearPipeline.d.ts.map +1 -0
- package/cjs/aggregate/GeoNearPipeline.js +44 -0
- package/cjs/aggregate/GeoNearPipeline.js.map +1 -0
- package/cjs/aggregate/GroupByPipeline.d.ts +12 -0
- package/cjs/aggregate/GroupByPipeline.d.ts.map +1 -0
- package/cjs/aggregate/GroupByPipeline.js +28 -0
- package/cjs/aggregate/GroupByPipeline.js.map +1 -0
- package/cjs/aggregate/LimitPipeline.d.ts +10 -0
- package/cjs/aggregate/LimitPipeline.d.ts.map +1 -0
- package/cjs/aggregate/LimitPipeline.js +14 -0
- package/cjs/aggregate/LimitPipeline.js.map +1 -0
- package/cjs/aggregate/LookupPipeline.d.ts +19 -0
- package/cjs/aggregate/LookupPipeline.d.ts.map +1 -0
- package/cjs/aggregate/LookupPipeline.js +19 -0
- package/cjs/aggregate/LookupPipeline.js.map +1 -0
- package/cjs/aggregate/OrWherePipeline.d.ts +23 -0
- package/cjs/aggregate/OrWherePipeline.d.ts.map +1 -0
- package/cjs/aggregate/OrWherePipeline.js +42 -0
- package/cjs/aggregate/OrWherePipeline.js.map +1 -0
- package/cjs/aggregate/SelectPipeline.d.ts +10 -0
- package/cjs/aggregate/SelectPipeline.d.ts.map +1 -0
- package/cjs/aggregate/SelectPipeline.js +26 -0
- package/cjs/aggregate/SelectPipeline.js.map +1 -0
- package/cjs/aggregate/SkipPipeline.d.ts +10 -0
- package/cjs/aggregate/SkipPipeline.d.ts.map +1 -0
- package/cjs/aggregate/SkipPipeline.js +14 -0
- package/cjs/aggregate/SkipPipeline.js.map +1 -0
- package/cjs/aggregate/SortByPipeline.d.ts +10 -0
- package/cjs/aggregate/SortByPipeline.d.ts.map +1 -0
- package/cjs/aggregate/SortByPipeline.js +18 -0
- package/cjs/aggregate/SortByPipeline.js.map +1 -0
- package/cjs/aggregate/SortPipeline.d.ts +11 -0
- package/cjs/aggregate/SortPipeline.d.ts.map +1 -0
- package/cjs/aggregate/SortPipeline.js +18 -0
- package/cjs/aggregate/SortPipeline.js.map +1 -0
- package/cjs/aggregate/SortRandomPipeline.d.ts +10 -0
- package/cjs/aggregate/SortRandomPipeline.d.ts.map +1 -0
- package/cjs/aggregate/SortRandomPipeline.js +16 -0
- package/cjs/aggregate/SortRandomPipeline.js.map +1 -0
- package/cjs/aggregate/UnwindPipeline.d.ts +14 -0
- package/cjs/aggregate/UnwindPipeline.d.ts.map +1 -0
- package/cjs/aggregate/UnwindPipeline.js +19 -0
- package/cjs/aggregate/UnwindPipeline.js.map +1 -0
- package/cjs/aggregate/WhereExpression.d.ts +17 -0
- package/cjs/aggregate/WhereExpression.d.ts.map +1 -0
- package/cjs/aggregate/WhereExpression.js +149 -0
- package/cjs/aggregate/WhereExpression.js.map +1 -0
- package/cjs/aggregate/WhereExpressionPipeline.d.ts +10 -0
- package/cjs/aggregate/WhereExpressionPipeline.d.ts.map +1 -0
- package/cjs/aggregate/WhereExpressionPipeline.js +15 -0
- package/cjs/aggregate/WhereExpressionPipeline.js.map +1 -0
- package/cjs/aggregate/WherePipeline.d.ts +13 -0
- package/cjs/aggregate/WherePipeline.d.ts.map +1 -0
- package/cjs/aggregate/WherePipeline.js +12 -0
- package/cjs/aggregate/WherePipeline.js.map +1 -0
- package/cjs/aggregate/aggregate.d.ts +346 -0
- package/cjs/aggregate/aggregate.d.ts.map +1 -0
- package/cjs/aggregate/aggregate.js +656 -0
- package/cjs/aggregate/aggregate.js.map +1 -0
- package/cjs/aggregate/expressions.d.ts +361 -0
- package/cjs/aggregate/expressions.d.ts.map +1 -0
- package/cjs/aggregate/expressions.js +536 -0
- package/cjs/aggregate/expressions.js.map +1 -0
- package/cjs/aggregate/index.d.ts +21 -0
- package/cjs/aggregate/index.d.ts.map +1 -0
- package/cjs/aggregate/parsePipelines.d.ts +5 -0
- package/cjs/aggregate/parsePipelines.d.ts.map +1 -0
- package/cjs/aggregate/parsePipelines.js +6 -0
- package/cjs/aggregate/parsePipelines.js.map +1 -0
- package/cjs/aggregate/pipeline.d.ts +31 -0
- package/cjs/aggregate/pipeline.d.ts.map +1 -0
- package/cjs/aggregate/pipeline.js +42 -0
- package/cjs/aggregate/pipeline.js.map +1 -0
- package/cjs/aggregate/types.d.ts +8 -0
- package/cjs/aggregate/types.d.ts.map +1 -0
- package/cjs/aggregate/types.js +31 -0
- package/cjs/aggregate/types.js.map +1 -0
- package/cjs/blueprint/blueprint.d.ts +154 -0
- package/cjs/blueprint/blueprint.d.ts.map +1 -0
- package/cjs/blueprint/blueprint.js +328 -0
- package/cjs/blueprint/blueprint.js.map +1 -0
- package/cjs/blueprint/index.d.ts +3 -0
- package/cjs/blueprint/index.d.ts.map +1 -0
- package/cjs/blueprint/model-blueprint.d.ts +15 -0
- package/cjs/blueprint/model-blueprint.d.ts.map +1 -0
- package/cjs/blueprint/model-blueprint.js +16 -0
- package/cjs/blueprint/model-blueprint.js.map +1 -0
- package/cjs/casts/arrayOf.d.ts +5 -0
- package/cjs/casts/arrayOf.d.ts.map +1 -0
- package/cjs/casts/arrayOf.js +18 -0
- package/cjs/casts/arrayOf.js.map +1 -0
- package/cjs/casts/cast-email.d.ts +2 -0
- package/cjs/casts/cast-email.d.ts.map +1 -0
- package/cjs/casts/cast-email.js +5 -0
- package/cjs/casts/cast-email.js.map +1 -0
- package/cjs/casts/castModel.d.ts +3 -0
- package/cjs/casts/castModel.d.ts.map +1 -0
- package/cjs/casts/castModel.js +49 -0
- package/cjs/casts/castModel.js.map +1 -0
- package/cjs/casts/expiresAfter.d.ts +3 -0
- package/cjs/casts/expiresAfter.d.ts.map +1 -0
- package/cjs/casts/expiresAfter.js +5 -0
- package/cjs/casts/expiresAfter.js.map +1 -0
- package/cjs/casts/index.d.ts +9 -0
- package/cjs/casts/index.d.ts.map +1 -0
- package/cjs/casts/oneOf.d.ts +3 -0
- package/cjs/casts/oneOf.d.ts.map +1 -0
- package/cjs/casts/oneOf.js +22 -0
- package/cjs/casts/oneOf.js.map +1 -0
- package/cjs/casts/random-string.d.ts +2 -0
- package/cjs/casts/random-string.d.ts.map +1 -0
- package/cjs/casts/random-string.js +5 -0
- package/cjs/casts/random-string.js.map +1 -0
- package/cjs/casts/randomInteger.d.ts +2 -0
- package/cjs/casts/randomInteger.d.ts.map +1 -0
- package/cjs/casts/randomInteger.js +7 -0
- package/cjs/casts/randomInteger.js.map +1 -0
- package/cjs/casts/shapedArray.d.ts +26 -0
- package/cjs/casts/shapedArray.d.ts.map +1 -0
- package/cjs/casts/shapedArray.js +100 -0
- package/cjs/casts/shapedArray.js.map +1 -0
- package/cjs/config.d.ts +4 -0
- package/cjs/config.d.ts.map +1 -0
- package/cjs/config.js +10 -0
- package/cjs/config.js.map +1 -0
- package/cjs/connection.d.ts +44 -0
- package/cjs/connection.d.ts.map +1 -0
- package/cjs/connection.js +98 -0
- package/cjs/connection.js.map +1 -0
- package/cjs/console/db-indexes-command.d.ts +3 -0
- package/cjs/console/db-indexes-command.d.ts.map +1 -0
- package/cjs/console/db-indexes-command.js +18 -0
- package/cjs/console/db-indexes-command.js.map +1 -0
- package/cjs/console/index.d.ts +4 -0
- package/cjs/console/index.d.ts.map +1 -0
- package/cjs/console/migrate-command.d.ts +3 -0
- package/cjs/console/migrate-command.d.ts.map +1 -0
- package/cjs/console/migrate-command.js +14 -0
- package/cjs/console/migrate-command.js.map +1 -0
- package/cjs/console/register-blueprint-command.d.ts +4 -0
- package/cjs/console/register-blueprint-command.d.ts.map +1 -0
- package/cjs/console/register-blueprint-command.js +27 -0
- package/cjs/console/register-blueprint-command.js.map +1 -0
- package/cjs/database.d.ts +49 -0
- package/cjs/database.d.ts.map +1 -0
- package/cjs/database.js +85 -0
- package/cjs/database.js.map +1 -0
- package/cjs/index.d.ts +14 -0
- package/cjs/index.d.ts.map +1 -0
- package/cjs/index.js +1 -0
- package/cjs/index.js.map +1 -0
- package/cjs/migrate.d.ts +8 -0
- package/cjs/migrate.d.ts.map +1 -0
- package/cjs/migrate.js +89 -0
- package/cjs/migrate.js.map +1 -0
- package/cjs/model/ModelAggregate.d.ts +71 -0
- package/cjs/model/ModelAggregate.d.ts.map +1 -0
- package/cjs/model/ModelAggregate.js +147 -0
- package/cjs/model/ModelAggregate.js.map +1 -0
- package/cjs/model/ModelSync.d.ts +74 -0
- package/cjs/model/ModelSync.d.ts.map +1 -0
- package/cjs/model/ModelSync.js +215 -0
- package/cjs/model/ModelSync.js.map +1 -0
- package/cjs/model/RelationshipWithMany.d.ts +29 -0
- package/cjs/model/RelationshipWithMany.d.ts.map +1 -0
- package/cjs/model/RelationshipWithMany.js +52 -0
- package/cjs/model/RelationshipWithMany.js.map +1 -0
- package/cjs/model/base-model.d.ts +148 -0
- package/cjs/model/base-model.d.ts.map +1 -0
- package/cjs/model/base-model.js +212 -0
- package/cjs/model/base-model.js.map +1 -0
- package/cjs/model/crud-model.d.ts +117 -0
- package/cjs/model/crud-model.d.ts.map +1 -0
- package/cjs/model/crud-model.js +346 -0
- package/cjs/model/crud-model.js.map +1 -0
- package/cjs/model/index.d.ts +11 -0
- package/cjs/model/index.d.ts.map +1 -0
- package/cjs/model/joinable.d.ts +86 -0
- package/cjs/model/joinable.d.ts.map +1 -0
- package/cjs/model/joinable.js +155 -0
- package/cjs/model/joinable.js.map +1 -0
- package/cjs/model/master-mind.d.ts +44 -0
- package/cjs/model/master-mind.d.ts.map +1 -0
- package/cjs/model/master-mind.js +129 -0
- package/cjs/model/master-mind.js.map +1 -0
- package/cjs/model/migration-office.d.ts +33 -0
- package/cjs/model/migration-office.d.ts.map +1 -0
- package/cjs/model/migration-office.js +55 -0
- package/cjs/model/migration-office.js.map +1 -0
- package/cjs/model/model-events.d.ts +57 -0
- package/cjs/model/model-events.d.ts.map +1 -0
- package/cjs/model/model-events.js +102 -0
- package/cjs/model/model-events.js.map +1 -0
- package/cjs/model/model.d.ts +323 -0
- package/cjs/model/model.d.ts.map +1 -0
- package/cjs/model/model.js +843 -0
- package/cjs/model/model.js.map +1 -0
- package/cjs/model/relationships.d.ts +69 -0
- package/cjs/model/relationships.d.ts.map +1 -0
- package/cjs/model/relationships.js +144 -0
- package/cjs/model/relationships.js.map +1 -0
- package/cjs/model/types.d.ts +113 -0
- package/cjs/model/types.d.ts.map +1 -0
- package/cjs/model/types.js +11 -0
- package/cjs/model/types.js.map +1 -0
- package/cjs/models/Log.d.ts +12 -0
- package/cjs/models/Log.d.ts.map +1 -0
- package/cjs/models/Log.js +16 -0
- package/cjs/models/Log.js.map +1 -0
- package/cjs/models/index.d.ts +2 -0
- package/cjs/models/index.d.ts.map +1 -0
- package/cjs/query/index.d.ts +2 -0
- package/cjs/query/index.d.ts.map +1 -0
- package/cjs/query/query.d.ts +228 -0
- package/cjs/query/query.d.ts.map +1 -0
- package/cjs/query/query.js +675 -0
- package/cjs/query/query.js.map +1 -0
- package/cjs/query/types.d.ts +56 -0
- package/cjs/query/types.d.ts.map +1 -0
- package/cjs/types.d.ts +46 -0
- package/cjs/types.d.ts.map +1 -0
- package/cjs/utils/DatabaseLog.d.ts +25 -0
- package/cjs/utils/DatabaseLog.d.ts.map +1 -0
- package/cjs/utils/DatabaseLog.js +41 -0
- package/cjs/utils/DatabaseLog.js.map +1 -0
- package/cjs/utils/connectToDatabase.d.ts +3 -0
- package/cjs/utils/connectToDatabase.d.ts.map +1 -0
- package/cjs/utils/connectToDatabase.js +3 -0
- package/cjs/utils/connectToDatabase.js.map +1 -0
- package/cjs/utils/dropAllDatabaseIndexes.d.ts +2 -0
- package/cjs/utils/dropAllDatabaseIndexes.d.ts.map +1 -0
- package/cjs/utils/dropAllDatabaseIndexes.js +10 -0
- package/cjs/utils/dropAllDatabaseIndexes.js.map +1 -0
- package/cjs/utils/index.d.ts +6 -0
- package/cjs/utils/index.d.ts.map +1 -0
- package/cjs/utils/joinable-proxy.d.ts +3 -0
- package/cjs/utils/joinable-proxy.d.ts.map +1 -0
- package/cjs/utils/joinable-proxy.js +14 -0
- package/cjs/utils/joinable-proxy.js.map +1 -0
- package/cjs/utils/listDatabaseIndexes.d.ts +4 -0
- package/cjs/utils/listDatabaseIndexes.d.ts.map +1 -0
- package/cjs/utils/listDatabaseIndexes.js +101 -0
- package/cjs/utils/listDatabaseIndexes.js.map +1 -0
- package/cjs/utils/onceConnected.d.ts +2 -0
- package/cjs/utils/onceConnected.d.ts.map +1 -0
- package/cjs/utils/onceConnected.js +8 -0
- package/cjs/utils/onceConnected.js.map +1 -0
- package/esm/aggregate/DeselectPipeline.d.ts +10 -0
- package/esm/aggregate/DeselectPipeline.d.ts.map +1 -0
- package/esm/aggregate/DeselectPipeline.js +17 -0
- package/esm/aggregate/DeselectPipeline.js.map +1 -0
- package/esm/aggregate/GeoNearPipeline.d.ts +34 -0
- package/esm/aggregate/GeoNearPipeline.d.ts.map +1 -0
- package/esm/aggregate/GeoNearPipeline.js +44 -0
- package/esm/aggregate/GeoNearPipeline.js.map +1 -0
- package/esm/aggregate/GroupByPipeline.d.ts +12 -0
- package/esm/aggregate/GroupByPipeline.d.ts.map +1 -0
- package/esm/aggregate/GroupByPipeline.js +28 -0
- package/esm/aggregate/GroupByPipeline.js.map +1 -0
- package/esm/aggregate/LimitPipeline.d.ts +10 -0
- package/esm/aggregate/LimitPipeline.d.ts.map +1 -0
- package/esm/aggregate/LimitPipeline.js +14 -0
- package/esm/aggregate/LimitPipeline.js.map +1 -0
- package/esm/aggregate/LookupPipeline.d.ts +19 -0
- package/esm/aggregate/LookupPipeline.d.ts.map +1 -0
- package/esm/aggregate/LookupPipeline.js +19 -0
- package/esm/aggregate/LookupPipeline.js.map +1 -0
- package/esm/aggregate/OrWherePipeline.d.ts +23 -0
- package/esm/aggregate/OrWherePipeline.d.ts.map +1 -0
- package/esm/aggregate/OrWherePipeline.js +42 -0
- package/esm/aggregate/OrWherePipeline.js.map +1 -0
- package/esm/aggregate/SelectPipeline.d.ts +10 -0
- package/esm/aggregate/SelectPipeline.d.ts.map +1 -0
- package/esm/aggregate/SelectPipeline.js +26 -0
- package/esm/aggregate/SelectPipeline.js.map +1 -0
- package/esm/aggregate/SkipPipeline.d.ts +10 -0
- package/esm/aggregate/SkipPipeline.d.ts.map +1 -0
- package/esm/aggregate/SkipPipeline.js +14 -0
- package/esm/aggregate/SkipPipeline.js.map +1 -0
- package/esm/aggregate/SortByPipeline.d.ts +10 -0
- package/esm/aggregate/SortByPipeline.d.ts.map +1 -0
- package/esm/aggregate/SortByPipeline.js +18 -0
- package/esm/aggregate/SortByPipeline.js.map +1 -0
- package/esm/aggregate/SortPipeline.d.ts +11 -0
- package/esm/aggregate/SortPipeline.d.ts.map +1 -0
- package/esm/aggregate/SortPipeline.js +18 -0
- package/esm/aggregate/SortPipeline.js.map +1 -0
- package/esm/aggregate/SortRandomPipeline.d.ts +10 -0
- package/esm/aggregate/SortRandomPipeline.d.ts.map +1 -0
- package/esm/aggregate/SortRandomPipeline.js +16 -0
- package/esm/aggregate/SortRandomPipeline.js.map +1 -0
- package/esm/aggregate/UnwindPipeline.d.ts +14 -0
- package/esm/aggregate/UnwindPipeline.d.ts.map +1 -0
- package/esm/aggregate/UnwindPipeline.js +19 -0
- package/esm/aggregate/UnwindPipeline.js.map +1 -0
- package/esm/aggregate/WhereExpression.d.ts +17 -0
- package/esm/aggregate/WhereExpression.d.ts.map +1 -0
- package/esm/aggregate/WhereExpression.js +149 -0
- package/esm/aggregate/WhereExpression.js.map +1 -0
- package/esm/aggregate/WhereExpressionPipeline.d.ts +10 -0
- package/esm/aggregate/WhereExpressionPipeline.d.ts.map +1 -0
- package/esm/aggregate/WhereExpressionPipeline.js +15 -0
- package/esm/aggregate/WhereExpressionPipeline.js.map +1 -0
- package/esm/aggregate/WherePipeline.d.ts +13 -0
- package/esm/aggregate/WherePipeline.d.ts.map +1 -0
- package/esm/aggregate/WherePipeline.js +12 -0
- package/esm/aggregate/WherePipeline.js.map +1 -0
- package/esm/aggregate/aggregate.d.ts +346 -0
- package/esm/aggregate/aggregate.d.ts.map +1 -0
- package/esm/aggregate/aggregate.js +656 -0
- package/esm/aggregate/aggregate.js.map +1 -0
- package/esm/aggregate/expressions.d.ts +361 -0
- package/esm/aggregate/expressions.d.ts.map +1 -0
- package/esm/aggregate/expressions.js +536 -0
- package/esm/aggregate/expressions.js.map +1 -0
- package/esm/aggregate/index.d.ts +21 -0
- package/esm/aggregate/index.d.ts.map +1 -0
- package/esm/aggregate/parsePipelines.d.ts +5 -0
- package/esm/aggregate/parsePipelines.d.ts.map +1 -0
- package/esm/aggregate/parsePipelines.js +6 -0
- package/esm/aggregate/parsePipelines.js.map +1 -0
- package/esm/aggregate/pipeline.d.ts +31 -0
- package/esm/aggregate/pipeline.d.ts.map +1 -0
- package/esm/aggregate/pipeline.js +42 -0
- package/esm/aggregate/pipeline.js.map +1 -0
- package/esm/aggregate/types.d.ts +8 -0
- package/esm/aggregate/types.d.ts.map +1 -0
- package/esm/aggregate/types.js +31 -0
- package/esm/aggregate/types.js.map +1 -0
- package/esm/blueprint/blueprint.d.ts +154 -0
- package/esm/blueprint/blueprint.d.ts.map +1 -0
- package/esm/blueprint/blueprint.js +328 -0
- package/esm/blueprint/blueprint.js.map +1 -0
- package/esm/blueprint/index.d.ts +3 -0
- package/esm/blueprint/index.d.ts.map +1 -0
- package/esm/blueprint/model-blueprint.d.ts +15 -0
- package/esm/blueprint/model-blueprint.d.ts.map +1 -0
- package/esm/blueprint/model-blueprint.js +16 -0
- package/esm/blueprint/model-blueprint.js.map +1 -0
- package/esm/casts/arrayOf.d.ts +5 -0
- package/esm/casts/arrayOf.d.ts.map +1 -0
- package/esm/casts/arrayOf.js +18 -0
- package/esm/casts/arrayOf.js.map +1 -0
- package/esm/casts/cast-email.d.ts +2 -0
- package/esm/casts/cast-email.d.ts.map +1 -0
- package/esm/casts/cast-email.js +5 -0
- package/esm/casts/cast-email.js.map +1 -0
- package/esm/casts/castModel.d.ts +3 -0
- package/esm/casts/castModel.d.ts.map +1 -0
- package/esm/casts/castModel.js +49 -0
- package/esm/casts/castModel.js.map +1 -0
- package/esm/casts/expiresAfter.d.ts +3 -0
- package/esm/casts/expiresAfter.d.ts.map +1 -0
- package/esm/casts/expiresAfter.js +5 -0
- package/esm/casts/expiresAfter.js.map +1 -0
- package/esm/casts/index.d.ts +9 -0
- package/esm/casts/index.d.ts.map +1 -0
- package/esm/casts/oneOf.d.ts +3 -0
- package/esm/casts/oneOf.d.ts.map +1 -0
- package/esm/casts/oneOf.js +22 -0
- package/esm/casts/oneOf.js.map +1 -0
- package/esm/casts/random-string.d.ts +2 -0
- package/esm/casts/random-string.d.ts.map +1 -0
- package/esm/casts/random-string.js +5 -0
- package/esm/casts/random-string.js.map +1 -0
- package/esm/casts/randomInteger.d.ts +2 -0
- package/esm/casts/randomInteger.d.ts.map +1 -0
- package/esm/casts/randomInteger.js +7 -0
- package/esm/casts/randomInteger.js.map +1 -0
- package/esm/casts/shapedArray.d.ts +26 -0
- package/esm/casts/shapedArray.d.ts.map +1 -0
- package/esm/casts/shapedArray.js +100 -0
- package/esm/casts/shapedArray.js.map +1 -0
- package/esm/config.d.ts +4 -0
- package/esm/config.d.ts.map +1 -0
- package/esm/config.js +10 -0
- package/esm/config.js.map +1 -0
- package/esm/connection.d.ts +44 -0
- package/esm/connection.d.ts.map +1 -0
- package/esm/connection.js +98 -0
- package/esm/connection.js.map +1 -0
- package/esm/console/db-indexes-command.d.ts +3 -0
- package/esm/console/db-indexes-command.d.ts.map +1 -0
- package/esm/console/db-indexes-command.js +18 -0
- package/esm/console/db-indexes-command.js.map +1 -0
- package/esm/console/index.d.ts +4 -0
- package/esm/console/index.d.ts.map +1 -0
- package/esm/console/migrate-command.d.ts +3 -0
- package/esm/console/migrate-command.d.ts.map +1 -0
- package/esm/console/migrate-command.js +14 -0
- package/esm/console/migrate-command.js.map +1 -0
- package/esm/console/register-blueprint-command.d.ts +4 -0
- package/esm/console/register-blueprint-command.d.ts.map +1 -0
- package/esm/console/register-blueprint-command.js +27 -0
- package/esm/console/register-blueprint-command.js.map +1 -0
- package/esm/database.d.ts +49 -0
- package/esm/database.d.ts.map +1 -0
- package/esm/database.js +85 -0
- package/esm/database.js.map +1 -0
- package/esm/index.d.ts +14 -0
- package/esm/index.d.ts.map +1 -0
- package/esm/index.js +1 -0
- package/esm/index.js.map +1 -0
- package/esm/migrate.d.ts +8 -0
- package/esm/migrate.d.ts.map +1 -0
- package/esm/migrate.js +89 -0
- package/esm/migrate.js.map +1 -0
- package/esm/model/ModelAggregate.d.ts +71 -0
- package/esm/model/ModelAggregate.d.ts.map +1 -0
- package/esm/model/ModelAggregate.js +147 -0
- package/esm/model/ModelAggregate.js.map +1 -0
- package/esm/model/ModelSync.d.ts +74 -0
- package/esm/model/ModelSync.d.ts.map +1 -0
- package/esm/model/ModelSync.js +215 -0
- package/esm/model/ModelSync.js.map +1 -0
- package/esm/model/RelationshipWithMany.d.ts +29 -0
- package/esm/model/RelationshipWithMany.d.ts.map +1 -0
- package/esm/model/RelationshipWithMany.js +52 -0
- package/esm/model/RelationshipWithMany.js.map +1 -0
- package/esm/model/base-model.d.ts +148 -0
- package/esm/model/base-model.d.ts.map +1 -0
- package/esm/model/base-model.js +212 -0
- package/esm/model/base-model.js.map +1 -0
- package/esm/model/crud-model.d.ts +117 -0
- package/esm/model/crud-model.d.ts.map +1 -0
- package/esm/model/crud-model.js +346 -0
- package/esm/model/crud-model.js.map +1 -0
- package/esm/model/index.d.ts +11 -0
- package/esm/model/index.d.ts.map +1 -0
- package/esm/model/joinable.d.ts +86 -0
- package/esm/model/joinable.d.ts.map +1 -0
- package/esm/model/joinable.js +155 -0
- package/esm/model/joinable.js.map +1 -0
- package/esm/model/master-mind.d.ts +44 -0
- package/esm/model/master-mind.d.ts.map +1 -0
- package/esm/model/master-mind.js +129 -0
- package/esm/model/master-mind.js.map +1 -0
- package/esm/model/migration-office.d.ts +33 -0
- package/esm/model/migration-office.d.ts.map +1 -0
- package/esm/model/migration-office.js +55 -0
- package/esm/model/migration-office.js.map +1 -0
- package/esm/model/model-events.d.ts +57 -0
- package/esm/model/model-events.d.ts.map +1 -0
- package/esm/model/model-events.js +102 -0
- package/esm/model/model-events.js.map +1 -0
- package/esm/model/model.d.ts +323 -0
- package/esm/model/model.d.ts.map +1 -0
- package/esm/model/model.js +843 -0
- package/esm/model/model.js.map +1 -0
- package/esm/model/relationships.d.ts +69 -0
- package/esm/model/relationships.d.ts.map +1 -0
- package/esm/model/relationships.js +144 -0
- package/esm/model/relationships.js.map +1 -0
- package/esm/model/types.d.ts +113 -0
- package/esm/model/types.d.ts.map +1 -0
- package/esm/model/types.js +11 -0
- package/esm/model/types.js.map +1 -0
- package/esm/models/Log.d.ts +12 -0
- package/esm/models/Log.d.ts.map +1 -0
- package/esm/models/Log.js +16 -0
- package/esm/models/Log.js.map +1 -0
- package/esm/models/index.d.ts +2 -0
- package/esm/models/index.d.ts.map +1 -0
- package/esm/query/index.d.ts +2 -0
- package/esm/query/index.d.ts.map +1 -0
- package/esm/query/query.d.ts +228 -0
- package/esm/query/query.d.ts.map +1 -0
- package/esm/query/query.js +675 -0
- package/esm/query/query.js.map +1 -0
- package/esm/query/types.d.ts +56 -0
- package/esm/query/types.d.ts.map +1 -0
- package/esm/types.d.ts +46 -0
- package/esm/types.d.ts.map +1 -0
- package/esm/utils/DatabaseLog.d.ts +25 -0
- package/esm/utils/DatabaseLog.d.ts.map +1 -0
- package/esm/utils/DatabaseLog.js +41 -0
- package/esm/utils/DatabaseLog.js.map +1 -0
- package/esm/utils/connectToDatabase.d.ts +3 -0
- package/esm/utils/connectToDatabase.d.ts.map +1 -0
- package/esm/utils/connectToDatabase.js +3 -0
- package/esm/utils/connectToDatabase.js.map +1 -0
- package/esm/utils/dropAllDatabaseIndexes.d.ts +2 -0
- package/esm/utils/dropAllDatabaseIndexes.d.ts.map +1 -0
- package/esm/utils/dropAllDatabaseIndexes.js +10 -0
- package/esm/utils/dropAllDatabaseIndexes.js.map +1 -0
- package/esm/utils/index.d.ts +6 -0
- package/esm/utils/index.d.ts.map +1 -0
- package/esm/utils/joinable-proxy.d.ts +3 -0
- package/esm/utils/joinable-proxy.d.ts.map +1 -0
- package/esm/utils/joinable-proxy.js +14 -0
- package/esm/utils/joinable-proxy.js.map +1 -0
- package/esm/utils/listDatabaseIndexes.d.ts +4 -0
- package/esm/utils/listDatabaseIndexes.d.ts.map +1 -0
- package/esm/utils/listDatabaseIndexes.js +101 -0
- package/esm/utils/listDatabaseIndexes.js.map +1 -0
- package/esm/utils/onceConnected.d.ts +2 -0
- package/esm/utils/onceConnected.d.ts.map +1 -0
- package/esm/utils/onceConnected.js +8 -0
- package/esm/utils/onceConnected.js.map +1 -0
- package/package.json +61 -0
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { BaseModel } from "./base-model";
|
|
2
|
+
import { ChildModel, ChunkCallback, Document, Filter, FindOrCreateOptions, PaginationListing, PrimaryIdType } from "./types";
|
|
3
|
+
export declare abstract class CrudModel extends BaseModel {
|
|
4
|
+
/**
|
|
5
|
+
* Create a new record in the database for the current model (child class of this one)
|
|
6
|
+
* and return a new instance of it with the created data and the new generated id
|
|
7
|
+
*/
|
|
8
|
+
static create<T>(this: ChildModel<T>, data: Document): Promise<T>;
|
|
9
|
+
/**
|
|
10
|
+
* Called before creating a new record
|
|
11
|
+
*/
|
|
12
|
+
protected beforeCreating<T>(this: ChildModel<T>, _data: Document): Promise<void>;
|
|
13
|
+
/**
|
|
14
|
+
* Called after creating a new record
|
|
15
|
+
*/
|
|
16
|
+
protected onCreate<T>(this: ChildModel<T>): Promise<void>;
|
|
17
|
+
/**
|
|
18
|
+
* Update model by the given id
|
|
19
|
+
*/
|
|
20
|
+
static update<T>(this: ChildModel<T>, id: PrimaryIdType, data: Document): Promise<T | null>;
|
|
21
|
+
/**
|
|
22
|
+
* Replace the entire document for the given document id with the given new data
|
|
23
|
+
*/
|
|
24
|
+
static replace<T>(this: ChildModel<T>, id: PrimaryIdType, data: Document): Promise<T | null>;
|
|
25
|
+
/**
|
|
26
|
+
* Restore the document from trash
|
|
27
|
+
*/
|
|
28
|
+
static restore<T>(this: ChildModel<T>, id: PrimaryIdType): Promise<T | null>;
|
|
29
|
+
/**
|
|
30
|
+
* Restore all documents from trash or by the given filter
|
|
31
|
+
*/
|
|
32
|
+
static restoreAll<T>(this: ChildModel<T>, filter?: Filter): Promise<any>;
|
|
33
|
+
/**
|
|
34
|
+
* Get deleted document by id
|
|
35
|
+
*/
|
|
36
|
+
static getDeleted<T>(this: ChildModel<T>, id: PrimaryIdType): Promise<T | null>;
|
|
37
|
+
/**
|
|
38
|
+
* Get all deleted documents
|
|
39
|
+
*/
|
|
40
|
+
static getAllDeleted<T>(this: ChildModel<T>, filter?: Filter): Promise<any>;
|
|
41
|
+
/**
|
|
42
|
+
* Find and update the document for the given filter with the given data or create a new document/record
|
|
43
|
+
* if filter has no matching
|
|
44
|
+
*/
|
|
45
|
+
static upsert<T>(this: ChildModel<T>, filter: Filter, data: Document): Promise<T>;
|
|
46
|
+
/**
|
|
47
|
+
* Find document by id
|
|
48
|
+
*/
|
|
49
|
+
static find<T>(this: ChildModel<T>, id: PrimaryIdType): Promise<T>;
|
|
50
|
+
/**
|
|
51
|
+
* Find document by the given column and value
|
|
52
|
+
*/
|
|
53
|
+
static findBy<T>(this: ChildModel<T>, column: string, value: any): Promise<T | null>;
|
|
54
|
+
/**
|
|
55
|
+
* Create an explain plan for the given filter
|
|
56
|
+
*/
|
|
57
|
+
static explain<T>(this: ChildModel<T>, filter?: Filter): Promise<any>;
|
|
58
|
+
/**
|
|
59
|
+
* List multiple documents based on the given filter
|
|
60
|
+
*/
|
|
61
|
+
static list<T>(this: ChildModel<T>, filter?: Filter): Promise<T[]>;
|
|
62
|
+
/**
|
|
63
|
+
* Paginate records based on the given filter
|
|
64
|
+
*/
|
|
65
|
+
static paginate<T>(this: ChildModel<T>, filter: Filter, page?: number, limit?: number): Promise<PaginationListing<T>>;
|
|
66
|
+
/**
|
|
67
|
+
* Find or create a new document based on the given filter and data
|
|
68
|
+
* If the document is not found, it will be created
|
|
69
|
+
* otherwise, just return the found document
|
|
70
|
+
*/
|
|
71
|
+
static findOrCreate<T>(this: ChildModel<T>, filter: Filter, data: Document, { merge }?: FindOrCreateOptions): Promise<T>;
|
|
72
|
+
/**
|
|
73
|
+
* Update or create a new document based on the given filter and data
|
|
74
|
+
*/
|
|
75
|
+
static updateOrCreate<T>(this: ChildModel<T>, filter: Filter, data: Document): Promise<T>;
|
|
76
|
+
/**
|
|
77
|
+
* Count total documents based on the given filter
|
|
78
|
+
*/
|
|
79
|
+
static count(filter?: Filter): Promise<any>;
|
|
80
|
+
/**
|
|
81
|
+
* Get first model for the given filter
|
|
82
|
+
*/
|
|
83
|
+
static first<T>(this: ChildModel<T>, filter?: Filter): Promise<T | null>;
|
|
84
|
+
/**
|
|
85
|
+
* Get last model for the given filter
|
|
86
|
+
*/
|
|
87
|
+
static last<T>(this: ChildModel<T>, filter?: Filter): Promise<T | null>;
|
|
88
|
+
/**
|
|
89
|
+
* Get latest documents
|
|
90
|
+
*/
|
|
91
|
+
static latest<T>(this: ChildModel<T>, filter?: Filter): Promise<T[]>;
|
|
92
|
+
/**
|
|
93
|
+
* Delete single document if the given filter is an ObjectId of mongodb
|
|
94
|
+
* Otherwise, delete multiple documents based on the given filter object
|
|
95
|
+
*/
|
|
96
|
+
static delete<T>(this: ChildModel<T>, filter?: PrimaryIdType | Filter): Promise<number>;
|
|
97
|
+
/**
|
|
98
|
+
* Chunk the documents
|
|
99
|
+
*/
|
|
100
|
+
static chunk<T>(this: ChildModel<T>, limit: number, callback: ChunkCallback<T>): Promise<void>;
|
|
101
|
+
static chunk<T>(this: ChildModel<T>, filter: Filter & {
|
|
102
|
+
limit: number;
|
|
103
|
+
}, callback: ChunkCallback<T>): Promise<void>;
|
|
104
|
+
/**
|
|
105
|
+
* Check if document exists for the given filter
|
|
106
|
+
*/
|
|
107
|
+
static exists<T>(this: ChildModel<T>, filter?: Filter): Promise<boolean>;
|
|
108
|
+
/**
|
|
109
|
+
* Get distinct values for the given column
|
|
110
|
+
*/
|
|
111
|
+
static distinct<T>(this: ChildModel<T>, column: string, filter?: Filter): Promise<any[]>;
|
|
112
|
+
/**
|
|
113
|
+
* Prepare filters
|
|
114
|
+
*/
|
|
115
|
+
protected static prepareFilters(filters?: Filter): Promise<Filter>;
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=crud-model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crud-model.d.ts","sourceRoot":"","sources":["../../src/model/crud-model.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,346 @@
|
|
|
1
|
+
'use strict';var mongodb=require('mongodb'),baseModel=require('./base-model.js'),types=require('./types.js');class CrudModel extends baseModel.BaseModel {
|
|
2
|
+
/**
|
|
3
|
+
* Create a new record in the database for the current model (child class of this one)
|
|
4
|
+
* and return a new instance of it with the created data and the new generated id
|
|
5
|
+
*/
|
|
6
|
+
static async create(data) {
|
|
7
|
+
const model = this.self(data); // get new instance of model
|
|
8
|
+
// save the model, and generate the proper columns needed
|
|
9
|
+
await model.beforeCreating(data);
|
|
10
|
+
await model.save();
|
|
11
|
+
await model.onCreate();
|
|
12
|
+
return model;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Called before creating a new record
|
|
16
|
+
*/
|
|
17
|
+
async beforeCreating(_data) {
|
|
18
|
+
//
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Called after creating a new record
|
|
22
|
+
*/
|
|
23
|
+
async onCreate() {
|
|
24
|
+
//
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Update model by the given id
|
|
28
|
+
*/
|
|
29
|
+
static async update(id, data) {
|
|
30
|
+
const model = (await this.find(id));
|
|
31
|
+
// execute the update operation
|
|
32
|
+
if (!model)
|
|
33
|
+
return null;
|
|
34
|
+
await model.save(data);
|
|
35
|
+
return model;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Replace the entire document for the given document id with the given new data
|
|
39
|
+
*/
|
|
40
|
+
static async replace(id, data) {
|
|
41
|
+
const model = (await this.find(id));
|
|
42
|
+
if (!model)
|
|
43
|
+
return null;
|
|
44
|
+
model.replaceWith(data);
|
|
45
|
+
await model.save();
|
|
46
|
+
return model;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Restore the document from trash
|
|
50
|
+
*/
|
|
51
|
+
static async restore(id) {
|
|
52
|
+
const deleteStrategy = this.deleteStrategy;
|
|
53
|
+
if (deleteStrategy === types.ModelDeleteStrategy.softDelete) {
|
|
54
|
+
const model = await this.query.first(this.collection, {
|
|
55
|
+
id,
|
|
56
|
+
});
|
|
57
|
+
if (!model)
|
|
58
|
+
return null;
|
|
59
|
+
model.unset("deletedAt");
|
|
60
|
+
await model.save();
|
|
61
|
+
return model;
|
|
62
|
+
}
|
|
63
|
+
// retrieve the document from trash collection
|
|
64
|
+
const result = await this.query.first(this.collection + "Trash", await this.prepareFilters({
|
|
65
|
+
[this.primaryIdColumn]: id,
|
|
66
|
+
}));
|
|
67
|
+
if (!result)
|
|
68
|
+
return null;
|
|
69
|
+
const document = result.document;
|
|
70
|
+
// otherwise, create a new model with it
|
|
71
|
+
document.restoredAt = new Date();
|
|
72
|
+
const model = this.self(document);
|
|
73
|
+
model.unset("deletedAt");
|
|
74
|
+
model.markAsRestored();
|
|
75
|
+
await model.save(); // save again in the same collection
|
|
76
|
+
return model;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Restore all documents from trash or by the given filter
|
|
80
|
+
*/
|
|
81
|
+
static async restoreAll(filter) {
|
|
82
|
+
const deleteStrategy = this.deleteStrategy;
|
|
83
|
+
if (deleteStrategy === types.ModelDeleteStrategy.softDelete) {
|
|
84
|
+
const models = await this.query.list(this.collection, filter);
|
|
85
|
+
for (const model of models) {
|
|
86
|
+
model.unset("deletedAt");
|
|
87
|
+
if (model.id) {
|
|
88
|
+
model.set("id", Number(model.id));
|
|
89
|
+
}
|
|
90
|
+
await model.save();
|
|
91
|
+
}
|
|
92
|
+
return models;
|
|
93
|
+
}
|
|
94
|
+
if (filter) {
|
|
95
|
+
for (const key in filter) {
|
|
96
|
+
filter[`document.` + key] = filter[key];
|
|
97
|
+
delete filter[key];
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
const documents = await this.query.list(this.collection + "Trash", filter);
|
|
101
|
+
const models = [];
|
|
102
|
+
for (const document of documents) {
|
|
103
|
+
const model = this.self(document.document);
|
|
104
|
+
if (model.id) {
|
|
105
|
+
model.set("id", Number(model.id));
|
|
106
|
+
}
|
|
107
|
+
model.unset("deletedAt");
|
|
108
|
+
model.markAsRestored();
|
|
109
|
+
await model.save();
|
|
110
|
+
models.push(model);
|
|
111
|
+
}
|
|
112
|
+
return models;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Get deleted document by id
|
|
116
|
+
*/
|
|
117
|
+
static async getDeleted(id) {
|
|
118
|
+
const deleteStrategy = this.deleteStrategy;
|
|
119
|
+
if (deleteStrategy === types.ModelDeleteStrategy.softDelete) {
|
|
120
|
+
const model = await this.query.first(this.collection, {
|
|
121
|
+
id,
|
|
122
|
+
});
|
|
123
|
+
if (!model)
|
|
124
|
+
return null;
|
|
125
|
+
return model;
|
|
126
|
+
}
|
|
127
|
+
const result = await this.query.first(this.collection + "Trash", await this.prepareFilters({
|
|
128
|
+
[this.primaryIdColumn]: id,
|
|
129
|
+
}));
|
|
130
|
+
if (!result)
|
|
131
|
+
return null;
|
|
132
|
+
const document = result.document;
|
|
133
|
+
// otherwise, create a new model with it
|
|
134
|
+
const model = this.self(document);
|
|
135
|
+
return model;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Get all deleted documents
|
|
139
|
+
*/
|
|
140
|
+
static async getAllDeleted(filter) {
|
|
141
|
+
const deleteStrategy = this.deleteStrategy;
|
|
142
|
+
if (deleteStrategy === types.ModelDeleteStrategy.softDelete) {
|
|
143
|
+
return await this.query.list(this.collection, filter);
|
|
144
|
+
}
|
|
145
|
+
if (filter) {
|
|
146
|
+
for (const key in filter) {
|
|
147
|
+
filter[`document.` + key] = filter[key];
|
|
148
|
+
delete filter[key];
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
const documents = await this.query.list(this.collection + "Trash", filter);
|
|
152
|
+
const models = [];
|
|
153
|
+
for (const document of documents) {
|
|
154
|
+
const model = this.self(document.document);
|
|
155
|
+
models.push(model);
|
|
156
|
+
}
|
|
157
|
+
return models;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Find and update the document for the given filter with the given data or create a new document/record
|
|
161
|
+
* if filter has no matching
|
|
162
|
+
*/
|
|
163
|
+
static async upsert(filter, data) {
|
|
164
|
+
filter = await this.prepareFilters(filter);
|
|
165
|
+
let model = (await this.first(filter));
|
|
166
|
+
if (!model) {
|
|
167
|
+
model = this.self(data);
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
model.merge(data);
|
|
171
|
+
}
|
|
172
|
+
await model.save();
|
|
173
|
+
return model;
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Find document by id
|
|
177
|
+
*/
|
|
178
|
+
static async find(id) {
|
|
179
|
+
return this.findBy(this.primaryIdColumn, Number(id));
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Find document by the given column and value
|
|
183
|
+
*/
|
|
184
|
+
static async findBy(column, value) {
|
|
185
|
+
const result = await this.query.first(this.collection, await this.prepareFilters({
|
|
186
|
+
[column]: value,
|
|
187
|
+
}));
|
|
188
|
+
return result ? this.self(result) : null;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Create an explain plan for the given filter
|
|
192
|
+
*/
|
|
193
|
+
static async explain(filter = {}) {
|
|
194
|
+
return await this.query.explain(this.collection, await this.prepareFilters(filter));
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* List multiple documents based on the given filter
|
|
198
|
+
*/
|
|
199
|
+
static async list(filter = {}) {
|
|
200
|
+
const documents = await this.query.list(this.collection, await this.prepareFilters(filter));
|
|
201
|
+
return documents.map(document => this.self(document));
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Paginate records based on the given filter
|
|
205
|
+
*/
|
|
206
|
+
static async paginate(filter, page = 1, limit = 15) {
|
|
207
|
+
filter = await this.prepareFilters(filter);
|
|
208
|
+
const documents = await this.query.list(this.collection, filter, query => {
|
|
209
|
+
query.skip((page - 1) * limit).limit(limit);
|
|
210
|
+
});
|
|
211
|
+
const totalDocumentsOfFilter = await this.query.count(this.collection, filter);
|
|
212
|
+
const result = {
|
|
213
|
+
documents: documents.map(document => this.self(document)),
|
|
214
|
+
paginationInfo: {
|
|
215
|
+
limit,
|
|
216
|
+
page,
|
|
217
|
+
result: documents.length,
|
|
218
|
+
total: totalDocumentsOfFilter,
|
|
219
|
+
pages: Math.ceil(totalDocumentsOfFilter / limit),
|
|
220
|
+
},
|
|
221
|
+
};
|
|
222
|
+
return result;
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Find or create a new document based on the given filter and data
|
|
226
|
+
* If the document is not found, it will be created
|
|
227
|
+
* otherwise, just return the found document
|
|
228
|
+
*/
|
|
229
|
+
static async findOrCreate(filter, data, { merge = true } = {}) {
|
|
230
|
+
filter = await this.prepareFilters(filter);
|
|
231
|
+
let model = (await this.first(filter));
|
|
232
|
+
if (!model) {
|
|
233
|
+
model = this.self({
|
|
234
|
+
...(merge ? filter : {}),
|
|
235
|
+
...data,
|
|
236
|
+
});
|
|
237
|
+
await model.save();
|
|
238
|
+
}
|
|
239
|
+
return model;
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Update or create a new document based on the given filter and data
|
|
243
|
+
*/
|
|
244
|
+
static async updateOrCreate(filter, data) {
|
|
245
|
+
filter = await this.prepareFilters(filter);
|
|
246
|
+
let model = (await this.first(filter));
|
|
247
|
+
if (!model) {
|
|
248
|
+
model = this.self(data);
|
|
249
|
+
}
|
|
250
|
+
else {
|
|
251
|
+
model.merge(data);
|
|
252
|
+
}
|
|
253
|
+
await model.save();
|
|
254
|
+
return model;
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Count total documents based on the given filter
|
|
258
|
+
*/
|
|
259
|
+
static async count(filter = {}) {
|
|
260
|
+
return await this.query.count(this.collection, await this.prepareFilters(filter));
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Get first model for the given filter
|
|
264
|
+
*/
|
|
265
|
+
static async first(filter = {}) {
|
|
266
|
+
const result = await this.query.first(this.collection, await this.prepareFilters(filter));
|
|
267
|
+
return result ? this.self(result) : null;
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Get last model for the given filter
|
|
271
|
+
*/
|
|
272
|
+
static async last(filter = {}) {
|
|
273
|
+
const result = await this.query.last(this.collection, await this.prepareFilters(filter));
|
|
274
|
+
return result ? this.self(result) : null;
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* Get latest documents
|
|
278
|
+
*/
|
|
279
|
+
static async latest(filter = {}) {
|
|
280
|
+
const documents = await this.query.latest(this.collection, await this.prepareFilters(filter));
|
|
281
|
+
return documents.map(document => this.self(document));
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Delete single document if the given filter is an ObjectId of mongodb
|
|
285
|
+
* Otherwise, delete multiple documents based on the given filter object
|
|
286
|
+
*/
|
|
287
|
+
static async delete(filter = {}) {
|
|
288
|
+
if (filter instanceof mongodb.ObjectId ||
|
|
289
|
+
typeof filter === "string" ||
|
|
290
|
+
typeof filter === "number") {
|
|
291
|
+
return (await this.query.deleteOne(this.collection, await this.prepareFilters({
|
|
292
|
+
[this.primaryIdColumn]: filter,
|
|
293
|
+
})))
|
|
294
|
+
? 1
|
|
295
|
+
: 0;
|
|
296
|
+
}
|
|
297
|
+
filter = await this.prepareFilters(filter);
|
|
298
|
+
return await this.query.delete(this.collection, filter);
|
|
299
|
+
}
|
|
300
|
+
static async chunk(limitOrFilter, callback) {
|
|
301
|
+
let limit = limitOrFilter;
|
|
302
|
+
let filter = {};
|
|
303
|
+
if (typeof limitOrFilter === "object") {
|
|
304
|
+
limit = limitOrFilter.limit;
|
|
305
|
+
delete limitOrFilter.limit;
|
|
306
|
+
filter = limitOrFilter;
|
|
307
|
+
}
|
|
308
|
+
const totalDocumentsOfFilter = await this.query.count(this.collection, filter);
|
|
309
|
+
const totalPages = Math.ceil(totalDocumentsOfFilter / limit);
|
|
310
|
+
for (let page = 1; page <= totalPages; page++) {
|
|
311
|
+
const result = await this.paginate(filter, page, limit);
|
|
312
|
+
const output = await callback(result.documents, result.paginationInfo);
|
|
313
|
+
if (output === false)
|
|
314
|
+
return;
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* Check if document exists for the given filter
|
|
319
|
+
*/
|
|
320
|
+
static async exists(filter = {}) {
|
|
321
|
+
return await this.query.exists(this.collection, await this.prepareFilters(filter));
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* Get distinct values for the given column
|
|
325
|
+
*/
|
|
326
|
+
static async distinct(column, filter = {}) {
|
|
327
|
+
return await this.query.distinct(this.collection, column, await this.prepareFilters(filter));
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* Prepare filters
|
|
331
|
+
*/
|
|
332
|
+
static async prepareFilters(filters = {}) {
|
|
333
|
+
// if filter contains _id and it is a string, convert it to ObjectId
|
|
334
|
+
if (filters._id && typeof filters._id === "string") {
|
|
335
|
+
filters._id = new mongodb.ObjectId(filters._id);
|
|
336
|
+
}
|
|
337
|
+
const deleteStrategy = this.deleteStrategy;
|
|
338
|
+
if (deleteStrategy === types.ModelDeleteStrategy.softDelete &&
|
|
339
|
+
!filters.withDeleted) {
|
|
340
|
+
filters.deletedAt = null;
|
|
341
|
+
}
|
|
342
|
+
await this.events().trigger("fetching", this, filters);
|
|
343
|
+
await baseModel.BaseModel.events().trigger("fetching", this, filters);
|
|
344
|
+
return filters;
|
|
345
|
+
}
|
|
346
|
+
}exports.CrudModel=CrudModel;//# sourceMappingURL=crud-model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crud-model.js","sources":["../../src/model/crud-model.ts"],"sourcesContent":[null],"names":["BaseModel","ModelDeleteStrategy","ObjectId"],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export * from "./ModelAggregate";
|
|
2
|
+
export * from "./ModelSync";
|
|
3
|
+
export * from "./base-model";
|
|
4
|
+
export * from "./crud-model";
|
|
5
|
+
export * from "./joinable";
|
|
6
|
+
export * from "./master-mind";
|
|
7
|
+
export * from "./migration-office";
|
|
8
|
+
export * from "./model";
|
|
9
|
+
export * from "./relationships";
|
|
10
|
+
export * from "./types";
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/model/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { GenericObject } from "@mongez/reinforcements";
|
|
2
|
+
import { Aggregate, LookupPipelineOptions, Pipeline } from "../aggregate";
|
|
3
|
+
import { Model } from "../model";
|
|
4
|
+
export type JoinableProxy = Joinable & Aggregate;
|
|
5
|
+
export type ReturnAsCallback = (data: any | any[]) => any;
|
|
6
|
+
export declare class Joinable {
|
|
7
|
+
model: typeof Model;
|
|
8
|
+
/**
|
|
9
|
+
* Lookup data
|
|
10
|
+
*/
|
|
11
|
+
protected lookupData: LookupPipelineOptions;
|
|
12
|
+
/**
|
|
13
|
+
* Whether to return the data in model
|
|
14
|
+
*/
|
|
15
|
+
isInModel: boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Return data as callback
|
|
18
|
+
*/
|
|
19
|
+
protected returnAsCallback: ReturnAsCallback;
|
|
20
|
+
/**
|
|
21
|
+
* Aggregate instance
|
|
22
|
+
*/
|
|
23
|
+
query: Aggregate;
|
|
24
|
+
/**
|
|
25
|
+
* Constructor
|
|
26
|
+
* The Joined Model
|
|
27
|
+
*/
|
|
28
|
+
constructor(model: typeof Model);
|
|
29
|
+
/**
|
|
30
|
+
* Set the return as callback
|
|
31
|
+
*/
|
|
32
|
+
returnAs(callback: ReturnAsCallback): this;
|
|
33
|
+
/**
|
|
34
|
+
* Get return as callback
|
|
35
|
+
*/
|
|
36
|
+
getReturnAs(): ReturnAsCallback;
|
|
37
|
+
/**
|
|
38
|
+
* Return data in model
|
|
39
|
+
*/
|
|
40
|
+
inModel(inModel?: boolean): this;
|
|
41
|
+
/**
|
|
42
|
+
* Set the local field
|
|
43
|
+
*/
|
|
44
|
+
localField(localField: string): this;
|
|
45
|
+
/**
|
|
46
|
+
* Get value from lookup data
|
|
47
|
+
*/
|
|
48
|
+
get(key: keyof LookupPipelineOptions, defaultValue?: any): any;
|
|
49
|
+
/**
|
|
50
|
+
* Set the foreign field
|
|
51
|
+
*/
|
|
52
|
+
foreignField(foreignField: string): this;
|
|
53
|
+
/**
|
|
54
|
+
* Set the as field
|
|
55
|
+
*/
|
|
56
|
+
as(as: string): this;
|
|
57
|
+
/**
|
|
58
|
+
* Wether to return a single document or an array
|
|
59
|
+
*/
|
|
60
|
+
single(single?: boolean): this;
|
|
61
|
+
/**
|
|
62
|
+
* Set the pipeline
|
|
63
|
+
*/
|
|
64
|
+
addPipeline(pipeline: (Pipeline | GenericObject)[]): this;
|
|
65
|
+
/**
|
|
66
|
+
* Add let
|
|
67
|
+
*/
|
|
68
|
+
let(letData: LookupPipelineOptions["let"]): this;
|
|
69
|
+
/**
|
|
70
|
+
* Set all lookup data
|
|
71
|
+
*/
|
|
72
|
+
set(data: LookupPipelineOptions): this;
|
|
73
|
+
/**
|
|
74
|
+
* Parse the lookup data
|
|
75
|
+
*/
|
|
76
|
+
parse(): Required<LookupPipelineOptions>;
|
|
77
|
+
/**
|
|
78
|
+
* Reset the pipelines
|
|
79
|
+
*/
|
|
80
|
+
reset(): void;
|
|
81
|
+
/**
|
|
82
|
+
* Clone the current instance
|
|
83
|
+
*/
|
|
84
|
+
clone(): Joinable;
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=joinable.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"joinable.d.ts","sourceRoot":"","sources":["../../src/model/joinable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC1E,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEjC,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEjD,MAAM,MAAM,gBAAgB,GAAG,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,EAAE,KAAK,GAAG,CAAC;AAE1D,qBAAa,QAAQ;IAuCO,KAAK,EAAE,OAAO,KAAK;IAtC7C;;OAEG;IACH,SAAS,CAAC,UAAU,EAAE,qBAAqB,CAMzC;IAEF;;OAEG;IACI,SAAS,UAAS;IAEzB;;OAEG;IACH,SAAS,CAAC,gBAAgB,EAAE,gBAAgB,CAQ1C;IAEF;;OAEG;IACI,KAAK,EAAE,SAAS,CAAC;IAExB;;;OAGG;gBACuB,KAAK,EAAE,OAAO,KAAK;IAK7C;;OAEG;IACI,QAAQ,CAAC,QAAQ,EAAE,gBAAgB;IAM1C;;OAEG;IACI,WAAW;IAIlB;;OAEG;IACI,OAAO,CAAC,OAAO,UAAO;IAM7B;;OAEG;IACI,UAAU,CAAC,UAAU,EAAE,MAAM;IAMpC;;OAEG;IACI,GAAG,CAAC,GAAG,EAAE,MAAM,qBAAqB,EAAE,YAAY,CAAC,EAAE,GAAG;IAI/D;;OAEG;IACI,YAAY,CAAC,YAAY,EAAE,MAAM;IAMxC;;OAEG;IACI,EAAE,CAAC,EAAE,EAAE,MAAM;IAMpB;;OAEG;IACI,MAAM,CAAC,MAAM,UAAO;IAM3B;;OAEG;IACI,WAAW,CAAC,QAAQ,EAAE,CAAC,QAAQ,GAAG,aAAa,CAAC,EAAE;IAKzD;;OAEG;IACI,GAAG,CAAC,OAAO,EAAE,qBAAqB,CAAC,KAAK,CAAC;IAMhD;;OAEG;IACI,GAAG,CAAC,IAAI,EAAE,qBAAqB;IAUtC;;OAEG;IACI,KAAK;IAuBZ;;OAEG;IACI,KAAK;IAIZ;;OAEG;IACI,KAAK;CAab"}
|