@warlock.js/cascade 5.12.0 → 5.14.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.
Files changed (68) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/cjs/index.cjs +685 -128
  3. package/cjs/index.cjs.map +1 -1
  4. package/esm/contracts/database-driver.contract.d.mts +44 -7
  5. package/esm/contracts/database-driver.contract.d.mts.map +1 -1
  6. package/esm/contracts/index.d.mts +2 -2
  7. package/esm/contracts/query-builder.contract.d.mts +61 -1
  8. package/esm/contracts/query-builder.contract.d.mts.map +1 -1
  9. package/esm/drivers/mongodb/mongodb-driver.d.mts +8 -4
  10. package/esm/drivers/mongodb/mongodb-driver.d.mts.map +1 -1
  11. package/esm/drivers/mongodb/mongodb-driver.mjs +16 -6
  12. package/esm/drivers/mongodb/mongodb-driver.mjs.map +1 -1
  13. package/esm/drivers/mongodb/mongodb-query-builder.d.mts +32 -7
  14. package/esm/drivers/mongodb/mongodb-query-builder.d.mts.map +1 -1
  15. package/esm/drivers/mongodb/mongodb-query-builder.mjs +56 -8
  16. package/esm/drivers/mongodb/mongodb-query-builder.mjs.map +1 -1
  17. package/esm/drivers/mongodb/mongodb-query-parser.d.mts +39 -12
  18. package/esm/drivers/mongodb/mongodb-query-parser.d.mts.map +1 -1
  19. package/esm/drivers/mongodb/mongodb-query-parser.mjs +143 -55
  20. package/esm/drivers/mongodb/mongodb-query-parser.mjs.map +1 -1
  21. package/esm/drivers/mongodb/mongodb-update-translator.mjs +25 -0
  22. package/esm/drivers/mongodb/mongodb-update-translator.mjs.map +1 -0
  23. package/esm/drivers/mongodb/pipeline-stage-object.mjs +24 -0
  24. package/esm/drivers/mongodb/pipeline-stage-object.mjs.map +1 -0
  25. package/esm/drivers/mongodb/types.d.mts +7 -1
  26. package/esm/drivers/mongodb/types.d.mts.map +1 -1
  27. package/esm/drivers/postgres/postgres-driver.d.mts +52 -9
  28. package/esm/drivers/postgres/postgres-driver.d.mts.map +1 -1
  29. package/esm/drivers/postgres/postgres-driver.mjs +170 -38
  30. package/esm/drivers/postgres/postgres-driver.mjs.map +1 -1
  31. package/esm/drivers/postgres/postgres-query-builder.d.mts +17 -1
  32. package/esm/drivers/postgres/postgres-query-builder.d.mts.map +1 -1
  33. package/esm/drivers/postgres/postgres-query-builder.mjs +31 -0
  34. package/esm/drivers/postgres/postgres-query-builder.mjs.map +1 -1
  35. package/esm/drivers/postgres/postgres-update-validator.mjs +36 -0
  36. package/esm/drivers/postgres/postgres-update-validator.mjs.map +1 -0
  37. package/esm/errors/unsupported-lean-operation.error.d.mts +25 -0
  38. package/esm/errors/unsupported-lean-operation.error.d.mts.map +1 -0
  39. package/esm/errors/unsupported-lean-operation.error.mjs +31 -0
  40. package/esm/errors/unsupported-lean-operation.error.mjs.map +1 -0
  41. package/esm/errors/unsupported-query-operation.error.d.mts +30 -0
  42. package/esm/errors/unsupported-query-operation.error.d.mts.map +1 -0
  43. package/esm/errors/unsupported-query-operation.error.mjs +37 -0
  44. package/esm/errors/unsupported-query-operation.error.mjs.map +1 -0
  45. package/esm/errors/unsupported-update-operation.error.d.mts +30 -0
  46. package/esm/errors/unsupported-update-operation.error.d.mts.map +1 -0
  47. package/esm/errors/unsupported-update-operation.error.mjs +37 -0
  48. package/esm/errors/unsupported-update-operation.error.mjs.map +1 -0
  49. package/esm/index.d.mts +6 -3
  50. package/esm/index.mjs +4 -1
  51. package/esm/model/methods/query-methods.mjs +22 -6
  52. package/esm/model/methods/query-methods.mjs.map +1 -1
  53. package/esm/model/model.d.mts +28 -11
  54. package/esm/model/model.d.mts.map +1 -1
  55. package/esm/model/model.mjs +30 -13
  56. package/esm/model/model.mjs.map +1 -1
  57. package/esm/query-builder/lean-records.mjs +34 -0
  58. package/esm/query-builder/lean-records.mjs.map +1 -0
  59. package/esm/query-builder/query-builder.d.mts +13 -1
  60. package/esm/query-builder/query-builder.d.mts.map +1 -1
  61. package/esm/query-builder/query-builder.mjs +16 -0
  62. package/esm/query-builder/query-builder.mjs.map +1 -1
  63. package/llms-full.txt +72 -5
  64. package/llms.txt +3 -3
  65. package/package.json +4 -4
  66. package/skills/aggregate-data/SKILL.md +24 -1
  67. package/skills/perform-atomic-ops/SKILL.md +38 -3
  68. package/skills/query-data/SKILL.md +10 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unsupported-lean-operation.error.mjs","names":[],"sources":["../../../../../../../cascade/src/errors/unsupported-lean-operation.error.ts"],"sourcesContent":["/**\n * Error thrown when a query in lean read mode (`.lean()`) asks for something\n * that needs hydrated Model instances — eager-loading relations with `with()`\n * or `joinWith()`.\n *\n * Relations are attached to Model instances and shaped (including the related\n * model's `hidden` fields) by the Model layer, so lean mode refuses them rather\n * than returning a half-loaded or unfiltered result.\n */\nexport class UnsupportedLeanOperationError extends Error {\n /**\n * The rejected builder operation (e.g. `\"with\"`, `\"joinWith\"`).\n */\n public readonly operation: string;\n\n /**\n * Creates a new UnsupportedLeanOperationError.\n *\n * @param operation - The rejected builder operation\n */\n public constructor(operation: string) {\n super(\n `${operation}() cannot be combined with lean(): eager-loaded relations need hydrated models. ` +\n `Drop lean() for this query, or load the related records with a second lean query.`,\n );\n this.name = \"UnsupportedLeanOperationError\";\n this.operation = operation;\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, UnsupportedLeanOperationError);\n }\n }\n}\n"],"mappings":";;;;;;;;;;AASA,IAAa,gCAAb,MAAa,sCAAsC,MAAM;;;;CAIvD,AAAgB;;;;;;CAOhB,AAAO,YAAY,WAAmB;EACpC,MACE,GAAG,UAAU,kKAEf;EACA,KAAK,OAAO;EACZ,KAAK,YAAY;EAEjB,IAAI,MAAM,mBACR,MAAM,kBAAkB,MAAM,6BAA6B;CAE/D;AACF"}
@@ -0,0 +1,30 @@
1
+ //#region ../cascade/src/errors/unsupported-query-operation.error.d.ts
2
+ /**
3
+ * Error thrown when a query builder is asked for a read operation its driver
4
+ * cannot express — e.g. a MongoDB-only aggregation stage such as `unwind()` or
5
+ * `addFields()` on a SQL driver.
6
+ *
7
+ * Builders throw this instead of silently dropping the stage, so a caller
8
+ * never receives rows shaped differently from what the query asked for.
9
+ */
10
+ declare class UnsupportedQueryOperationError extends Error {
11
+ /**
12
+ * The operation that was rejected (e.g. `"unwind"`, `"addFields"`).
13
+ */
14
+ readonly operation: string;
15
+ /**
16
+ * The driver that rejected it (e.g. `"postgres"`).
17
+ */
18
+ readonly driver: string;
19
+ /**
20
+ * Creates a new UnsupportedQueryOperationError.
21
+ *
22
+ * @param operation - The rejected operation
23
+ * @param driver - The driver name
24
+ * @param hint - Optional guidance appended to the message
25
+ */
26
+ constructor(operation: string, driver: string, hint?: string);
27
+ }
28
+ //#endregion
29
+ export { UnsupportedQueryOperationError };
30
+ //# sourceMappingURL=unsupported-query-operation.error.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unsupported-query-operation.error.d.mts","names":[],"sources":["../../../../../../../cascade/src/errors/unsupported-query-operation.error.ts"],"mappings":";;AAQA;;;;;;;cAAa,8BAAA,SAAuC,KAAK;EAkBpC;;;EAAA,SAdH,SAAA;EAcmD;;;EAAA,SATnD,MAAA;;;;;;;;cASG,SAAA,UAAmB,MAAA,UAAgB,IAAA;AAAA"}
@@ -0,0 +1,37 @@
1
+ //#region ../cascade/src/errors/unsupported-query-operation.error.ts
2
+ /**
3
+ * Error thrown when a query builder is asked for a read operation its driver
4
+ * cannot express — e.g. a MongoDB-only aggregation stage such as `unwind()` or
5
+ * `addFields()` on a SQL driver.
6
+ *
7
+ * Builders throw this instead of silently dropping the stage, so a caller
8
+ * never receives rows shaped differently from what the query asked for.
9
+ */
10
+ var UnsupportedQueryOperationError = class UnsupportedQueryOperationError extends Error {
11
+ /**
12
+ * The operation that was rejected (e.g. `"unwind"`, `"addFields"`).
13
+ */
14
+ operation;
15
+ /**
16
+ * The driver that rejected it (e.g. `"postgres"`).
17
+ */
18
+ driver;
19
+ /**
20
+ * Creates a new UnsupportedQueryOperationError.
21
+ *
22
+ * @param operation - The rejected operation
23
+ * @param driver - The driver name
24
+ * @param hint - Optional guidance appended to the message
25
+ */
26
+ constructor(operation, driver, hint) {
27
+ super(`The ${driver} driver does not support ${operation}() in queries.` + (hint ? ` ${hint}` : ""));
28
+ this.name = "UnsupportedQueryOperationError";
29
+ this.operation = operation;
30
+ this.driver = driver;
31
+ if (Error.captureStackTrace) Error.captureStackTrace(this, UnsupportedQueryOperationError);
32
+ }
33
+ };
34
+
35
+ //#endregion
36
+ export { UnsupportedQueryOperationError };
37
+ //# sourceMappingURL=unsupported-query-operation.error.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unsupported-query-operation.error.mjs","names":[],"sources":["../../../../../../../cascade/src/errors/unsupported-query-operation.error.ts"],"sourcesContent":["/**\n * Error thrown when a query builder is asked for a read operation its driver\n * cannot express — e.g. a MongoDB-only aggregation stage such as `unwind()` or\n * `addFields()` on a SQL driver.\n *\n * Builders throw this instead of silently dropping the stage, so a caller\n * never receives rows shaped differently from what the query asked for.\n */\nexport class UnsupportedQueryOperationError extends Error {\n /**\n * The operation that was rejected (e.g. `\"unwind\"`, `\"addFields\"`).\n */\n public readonly operation: string;\n\n /**\n * The driver that rejected it (e.g. `\"postgres\"`).\n */\n public readonly driver: string;\n\n /**\n * Creates a new UnsupportedQueryOperationError.\n *\n * @param operation - The rejected operation\n * @param driver - The driver name\n * @param hint - Optional guidance appended to the message\n */\n public constructor(operation: string, driver: string, hint?: string) {\n super(`The ${driver} driver does not support ${operation}() in queries.` + (hint ? ` ${hint}` : \"\"));\n this.name = \"UnsupportedQueryOperationError\";\n this.operation = operation;\n this.driver = driver;\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, UnsupportedQueryOperationError);\n }\n }\n}\n"],"mappings":";;;;;;;;;AAQA,IAAa,iCAAb,MAAa,uCAAuC,MAAM;;;;CAIxD,AAAgB;;;;CAKhB,AAAgB;;;;;;;;CAShB,AAAO,YAAY,WAAmB,QAAgB,MAAe;EACnE,MAAM,OAAO,OAAO,2BAA2B,UAAU,mBAAmB,OAAO,IAAI,SAAS,GAAG;EACnG,KAAK,OAAO;EACZ,KAAK,YAAY;EACjB,KAAK,SAAS;EAEd,IAAI,MAAM,mBACR,MAAM,kBAAkB,MAAM,8BAA8B;CAEhE;AACF"}
@@ -0,0 +1,30 @@
1
+ //#region ../cascade/src/errors/unsupported-update-operation.error.d.ts
2
+ /**
3
+ * Error thrown when a driver is asked to perform an update it cannot express
4
+ * natively — e.g. an aggregation-pipeline update, `arrayFilters` or `$addToSet`
5
+ * on a SQL driver, or an upsert whose conflict target cannot be derived.
6
+ *
7
+ * Drivers throw this instead of silently dropping the operation, so a caller
8
+ * never believes a write happened that did not.
9
+ */
10
+ declare class UnsupportedUpdateOperationError extends Error {
11
+ /**
12
+ * The operation that was rejected (e.g. `"pipeline update"`, `"$addToSet"`).
13
+ */
14
+ readonly operation: string;
15
+ /**
16
+ * The driver that rejected it (e.g. `"postgres"`).
17
+ */
18
+ readonly driver: string;
19
+ /**
20
+ * Creates a new UnsupportedUpdateOperationError.
21
+ *
22
+ * @param operation - The rejected operation
23
+ * @param driver - The driver name
24
+ * @param hint - Optional guidance appended to the message
25
+ */
26
+ constructor(operation: string, driver: string, hint?: string);
27
+ }
28
+ //#endregion
29
+ export { UnsupportedUpdateOperationError };
30
+ //# sourceMappingURL=unsupported-update-operation.error.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unsupported-update-operation.error.d.mts","names":[],"sources":["../../../../../../../cascade/src/errors/unsupported-update-operation.error.ts"],"mappings":";;AAQA;;;;;;;cAAa,+BAAA,SAAwC,KAAK;EAkBrC;;;EAAA,SAdH,SAAA;EAcmD;;;EAAA,SATnD,MAAA;;;;;;;;cASG,SAAA,UAAmB,MAAA,UAAgB,IAAA;AAAA"}
@@ -0,0 +1,37 @@
1
+ //#region ../cascade/src/errors/unsupported-update-operation.error.ts
2
+ /**
3
+ * Error thrown when a driver is asked to perform an update it cannot express
4
+ * natively — e.g. an aggregation-pipeline update, `arrayFilters` or `$addToSet`
5
+ * on a SQL driver, or an upsert whose conflict target cannot be derived.
6
+ *
7
+ * Drivers throw this instead of silently dropping the operation, so a caller
8
+ * never believes a write happened that did not.
9
+ */
10
+ var UnsupportedUpdateOperationError = class UnsupportedUpdateOperationError extends Error {
11
+ /**
12
+ * The operation that was rejected (e.g. `"pipeline update"`, `"$addToSet"`).
13
+ */
14
+ operation;
15
+ /**
16
+ * The driver that rejected it (e.g. `"postgres"`).
17
+ */
18
+ driver;
19
+ /**
20
+ * Creates a new UnsupportedUpdateOperationError.
21
+ *
22
+ * @param operation - The rejected operation
23
+ * @param driver - The driver name
24
+ * @param hint - Optional guidance appended to the message
25
+ */
26
+ constructor(operation, driver, hint) {
27
+ super(`The ${driver} driver does not support ${operation} in atomic updates.` + (hint ? ` ${hint}` : ""));
28
+ this.name = "UnsupportedUpdateOperationError";
29
+ this.operation = operation;
30
+ this.driver = driver;
31
+ if (Error.captureStackTrace) Error.captureStackTrace(this, UnsupportedUpdateOperationError);
32
+ }
33
+ };
34
+
35
+ //#endregion
36
+ export { UnsupportedUpdateOperationError };
37
+ //# sourceMappingURL=unsupported-update-operation.error.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unsupported-update-operation.error.mjs","names":[],"sources":["../../../../../../../cascade/src/errors/unsupported-update-operation.error.ts"],"sourcesContent":["/**\n * Error thrown when a driver is asked to perform an update it cannot express\n * natively — e.g. an aggregation-pipeline update, `arrayFilters` or `$addToSet`\n * on a SQL driver, or an upsert whose conflict target cannot be derived.\n *\n * Drivers throw this instead of silently dropping the operation, so a caller\n * never believes a write happened that did not.\n */\nexport class UnsupportedUpdateOperationError extends Error {\n /**\n * The operation that was rejected (e.g. `\"pipeline update\"`, `\"$addToSet\"`).\n */\n public readonly operation: string;\n\n /**\n * The driver that rejected it (e.g. `\"postgres\"`).\n */\n public readonly driver: string;\n\n /**\n * Creates a new UnsupportedUpdateOperationError.\n *\n * @param operation - The rejected operation\n * @param driver - The driver name\n * @param hint - Optional guidance appended to the message\n */\n public constructor(operation: string, driver: string, hint?: string) {\n super(\n `The ${driver} driver does not support ${operation} in atomic updates.` +\n (hint ? ` ${hint}` : \"\"),\n );\n this.name = \"UnsupportedUpdateOperationError\";\n this.operation = operation;\n this.driver = driver;\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, UnsupportedUpdateOperationError);\n }\n }\n}\n"],"mappings":";;;;;;;;;AAQA,IAAa,kCAAb,MAAa,wCAAwC,MAAM;;;;CAIzD,AAAgB;;;;CAKhB,AAAgB;;;;;;;;CAShB,AAAO,YAAY,WAAmB,QAAgB,MAAe;EACnE,MACE,OAAO,OAAO,2BAA2B,UAAU,wBAChD,OAAO,IAAI,SAAS,GACzB;EACA,KAAK,OAAO;EACZ,KAAK,YAAY;EACjB,KAAK,SAAS;EAEd,IAAI,MAAM,mBACR,MAAM,kBAAkB,MAAM,+BAA+B;CAEjE;AACF"}
package/esm/index.d.mts CHANGED
@@ -14,9 +14,9 @@ import { Model } from "./model/model.mjs";
14
14
  import { ConnectionOptions, DatabaseDriver, ModelDefaultConfig, connectToDatabase, getDatabaseDriver, transaction } from "./utils/connect-to-database.mjs";
15
15
  import { ForeignKeyBuilder } from "./migration/foreign-key-builder.mjs";
16
16
  import { AlterSchema, ColumnMap, IndexEntry, Migration, MigrationAlterOptions, MigrationConstructor, MigrationContract, MigrationCreateOptions, OperationType, PendingOperation, UniqueEntry, migrate } from "./migration/migration.mjs";
17
- import { ChunkCallback, CursorPaginationOptions, CursorPaginationResult, DriverQuery, GroupByInput, HavingInput, JoinOptions, LockForUpdateOptions, OrderDirection, PaginationOptions, PaginationResult, QueryBuilderContract, RawExpression, WhereCallback, WhereObject, WhereOperator } from "./contracts/query-builder.contract.mjs";
17
+ import { ChunkCallback, CursorPaginationOptions, CursorPaginationResult, DriverQuery, GroupByInput, HavingInput, JoinOptions, LeanDocument, LockForUpdateOptions, OrderDirection, PaginationOptions, PaginationResult, QueryBuilderContract, RawExpression, UnwindOptions, WhereCallback, WhereObject, WhereOperator } from "./contracts/query-builder.contract.mjs";
18
18
  import { SyncAdapterContract } from "./contracts/sync-adapter.contract.mjs";
19
- import { CreateDatabaseOptions, DriverContract, DriverEvent, DriverEventListener, DriverTransactionContract, DropDatabaseOptions, InsertResult, RawQueryResult, TransactionContext, UpdateOperations, UpdateResult } from "./contracts/database-driver.contract.mjs";
19
+ import { AtomicUpdate, AtomicUpdateOptions, CreateDatabaseOptions, DriverAtomicUpdateOptions, DriverContract, DriverEvent, DriverEventListener, DriverTransactionContract, DropDatabaseOptions, FindOneAndUpdateOptions, InsertResult, RawQueryResult, TransactionContext, UpdateOperations, UpdatePipeline, UpdateResult } from "./contracts/database-driver.contract.mjs";
20
20
  import { GenerateIdOptions, IdGeneratorContract } from "./contracts/database-id-generator.contract.mjs";
21
21
  import { RemoverContract, RemoverOptions, RemoverResult } from "./contracts/database-remover.contract.mjs";
22
22
  import { RestorerContract, RestorerOptions, RestorerResult } from "./contracts/database-restorer.contract.mjs";
@@ -29,6 +29,9 @@ import { MissingDataSourceError } from "./errors/missing-data-source.error.mjs";
29
29
  import { TransactionRollbackError } from "./errors/transaction-rollback.error.mjs";
30
30
  import { UnsafeFilterError } from "./errors/unsafe-filter.error.mjs";
31
31
  import { UnsafeRawExpressionError } from "./errors/unsafe-raw-expression.error.mjs";
32
+ import { UnsupportedLeanOperationError } from "./errors/unsupported-lean-operation.error.mjs";
33
+ import { UnsupportedQueryOperationError } from "./errors/unsupported-query-operation.error.mjs";
34
+ import { UnsupportedUpdateOperationError } from "./errors/unsupported-update-operation.error.mjs";
32
35
  import { ModelRef, RegisterModel, RegisterModelOptions, cleanupModelsRegistery, getAllModelsFromRegistry, getModelFromRegistry, registerModelInRegistry, removeModelFromRegistery, resolveModelClass, resolveModelName, tryResolveModelClass, verifyRegisteredRelations } from "./model/register-model.mjs";
33
36
  import { BelongsTo, BelongsToMany, HasMany, HasOne, RELATION_METADATA_KEY } from "./model/relation-decorators.mjs";
34
37
  import { DatabaseRemover } from "./remover/database-remover.mjs";
@@ -69,6 +72,6 @@ import { PostgresQueryBuilder } from "./drivers/postgres/postgres-query-builder.
69
72
  import { PostgresOperationType, PostgresParserOperation, PostgresParserOptions, PostgresQueryParser } from "./drivers/postgres/postgres-query-parser.mjs";
70
73
  import { PostgresSyncAdapter } from "./drivers/postgres/postgres-sync-adapter.mjs";
71
74
  import { MongoClientOptions, TransactionOptions } from "mongodb";
72
- export { $agg, $expr, AggregateExpression, AggregateFunction, AlterSchema, ArithmeticExpression, type BaseQueryRuleOptions, type BaseUniqueRuleOptions, BelongsTo, BelongsToMany, type BelongsToManyOptions, type BelongsToOptions, BuildUpdateOperationsResult, type ChildModel, ChunkCallback, ColumnBuilder, ColumnDefinition, ColumnExpression, ColumnExpressionInput, ColumnExpressionType, ColumnMap, ColumnRefExpression, ColumnType, ConnectionOptions, CreateDatabaseOptions, CreateDatabaseResult, CursorPaginationOptions, CursorPaginationResult, DEFAULT_MAX_SYNC_DEPTH, DataSource, DataSourceOptions, DataSourceRegistryEvent, DataSourceRegistryListener, DatabaseDirtyTracker, DatabaseDriver, DatabaseRemover, DatabaseRestorer, DatabaseWriter, DatabaseWriterValidationError, DefineModelOptions, DeleteStrategy, DetachedColumnBuilder, DriverContract, DriverEvent, DriverEventListener, DriverQuery, DriverTransactionContract, DropAllTablesResult, DropDatabaseOptions, type EmbedKey, type ExistsRuleOptions, ExportMigrationsSQLOptions, ForeignKeyBuilder, ForeignKeyDefinition, FullTextIndexOptions, GenerateIdOptions, GeoIndexOptions, type GlobalScopeDefinition, type GlobalScopeOptions, GroupByInput, HasMany, type HasManyOptions, HasOne, type HasOneOptions, HavingInput, IdGeneratorContract, IndexDefinition, IndexEntry, InsertResult, JoinOptions, LiteralExpression, type LoadedRelationResult, type LoadedRelationsMap, type LocalScopeCallback, LockForUpdateOptions, Migration, MigrationAlterOptions, MigrationConstructor, MigrationContract, MigrationCreateOptions, MigrationDefaults, MigrationDriverContract, MigrationDriverFactory, type MigrationRecord, type MigrationResult, MigrationRunner, type MigrationRunnerOptions, type MigrationStatus, MissingDataSourceError, Model, ModelDefaultConfig, ModelDefaults, ModelEventListener, ModelEventName, ModelEvents, ModelRef, type ModelSchema, type ModelSnapshot, type ModelSyncConfig, type ModelSyncContract, ModelSyncOperation, type ModelSyncOperationContract, ModelTransformCallback, ModelType, type MongoClientOptions, MongoDbDriver, MongoDriverOptions, MongoIdGenerator, MongoMigrationDriver, MongoQueryBuilder, MongoSyncAdapter, NamingConvention, OnDeletedEventContext, Operation, OperationType, OrderDirection, PaginationOptions, PaginationResult, PendingMigration, PendingOperation, PipelineStage, type PivotData, type PivotIds, PivotOperations, PostgresBlueprint, PostgresConnectionConfig, PostgresCopyOptions, PostgresDialect, PostgresDriver, PostgresIsolationLevel, PostgresMigrationDriver, PostgresNotification, PostgresOperation, PostgresOperationType, PostgresParserOperation, PostgresParserOptions, PostgresPoolConfig, PostgresQueryBuilder, PostgresQueryParser, PostgresQueryResult, PostgresSyncAdapter, PostgresTransactionOptions, PostgresWhereClause, QueryBuilderContract, RELATION_METADATA_KEY, RawColumnExpression, RawExpression, RawQueryResult, RegisterModel, RegisterModelOptions, type RelationConstraintCallback, type RelationConstraints, RelationDefaults, type RelationDefinition, type RelationDefinitions, RelationHydrator, RelationLoader, type RelationType, RemoverContract, RemoverOptions, RemoverResult, RestorerContract, RestorerOptions, RestorerResult, RollbackMigrationsOptions, type RollbackOptions, type RunMigrationsOptions, type ScopeTiming, type SerializedRelation, SqlAggregateFunction, SqlDeleteOperation, SqlDialectContract, SqlGroupClause, SqlHavingClause, SqlInsertOperation, SqlJoinClause, SqlJoinType, SqlOrderClause, SqlQueryConfig, SqlQueryResult, SqlSelectClause, SqlUpdateOperation, SqlWhereOperation, SqlWhereType, StrictMode, SyncAdapterContract, type SyncConfig, type SyncContext, SyncContextManager, type SyncEventPayload, SyncInstruction, type SyncInstructionOptions, SyncManager, type SyncResult, type TableIndexInformation, TransactionContext, type TransactionOptions, TransactionRollbackError, UniqueEntry, type UniqueRuleOptions, UnsafeFilterError, UnsafeRawExpressionError, UpdateOperations, UpdateResult, UuidStrategy, VectorIndexOptions, WhereCallback, WhereObject, WhereOperator, WriterContract, WriterOptions, WriterResult, arrayBigInt, arrayBoolean, arrayDate, arrayDecimal, arrayFloat, arrayInt, arrayJson, arrayText, arrayTimestamp, arrayUuid, bigInt, bigInteger, binary, blobCol, boolCol as bool, boolCol, buildPostgresPoolConfig, char, cleanupModelsRegistery, connectToDatabase, createDatabase, createPivotOperations, dataSourceRegistry, databaseDataSourceContext, databaseTransactionContext, date, dateTime, decimal, defineModel, double, dropAllTables, enumCol, escapeRegex, exportMigrationsSQL, float, freshMigrate, geometry, getAllModelsFromRegistry, getDatabaseDriver, getModelFromRegistry, globalModelEvents, int, integer, ipAddress, isAggregateExpression, isColumnExpression, isMongoDBDriverLoaded, json, likePatternToRegexSource, lineString, listExecutedMigrations, listPendingMigrations, longText, macAddress, mediumText, migrate, migrationRunner, modelSync, objectCol, onceConnected, onceDisconnected, point, polygon, registerModelInRegistry, removeModelFromRegistery, resolveLikePattern, resolveModelClass, resolveModelName, rollbackMigrations, runMigrations, sanitizeFilter, sanitizeFilterValue, setCol, smallInt, smallInteger, string, text, time, timestamp, tinyInt, tinyInteger, toColumnExpression, transaction, tryResolveModelClass, ulid, useModelTransformer, uuid, vector, verifyRegisteredRelations, year };
75
+ export { $agg, $expr, AggregateExpression, AggregateFunction, AlterSchema, ArithmeticExpression, AtomicUpdate, AtomicUpdateOptions, type BaseQueryRuleOptions, type BaseUniqueRuleOptions, BelongsTo, BelongsToMany, type BelongsToManyOptions, type BelongsToOptions, BuildUpdateOperationsResult, type ChildModel, ChunkCallback, ColumnBuilder, ColumnDefinition, ColumnExpression, ColumnExpressionInput, ColumnExpressionType, ColumnMap, ColumnRefExpression, ColumnType, ConnectionOptions, CreateDatabaseOptions, CreateDatabaseResult, CursorPaginationOptions, CursorPaginationResult, DEFAULT_MAX_SYNC_DEPTH, DataSource, DataSourceOptions, DataSourceRegistryEvent, DataSourceRegistryListener, DatabaseDirtyTracker, DatabaseDriver, DatabaseRemover, DatabaseRestorer, DatabaseWriter, DatabaseWriterValidationError, DefineModelOptions, DeleteStrategy, DetachedColumnBuilder, DriverAtomicUpdateOptions, DriverContract, DriverEvent, DriverEventListener, DriverQuery, DriverTransactionContract, DropAllTablesResult, DropDatabaseOptions, type EmbedKey, type ExistsRuleOptions, ExportMigrationsSQLOptions, FindOneAndUpdateOptions, ForeignKeyBuilder, ForeignKeyDefinition, FullTextIndexOptions, GenerateIdOptions, GeoIndexOptions, type GlobalScopeDefinition, type GlobalScopeOptions, GroupByInput, HasMany, type HasManyOptions, HasOne, type HasOneOptions, HavingInput, IdGeneratorContract, IndexDefinition, IndexEntry, InsertResult, JoinOptions, LeanDocument, LiteralExpression, type LoadedRelationResult, type LoadedRelationsMap, type LocalScopeCallback, LockForUpdateOptions, Migration, MigrationAlterOptions, MigrationConstructor, MigrationContract, MigrationCreateOptions, MigrationDefaults, MigrationDriverContract, MigrationDriverFactory, type MigrationRecord, type MigrationResult, MigrationRunner, type MigrationRunnerOptions, type MigrationStatus, MissingDataSourceError, Model, ModelDefaultConfig, ModelDefaults, ModelEventListener, ModelEventName, ModelEvents, ModelRef, type ModelSchema, type ModelSnapshot, type ModelSyncConfig, type ModelSyncContract, ModelSyncOperation, type ModelSyncOperationContract, ModelTransformCallback, ModelType, type MongoClientOptions, MongoDbDriver, MongoDriverOptions, MongoIdGenerator, MongoMigrationDriver, MongoQueryBuilder, MongoSyncAdapter, NamingConvention, OnDeletedEventContext, Operation, OperationType, OrderDirection, PaginationOptions, PaginationResult, PendingMigration, PendingOperation, PipelineStage, type PivotData, type PivotIds, PivotOperations, PostgresBlueprint, PostgresConnectionConfig, PostgresCopyOptions, PostgresDialect, PostgresDriver, PostgresIsolationLevel, PostgresMigrationDriver, PostgresNotification, PostgresOperation, PostgresOperationType, PostgresParserOperation, PostgresParserOptions, PostgresPoolConfig, PostgresQueryBuilder, PostgresQueryParser, PostgresQueryResult, PostgresSyncAdapter, PostgresTransactionOptions, PostgresWhereClause, QueryBuilderContract, RELATION_METADATA_KEY, RawColumnExpression, RawExpression, RawQueryResult, RegisterModel, RegisterModelOptions, type RelationConstraintCallback, type RelationConstraints, RelationDefaults, type RelationDefinition, type RelationDefinitions, RelationHydrator, RelationLoader, type RelationType, RemoverContract, RemoverOptions, RemoverResult, RestorerContract, RestorerOptions, RestorerResult, RollbackMigrationsOptions, type RollbackOptions, type RunMigrationsOptions, type ScopeTiming, type SerializedRelation, SqlAggregateFunction, SqlDeleteOperation, SqlDialectContract, SqlGroupClause, SqlHavingClause, SqlInsertOperation, SqlJoinClause, SqlJoinType, SqlOrderClause, SqlQueryConfig, SqlQueryResult, SqlSelectClause, SqlUpdateOperation, SqlWhereOperation, SqlWhereType, StrictMode, SyncAdapterContract, type SyncConfig, type SyncContext, SyncContextManager, type SyncEventPayload, SyncInstruction, type SyncInstructionOptions, SyncManager, type SyncResult, type TableIndexInformation, TransactionContext, type TransactionOptions, TransactionRollbackError, UniqueEntry, type UniqueRuleOptions, UnsafeFilterError, UnsafeRawExpressionError, UnsupportedLeanOperationError, UnsupportedQueryOperationError, UnsupportedUpdateOperationError, UnwindOptions, UpdateOperations, UpdatePipeline, UpdateResult, UuidStrategy, VectorIndexOptions, WhereCallback, WhereObject, WhereOperator, WriterContract, WriterOptions, WriterResult, arrayBigInt, arrayBoolean, arrayDate, arrayDecimal, arrayFloat, arrayInt, arrayJson, arrayText, arrayTimestamp, arrayUuid, bigInt, bigInteger, binary, blobCol, boolCol as bool, boolCol, buildPostgresPoolConfig, char, cleanupModelsRegistery, connectToDatabase, createDatabase, createPivotOperations, dataSourceRegistry, databaseDataSourceContext, databaseTransactionContext, date, dateTime, decimal, defineModel, double, dropAllTables, enumCol, escapeRegex, exportMigrationsSQL, float, freshMigrate, geometry, getAllModelsFromRegistry, getDatabaseDriver, getModelFromRegistry, globalModelEvents, int, integer, ipAddress, isAggregateExpression, isColumnExpression, isMongoDBDriverLoaded, json, likePatternToRegexSource, lineString, listExecutedMigrations, listPendingMigrations, longText, macAddress, mediumText, migrate, migrationRunner, modelSync, objectCol, onceConnected, onceDisconnected, point, polygon, registerModelInRegistry, removeModelFromRegistery, resolveLikePattern, resolveModelClass, resolveModelName, rollbackMigrations, runMigrations, sanitizeFilter, sanitizeFilterValue, setCol, smallInt, smallInteger, string, text, time, timestamp, tinyInt, tinyInteger, toColumnExpression, transaction, tryResolveModelClass, ulid, useModelTransformer, uuid, vector, verifyRegisteredRelations, year };
73
76
  import "./validation/plugins/database-rules-plugin.mjs";
74
77
  import "./validation/plugins/embed-validator-plugin.mjs";
package/esm/index.mjs CHANGED
@@ -6,6 +6,9 @@ import { dataSourceRegistry } from "./data-source/data-source-registry.mjs";
6
6
  import { TransactionRollbackError } from "./errors/transaction-rollback.error.mjs";
7
7
  import { UnsafeFilterError } from "./errors/unsafe-filter.error.mjs";
8
8
  import { UnsafeRawExpressionError } from "./errors/unsafe-raw-expression.error.mjs";
9
+ import { UnsupportedLeanOperationError } from "./errors/unsupported-lean-operation.error.mjs";
10
+ import { UnsupportedQueryOperationError } from "./errors/unsupported-query-operation.error.mjs";
11
+ import { UnsupportedUpdateOperationError } from "./errors/unsupported-update-operation.error.mjs";
9
12
  import { DatabaseDirtyTracker } from "./database-dirty-tracker.mjs";
10
13
  import { ModelEvents, globalModelEvents } from "./events/model-events.mjs";
11
14
  import { BelongsTo, BelongsToMany, HasMany, HasOne, RELATION_METADATA_KEY } from "./model/relation-decorators.mjs";
@@ -55,4 +58,4 @@ import { createDatabase, dropAllTables } from "./operations/database.mjs";
55
58
  import { exportMigrationsSQL, freshMigrate, listExecutedMigrations, listPendingMigrations, rollbackMigrations, runMigrations } from "./operations/migrations.mjs";
56
59
  import "./operations/index.mjs";
57
60
 
58
- export { $agg, $expr, BelongsTo, BelongsToMany, ColumnBuilder, DEFAULT_MAX_SYNC_DEPTH, DataSource, DatabaseDirtyTracker, DatabaseRemover, DatabaseRestorer, DatabaseWriter, DatabaseWriterValidationError, DetachedColumnBuilder, ForeignKeyBuilder, HasMany, HasOne, Migration, MigrationRunner, MissingDataSourceError, Model, ModelEvents, ModelSyncOperation, MongoDbDriver, MongoIdGenerator, MongoMigrationDriver, MongoQueryBuilder, MongoSyncAdapter, PivotOperations, PostgresBlueprint, PostgresDialect, PostgresDriver, PostgresMigrationDriver, PostgresQueryBuilder, PostgresQueryParser, PostgresSyncAdapter, RELATION_METADATA_KEY, RegisterModel, RelationHydrator, RelationLoader, SyncContextManager, SyncManager, TransactionRollbackError, UnsafeFilterError, UnsafeRawExpressionError, arrayBigInt, arrayBoolean, arrayDate, arrayDecimal, arrayFloat, arrayInt, arrayJson, arrayText, arrayTimestamp, arrayUuid, bigInt, bigInteger, binary, blobCol, boolCol as bool, boolCol, buildPostgresPoolConfig, char, cleanupModelsRegistery, connectToDatabase, createDatabase, createPivotOperations, dataSourceRegistry, databaseDataSourceContext, databaseTransactionContext, date, dateTime, decimal, defineModel, double, dropAllTables, enumCol, escapeRegex, exportMigrationsSQL, float, freshMigrate, geometry, getAllModelsFromRegistry, getDatabaseDriver, getModelFromRegistry, globalModelEvents, int, integer, ipAddress, isAggregateExpression, isColumnExpression, isMongoDBDriverLoaded, json, likePatternToRegexSource, lineString, listExecutedMigrations, listPendingMigrations, longText, macAddress, mediumText, migrate, migrationRunner, modelSync, objectCol, onceConnected, onceDisconnected, point, polygon, registerModelInRegistry, removeModelFromRegistery, resolveLikePattern, resolveModelClass, resolveModelName, rollbackMigrations, runMigrations, sanitizeFilter, sanitizeFilterValue, setCol, smallInt, smallInteger, string, text, time, timestamp, tinyInt, tinyInteger, toColumnExpression, transaction, tryResolveModelClass, ulid, useModelTransformer, uuid, vector, verifyRegisteredRelations, year };
61
+ export { $agg, $expr, BelongsTo, BelongsToMany, ColumnBuilder, DEFAULT_MAX_SYNC_DEPTH, DataSource, DatabaseDirtyTracker, DatabaseRemover, DatabaseRestorer, DatabaseWriter, DatabaseWriterValidationError, DetachedColumnBuilder, ForeignKeyBuilder, HasMany, HasOne, Migration, MigrationRunner, MissingDataSourceError, Model, ModelEvents, ModelSyncOperation, MongoDbDriver, MongoIdGenerator, MongoMigrationDriver, MongoQueryBuilder, MongoSyncAdapter, PivotOperations, PostgresBlueprint, PostgresDialect, PostgresDriver, PostgresMigrationDriver, PostgresQueryBuilder, PostgresQueryParser, PostgresSyncAdapter, RELATION_METADATA_KEY, RegisterModel, RelationHydrator, RelationLoader, SyncContextManager, SyncManager, TransactionRollbackError, UnsafeFilterError, UnsafeRawExpressionError, UnsupportedLeanOperationError, UnsupportedQueryOperationError, UnsupportedUpdateOperationError, arrayBigInt, arrayBoolean, arrayDate, arrayDecimal, arrayFloat, arrayInt, arrayJson, arrayText, arrayTimestamp, arrayUuid, bigInt, bigInteger, binary, blobCol, boolCol as bool, boolCol, buildPostgresPoolConfig, char, cleanupModelsRegistery, connectToDatabase, createDatabase, createPivotOperations, dataSourceRegistry, databaseDataSourceContext, databaseTransactionContext, date, dateTime, decimal, defineModel, double, dropAllTables, enumCol, escapeRegex, exportMigrationsSQL, float, freshMigrate, geometry, getAllModelsFromRegistry, getDatabaseDriver, getModelFromRegistry, globalModelEvents, int, integer, ipAddress, isAggregateExpression, isColumnExpression, isMongoDBDriverLoaded, json, likePatternToRegexSource, lineString, listExecutedMigrations, listPendingMigrations, longText, macAddress, mediumText, migrate, migrationRunner, modelSync, objectCol, onceConnected, onceDisconnected, point, polygon, registerModelInRegistry, removeModelFromRegistery, resolveLikePattern, resolveModelClass, resolveModelName, rollbackMigrations, runMigrations, sanitizeFilter, sanitizeFilterValue, setCol, smallInt, smallInteger, string, text, time, timestamp, tinyInt, tinyInteger, toColumnExpression, transaction, tryResolveModelClass, ulid, useModelTransformer, uuid, vector, verifyRegisteredRelations, year };
@@ -72,18 +72,34 @@ function increaseField(ModelClass, filter, field, amount) {
72
72
  function decreaseField(ModelClass, filter, field, amount) {
73
73
  return ModelClass.query().where(filter).decrement(field, amount);
74
74
  }
75
- async function performAtomic(ModelClass, filter, operations) {
76
- return (await ModelClass.getDriver().atomic(ModelClass.table, sanitizeFilter(filter), operations)).modifiedCount;
75
+ function resolveFilter(filter, options) {
76
+ return options?.trustedFilter ? filter : sanitizeFilter(filter);
77
+ }
78
+ function toDriverOptions(options) {
79
+ if (!options) return;
80
+ const { trustedFilter: _trustedFilter, ...rest } = options;
81
+ return rest;
82
+ }
83
+ /**
84
+ * Run an atomic update and return the number of documents modified plus the
85
+ * number inserted by an `upsert`.
86
+ */
87
+ async function performAtomic(ModelClass, filter, operations, options) {
88
+ const result = await ModelClass.getDriver().atomic(ModelClass.table, resolveFilter(filter, options), operations, toDriverOptions(options));
89
+ return result.modifiedCount + (result.upsertedCount ?? 0);
77
90
  }
78
91
  async function updateById(ModelClass, id, data) {
79
92
  return (await ModelClass.getDriver().update(ModelClass.table, { [ModelClass.primaryKey]: id }, { $set: data })).modifiedCount;
80
93
  }
81
- async function findAndUpdateRecords(ModelClass, filter, update) {
82
- await performAtomic(ModelClass, filter, update);
94
+ async function findAndUpdateRecords(ModelClass, filter, update, options) {
95
+ await performAtomic(ModelClass, filter, update, {
96
+ ...options,
97
+ trustedFilter: false
98
+ });
83
99
  return await ModelClass.query().where(filter).get();
84
100
  }
85
- async function findOneAndUpdateRecord(ModelClass, filter, update) {
86
- const result = await ModelClass.getDriver().findOneAndUpdate(ModelClass.table, sanitizeFilter(filter), update);
101
+ async function findOneAndUpdateRecord(ModelClass, filter, update, options) {
102
+ const result = await ModelClass.getDriver().findOneAndUpdate(ModelClass.table, resolveFilter(filter, options), update, toDriverOptions(options));
87
103
  if (!result) return null;
88
104
  return new ModelClass(result);
89
105
  }
@@ -1 +1 @@
1
- {"version":3,"file":"query-methods.mjs","names":["ctor"],"sources":["../../../../../../../../cascade/src/model/methods/query-methods.ts"],"sourcesContent":["import type {\r\n PaginationOptions,\r\n PaginationResult,\r\n QueryBuilderContract,\r\n UpdateOperations,\r\n} from \"../../contracts\";\r\nimport type { DataSource } from \"../../data-source/data-source\";\r\nimport { dataSourceRegistry } from \"../../data-source/data-source-registry\";\r\nimport { sanitizeFilter } from \"../../utils/sanitize-filter\";\r\nimport type { ChildModel, GlobalScopeDefinition, Model } from \"../model\";\r\nimport { warnUndeclaredSensitiveFields } from \"./serialization-methods\";\r\n\r\nexport function buildQuery<TModel extends Model>(\r\n ModelClass: ChildModel<TModel>,\r\n BaseModel: typeof Model,\r\n): QueryBuilderContract<TModel> {\r\n const queryBuilder = ModelClass.newQueryBuilder<TModel>();\r\n const qb = queryBuilder;\r\n\r\n // Collect global scopes from base Model and child model\r\n const allGlobalScopes = new Map<string, GlobalScopeDefinition>([\r\n ...BaseModel.globalScopes,\r\n ...ModelClass.globalScopes,\r\n ]);\r\n\r\n queryBuilder.pendingGlobalScopes = allGlobalScopes;\r\n queryBuilder.availableLocalScopes = ModelClass.localScopes;\r\n queryBuilder.disabledGlobalScopes = new Set();\r\n queryBuilder.relationDefinitions = ModelClass.relations;\r\n queryBuilder.modelClass = ModelClass;\r\n\r\n ModelClass.events().emitFetching(queryBuilder, {\r\n table: ModelClass.table,\r\n modelClass: ModelClass,\r\n });\r\n\r\n queryBuilder.hydrate((data: any) => {\r\n return ModelClass.hydrate(data);\r\n });\r\n\r\n // Eager-loading runs inside the driver's `get()` so it works for any\r\n // builder construction path (Model.query, Model.newQueryBuilder, custom\r\n // subclassed builders). This hook only handles the model-level `fetched`\r\n // event emission.\r\n queryBuilder.onFetched(async (models: any[]) => {\r\n await ModelClass.events().emit(\"fetched\", models as any, {});\r\n });\r\n\r\n return queryBuilder;\r\n}\r\n\r\nexport function buildNewQueryBuilder<TModel extends Model>(\r\n ModelClass: ChildModel<TModel>,\r\n): QueryBuilderContract<TModel> {\r\n const dataSource = ModelClass.getDataSource();\r\n\r\n if (ModelClass.builder) {\r\n const BuilderClass = ModelClass.builder;\r\n return new BuilderClass(ModelClass.table, dataSource) as QueryBuilderContract<TModel>;\r\n }\r\n\r\n const queryBuilder = dataSource.driver.queryBuilder<TModel>(ModelClass.table);\r\n return queryBuilder;\r\n}\r\n\r\nexport async function findFirst<TModel extends Model>(\r\n ModelClass: ChildModel<TModel>,\r\n filter?: Record<string, unknown>,\r\n): Promise<TModel | null> {\r\n const query = ModelClass.query();\r\n if (filter) {\r\n query.where(filter);\r\n }\r\n return query.first();\r\n}\r\n\r\nexport async function findLast<TModel extends Model>(\r\n ModelClass: ChildModel<TModel>,\r\n filter?: Record<string, unknown>,\r\n): Promise<TModel | null> {\r\n const query = ModelClass.query();\r\n if (filter) {\r\n query.where(filter);\r\n }\r\n\r\n return query.last();\r\n}\r\n\r\nexport async function findAll<TModel extends Model>(\r\n ModelClass: ChildModel<TModel>,\r\n filter?: Record<string, unknown>,\r\n): Promise<TModel[]> {\r\n const query = ModelClass.query();\r\n if (filter) {\r\n query.where(filter);\r\n }\r\n return query.get();\r\n}\r\n\r\nexport function countRecords<TModel extends Model>(\r\n ModelClass: ChildModel<TModel>,\r\n filter?: Record<string, unknown>,\r\n): Promise<number> {\r\n const query = ModelClass.query();\r\n if (filter) {\r\n query.where(filter);\r\n }\r\n return query.count();\r\n}\r\n\r\nexport async function findById<TModel extends Model>(\r\n ModelClass: ChildModel<TModel>,\r\n id: string | number,\r\n): Promise<TModel | null> {\r\n const query = ModelClass.query();\r\n return query.where(ModelClass.primaryKey, id).first();\r\n}\r\n\r\nexport async function paginateRecords<TModel extends Model>(\r\n ModelClass: ChildModel<TModel>,\r\n options: PaginationOptions & { filter?: Record<string, unknown> } = {},\r\n): Promise<PaginationResult<TModel>> {\r\n const query = ModelClass.query();\r\n if (options.filter) {\r\n query.where(options.filter);\r\n }\r\n\r\n return query.paginate({\r\n limit: options.limit,\r\n page: options.page,\r\n });\r\n}\r\n\r\nexport async function findLatest<TModel extends Model>(\r\n ModelClass: ChildModel<TModel>,\r\n filter?: Record<string, unknown>,\r\n): Promise<TModel[]> {\r\n const query = ModelClass.query();\r\n if (filter) {\r\n query.where(filter);\r\n }\r\n return (await query.latest()) as unknown as TModel[];\r\n}\r\n\r\nexport function increaseField<TModel extends Model>(\r\n ModelClass: ChildModel<TModel>,\r\n filter: Record<string, unknown>,\r\n field: string,\r\n amount: number,\r\n): Promise<number> {\r\n const query = ModelClass.query().where(filter);\r\n return query.increment(field, amount);\r\n}\r\n\r\nexport function decreaseField<TModel extends Model>(\r\n ModelClass: ChildModel<TModel>,\r\n filter: Record<string, unknown>,\r\n field: string,\r\n amount: number,\r\n): Promise<number> {\r\n const query = ModelClass.query().where(filter);\r\n return query.decrement(field, amount);\r\n}\r\n\r\n// The atomic/find-and-modify statics below forward their filter straight to\r\n// the driver — they never pass through where(), so they must run the same\r\n// operator-injection check themselves. Only the FILTER is sanitized; update\r\n// operators ($set/$inc/…) are the point of these APIs and stay untouched.\r\nexport async function performAtomic<TModel extends Model>(\r\n ModelClass: ChildModel<TModel>,\r\n filter: Record<string, unknown>,\r\n operations: UpdateOperations,\r\n): Promise<number> {\r\n const result = await ModelClass.getDriver().atomic(\r\n ModelClass.table,\r\n sanitizeFilter(filter),\r\n operations,\r\n );\r\n return result.modifiedCount;\r\n}\r\n\r\nexport async function updateById<TModel extends Model>(\r\n ModelClass: ChildModel<TModel>,\r\n id: string | number,\r\n data: Record<string, unknown>,\r\n): Promise<number> {\r\n const result = await ModelClass.getDriver().update(ModelClass.table, { [ModelClass.primaryKey]: id }, { $set: data });\r\n return result.modifiedCount;\r\n}\r\n\r\nexport async function findAndUpdateRecords<TModel extends Model>(\r\n ModelClass: ChildModel<TModel>,\r\n filter: Record<string, unknown>,\r\n update: UpdateOperations,\r\n): Promise<TModel[]> {\r\n await performAtomic(ModelClass, filter, update);\r\n return await ModelClass.query().where(filter).get();\r\n}\r\n\r\nexport async function findOneAndUpdateRecord<TModel extends Model>(\r\n ModelClass: ChildModel<TModel>,\r\n filter: Record<string, unknown>,\r\n update: UpdateOperations,\r\n): Promise<TModel | null> {\r\n const result = await ModelClass.getDriver().findOneAndUpdate(\r\n ModelClass.table,\r\n sanitizeFilter(filter),\r\n update,\r\n );\r\n if (!result) return null;\r\n const ctor = ModelClass as any;\r\n return new ctor(result);\r\n}\r\n\r\nexport async function findAndReplaceRecord<TModel extends Model>(\r\n ModelClass: ChildModel<TModel>,\r\n filter: Record<string, unknown>,\r\n document: Record<string, unknown>,\r\n): Promise<TModel | null> {\r\n const result = await ModelClass.getDriver().replace(\r\n ModelClass.table,\r\n sanitizeFilter(filter),\r\n document,\r\n );\r\n if (!result) return null;\r\n const ctor = ModelClass as any;\r\n return new ctor(result);\r\n}\r\n\r\nexport async function findOneAndDeleteRecord<TModel extends Model>(\r\n ModelClass: ChildModel<TModel>,\r\n filter: Record<string, unknown>,\r\n options?: Record<string, unknown>,\r\n): Promise<TModel | null> {\r\n const driver = ModelClass.getDriver();\r\n const result = await driver.findOneAndDelete(ModelClass.table, sanitizeFilter(filter), options);\r\n\r\n if (!result) {\r\n return null;\r\n }\r\n\r\n const model = ModelClass.hydrate(result as Record<string, unknown>);\r\n model.dirtyTracker.reset();\r\n return model;\r\n}\r\n\r\nexport function resolveDataSource<TModel extends Model>(\r\n ModelClass: ChildModel<TModel>,\r\n): DataSource {\r\n const ref = ModelClass.dataSource;\r\n let dataSource: DataSource;\r\n\r\n if (typeof ref === \"string\") {\r\n dataSource = dataSourceRegistry.get(ref);\r\n } else if (ref) {\r\n dataSource = ref;\r\n } else {\r\n dataSource = dataSourceRegistry.get();\r\n }\r\n\r\n if (!ModelClass.hasOwnProperty(\"_defaultsApplied\")) {\r\n const driverDefaults = dataSource.driver.modelDefaults || {};\r\n const dataSourceDefaults = dataSource.modelDefaults || {};\r\n\r\n const mergedDefaults = {\r\n ...driverDefaults,\r\n ...dataSourceDefaults,\r\n };\r\n\r\n if (Object.keys(mergedDefaults).length > 0) {\r\n (ModelClass as any).applyModelDefaults(mergedDefaults);\r\n }\r\n\r\n (ModelClass as any)._defaultsApplied = true;\r\n }\r\n\r\n // First data-source resolution is the earliest per-class hook every model\r\n // passes through — warn here (once) if the schema carries credential-shaped\r\n // fields that toJSON() would expose.\r\n warnUndeclaredSensitiveFields(ModelClass);\r\n\r\n return dataSource;\r\n}\r\n"],"mappings":"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"}
1
+ {"version":3,"file":"query-methods.mjs","names":["ctor"],"sources":["../../../../../../../../cascade/src/model/methods/query-methods.ts"],"sourcesContent":["import type {\r\n AtomicUpdate,\r\n AtomicUpdateOptions,\r\n FindOneAndUpdateOptions,\r\n PaginationOptions,\r\n PaginationResult,\r\n QueryBuilderContract,\r\n} from \"../../contracts\";\r\nimport type { DataSource } from \"../../data-source/data-source\";\r\nimport { dataSourceRegistry } from \"../../data-source/data-source-registry\";\r\nimport { sanitizeFilter } from \"../../utils/sanitize-filter\";\r\nimport type { ChildModel, GlobalScopeDefinition, Model } from \"../model\";\r\nimport { warnUndeclaredSensitiveFields } from \"./serialization-methods\";\r\n\r\nexport function buildQuery<TModel extends Model>(\r\n ModelClass: ChildModel<TModel>,\r\n BaseModel: typeof Model,\r\n): QueryBuilderContract<TModel> {\r\n const queryBuilder = ModelClass.newQueryBuilder<TModel>();\r\n const qb = queryBuilder;\r\n\r\n // Collect global scopes from base Model and child model\r\n const allGlobalScopes = new Map<string, GlobalScopeDefinition>([\r\n ...BaseModel.globalScopes,\r\n ...ModelClass.globalScopes,\r\n ]);\r\n\r\n queryBuilder.pendingGlobalScopes = allGlobalScopes;\r\n queryBuilder.availableLocalScopes = ModelClass.localScopes;\r\n queryBuilder.disabledGlobalScopes = new Set();\r\n queryBuilder.relationDefinitions = ModelClass.relations;\r\n queryBuilder.modelClass = ModelClass;\r\n\r\n ModelClass.events().emitFetching(queryBuilder, {\r\n table: ModelClass.table,\r\n modelClass: ModelClass,\r\n });\r\n\r\n queryBuilder.hydrate((data: any) => {\r\n return ModelClass.hydrate(data);\r\n });\r\n\r\n // Eager-loading runs inside the driver's `get()` so it works for any\r\n // builder construction path (Model.query, Model.newQueryBuilder, custom\r\n // subclassed builders). This hook only handles the model-level `fetched`\r\n // event emission.\r\n queryBuilder.onFetched(async (models: any[]) => {\r\n await ModelClass.events().emit(\"fetched\", models as any, {});\r\n });\r\n\r\n return queryBuilder;\r\n}\r\n\r\nexport function buildNewQueryBuilder<TModel extends Model>(\r\n ModelClass: ChildModel<TModel>,\r\n): QueryBuilderContract<TModel> {\r\n const dataSource = ModelClass.getDataSource();\r\n\r\n if (ModelClass.builder) {\r\n const BuilderClass = ModelClass.builder;\r\n return new BuilderClass(ModelClass.table, dataSource) as QueryBuilderContract<TModel>;\r\n }\r\n\r\n const queryBuilder = dataSource.driver.queryBuilder<TModel>(ModelClass.table);\r\n return queryBuilder;\r\n}\r\n\r\nexport async function findFirst<TModel extends Model>(\r\n ModelClass: ChildModel<TModel>,\r\n filter?: Record<string, unknown>,\r\n): Promise<TModel | null> {\r\n const query = ModelClass.query();\r\n if (filter) {\r\n query.where(filter);\r\n }\r\n return query.first();\r\n}\r\n\r\nexport async function findLast<TModel extends Model>(\r\n ModelClass: ChildModel<TModel>,\r\n filter?: Record<string, unknown>,\r\n): Promise<TModel | null> {\r\n const query = ModelClass.query();\r\n if (filter) {\r\n query.where(filter);\r\n }\r\n\r\n return query.last();\r\n}\r\n\r\nexport async function findAll<TModel extends Model>(\r\n ModelClass: ChildModel<TModel>,\r\n filter?: Record<string, unknown>,\r\n): Promise<TModel[]> {\r\n const query = ModelClass.query();\r\n if (filter) {\r\n query.where(filter);\r\n }\r\n return query.get();\r\n}\r\n\r\nexport function countRecords<TModel extends Model>(\r\n ModelClass: ChildModel<TModel>,\r\n filter?: Record<string, unknown>,\r\n): Promise<number> {\r\n const query = ModelClass.query();\r\n if (filter) {\r\n query.where(filter);\r\n }\r\n return query.count();\r\n}\r\n\r\nexport async function findById<TModel extends Model>(\r\n ModelClass: ChildModel<TModel>,\r\n id: string | number,\r\n): Promise<TModel | null> {\r\n const query = ModelClass.query();\r\n return query.where(ModelClass.primaryKey, id).first();\r\n}\r\n\r\nexport async function paginateRecords<TModel extends Model>(\r\n ModelClass: ChildModel<TModel>,\r\n options: PaginationOptions & { filter?: Record<string, unknown> } = {},\r\n): Promise<PaginationResult<TModel>> {\r\n const query = ModelClass.query();\r\n if (options.filter) {\r\n query.where(options.filter);\r\n }\r\n\r\n return query.paginate({\r\n limit: options.limit,\r\n page: options.page,\r\n });\r\n}\r\n\r\nexport async function findLatest<TModel extends Model>(\r\n ModelClass: ChildModel<TModel>,\r\n filter?: Record<string, unknown>,\r\n): Promise<TModel[]> {\r\n const query = ModelClass.query();\r\n if (filter) {\r\n query.where(filter);\r\n }\r\n return (await query.latest()) as unknown as TModel[];\r\n}\r\n\r\nexport function increaseField<TModel extends Model>(\r\n ModelClass: ChildModel<TModel>,\r\n filter: Record<string, unknown>,\r\n field: string,\r\n amount: number,\r\n): Promise<number> {\r\n const query = ModelClass.query().where(filter);\r\n return query.increment(field, amount);\r\n}\r\n\r\nexport function decreaseField<TModel extends Model>(\r\n ModelClass: ChildModel<TModel>,\r\n filter: Record<string, unknown>,\r\n field: string,\r\n amount: number,\r\n): Promise<number> {\r\n const query = ModelClass.query().where(filter);\r\n return query.decrement(field, amount);\r\n}\r\n\r\n// The atomic/find-and-modify statics below forward their filter straight to\r\n// the driver — they never pass through where(), so they must run the same\r\n// operator-injection check themselves. Only the FILTER is sanitized; update\r\n// operators ($set/$inc/…) are the point of these APIs and stay untouched.\r\n//\r\n// `trustedFilter` is the explicit, code-authored opt-out: it lets a conditional\r\n// filter such as `{ used: { $lt: 10 } }` through. It is stripped before the\r\n// options reach the driver.\r\nfunction resolveFilter(\r\n filter: Record<string, unknown>,\r\n options: AtomicUpdateOptions | undefined,\r\n): Record<string, unknown> {\r\n return options?.trustedFilter ? filter : sanitizeFilter(filter);\r\n}\r\n\r\nfunction toDriverOptions<TOptions extends AtomicUpdateOptions>(\r\n options: TOptions | undefined,\r\n): Omit<TOptions, \"trustedFilter\"> | undefined {\r\n if (!options) {\r\n return undefined;\r\n }\r\n\r\n const { trustedFilter: _trustedFilter, ...rest } = options;\r\n\r\n return rest;\r\n}\r\n\r\n/**\r\n * Run an atomic update and return the number of documents modified plus the\r\n * number inserted by an `upsert`.\r\n */\r\nexport async function performAtomic<TModel extends Model>(\r\n ModelClass: ChildModel<TModel>,\r\n filter: Record<string, unknown>,\r\n operations: AtomicUpdate,\r\n options?: AtomicUpdateOptions,\r\n): Promise<number> {\r\n const result = await ModelClass.getDriver().atomic(\r\n ModelClass.table,\r\n resolveFilter(filter, options),\r\n operations,\r\n toDriverOptions(options),\r\n );\r\n\r\n return result.modifiedCount + (result.upsertedCount ?? 0);\r\n}\r\n\r\nexport async function updateById<TModel extends Model>(\r\n ModelClass: ChildModel<TModel>,\r\n id: string | number,\r\n data: Record<string, unknown>,\r\n): Promise<number> {\r\n const result = await ModelClass.getDriver().update(ModelClass.table, { [ModelClass.primaryKey]: id }, { $set: data });\r\n return result.modifiedCount;\r\n}\r\n\r\nexport async function findAndUpdateRecords<TModel extends Model>(\r\n ModelClass: ChildModel<TModel>,\r\n filter: Record<string, unknown>,\r\n update: AtomicUpdate,\r\n options?: Omit<AtomicUpdateOptions, \"trustedFilter\">,\r\n): Promise<TModel[]> {\r\n await performAtomic(ModelClass, filter, update, { ...options, trustedFilter: false });\r\n return await ModelClass.query().where(filter).get();\r\n}\r\n\r\nexport async function findOneAndUpdateRecord<TModel extends Model>(\r\n ModelClass: ChildModel<TModel>,\r\n filter: Record<string, unknown>,\r\n update: AtomicUpdate,\r\n options?: FindOneAndUpdateOptions,\r\n): Promise<TModel | null> {\r\n const result = await ModelClass.getDriver().findOneAndUpdate(\r\n ModelClass.table,\r\n resolveFilter(filter, options),\r\n update,\r\n toDriverOptions(options),\r\n );\r\n if (!result) return null;\r\n const ctor = ModelClass as any;\r\n return new ctor(result);\r\n}\r\n\r\nexport async function findAndReplaceRecord<TModel extends Model>(\r\n ModelClass: ChildModel<TModel>,\r\n filter: Record<string, unknown>,\r\n document: Record<string, unknown>,\r\n): Promise<TModel | null> {\r\n const result = await ModelClass.getDriver().replace(\r\n ModelClass.table,\r\n sanitizeFilter(filter),\r\n document,\r\n );\r\n if (!result) return null;\r\n const ctor = ModelClass as any;\r\n return new ctor(result);\r\n}\r\n\r\nexport async function findOneAndDeleteRecord<TModel extends Model>(\r\n ModelClass: ChildModel<TModel>,\r\n filter: Record<string, unknown>,\r\n options?: Record<string, unknown>,\r\n): Promise<TModel | null> {\r\n const driver = ModelClass.getDriver();\r\n const result = await driver.findOneAndDelete(ModelClass.table, sanitizeFilter(filter), options);\r\n\r\n if (!result) {\r\n return null;\r\n }\r\n\r\n const model = ModelClass.hydrate(result as Record<string, unknown>);\r\n model.dirtyTracker.reset();\r\n return model;\r\n}\r\n\r\nexport function resolveDataSource<TModel extends Model>(\r\n ModelClass: ChildModel<TModel>,\r\n): DataSource {\r\n const ref = ModelClass.dataSource;\r\n let dataSource: DataSource;\r\n\r\n if (typeof ref === \"string\") {\r\n dataSource = dataSourceRegistry.get(ref);\r\n } else if (ref) {\r\n dataSource = ref;\r\n } else {\r\n dataSource = dataSourceRegistry.get();\r\n }\r\n\r\n if (!ModelClass.hasOwnProperty(\"_defaultsApplied\")) {\r\n const driverDefaults = dataSource.driver.modelDefaults || {};\r\n const dataSourceDefaults = dataSource.modelDefaults || {};\r\n\r\n const mergedDefaults = {\r\n ...driverDefaults,\r\n ...dataSourceDefaults,\r\n };\r\n\r\n if (Object.keys(mergedDefaults).length > 0) {\r\n (ModelClass as any).applyModelDefaults(mergedDefaults);\r\n }\r\n\r\n (ModelClass as any)._defaultsApplied = true;\r\n }\r\n\r\n // First data-source resolution is the earliest per-class hook every model\r\n // passes through — warn here (once) if the schema carries credential-shaped\r\n // fields that toJSON() would expose.\r\n warnUndeclaredSensitiveFields(ModelClass);\r\n\r\n return dataSource;\r\n}\r\n"],"mappings":"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"}
@@ -8,7 +8,7 @@ import { ModelSnapshot } from "../relations/relation-hydrator.mjs";
8
8
  import { ModelSyncOperationContract } from "../sync/types.mjs";
9
9
  import { CreateManyOptions } from "./methods/write-methods.mjs";
10
10
  import { PaginationOptions, PaginationResult, QueryBuilderContract, WhereCallback, WhereObject, WhereOperator } from "../contracts/query-builder.contract.mjs";
11
- import { DriverContract, RawQueryResult, UpdateOperations } from "../contracts/database-driver.contract.mjs";
11
+ import { AtomicUpdate, AtomicUpdateOptions, DriverContract, FindOneAndUpdateOptions, RawQueryResult } from "../contracts/database-driver.contract.mjs";
12
12
  import { RemoverResult } from "../contracts/database-remover.contract.mjs";
13
13
  import { WriterOptions } from "../contracts/database-writer.contract.mjs";
14
14
  import { DataSource } from "../data-source/data-source.mjs";
@@ -1272,14 +1272,20 @@ declare abstract class Model<TSchema extends ModelSchema = ModelSchema> {
1272
1272
  */
1273
1273
  static decrease<TModel extends Model = Model>(this: ChildModel<TModel>, filter: Record<string, unknown>, field: string, amount: number): Promise<number>;
1274
1274
  /**
1275
- * Perform atomic operation
1276
- * Example
1275
+ * Perform an atomic update on every document/row matching the filter.
1277
1276
  *
1277
+ * @param filter - Filter conditions (operator keys rejected unless `trustedFilter`)
1278
+ * @param operations - Update operators, or an aggregation pipeline (MongoDB only)
1279
+ * @param options - `upsert`, `arrayFilters` (MongoDB only), `trustedFilter`
1280
+ * @returns Number of documents modified plus the number inserted by an upsert
1281
+ *
1282
+ * @example
1278
1283
  * ```typescript
1279
- * const user = await User.atomic({id: 1}, {$inc: {age: 1}})
1280
- * Returns user model with updated age
1284
+ * await User.atomic({ id: 1 }, { $inc: { age: 1 } });
1285
+ * await Counter.atomic({ key: "signups" }, { $inc: { count: 1 } }, { upsert: true });
1286
+ * ```
1281
1287
  */
1282
- static atomic<TModel extends Model = Model>(this: ChildModel<TModel>, filter: Record<string, unknown>, operations: UpdateOperations): Promise<number>;
1288
+ static atomic<TModel extends Model = Model>(this: ChildModel<TModel>, filter: Record<string, unknown>, operations: AtomicUpdate, options?: AtomicUpdateOptions): Promise<number>;
1283
1289
  /**
1284
1290
  * Perform an atomic update for the given id
1285
1291
  */
@@ -1287,17 +1293,28 @@ declare abstract class Model<TSchema extends ModelSchema = ModelSchema> {
1287
1293
  /**
1288
1294
  * Find one and update multiple records that matches the provided filter and return the updated record
1289
1295
  * @param filter - Filter conditions
1290
- * @param update - Update operations ($set, $unset, $inc)
1296
+ * @param update - Update operators, or an aggregation pipeline (MongoDB only)
1297
+ * @param options - `upsert`, `arrayFilters` (MongoDB only)
1291
1298
  * @returns The updated records
1292
1299
  */
1293
- static findAndUpdate<TModel extends Model = Model>(this: ChildModel<TModel>, filter: Record<string, unknown>, update: UpdateOperations): Promise<TModel[]>;
1300
+ static findAndUpdate<TModel extends Model = Model>(this: ChildModel<TModel>, filter: Record<string, unknown>, update: AtomicUpdate, options?: Omit<AtomicUpdateOptions, "trustedFilter">): Promise<TModel[]>;
1294
1301
  /**
1295
1302
  * Find one and update a single record that matches the provided filter and return the updated record
1296
1303
  * @param filter - Filter conditions
1297
- * @param update - Update operations ($set, $unset, $inc)
1298
- * @returns The updated record or null
1304
+ * @param update - Update operators, or an aggregation pipeline (MongoDB only)
1305
+ * @param options - `upsert`, `returnDocument` (default `"after"`), `arrayFilters`, `trustedFilter`
1306
+ * @returns The record after (or before) the update, or null when nothing matched
1307
+ *
1308
+ * @example
1309
+ * ```typescript
1310
+ * const counter = await Counter.findOneAndUpdate(
1311
+ * { key: "signups" },
1312
+ * { $inc: { count: 1 }, $setOnInsert: { startedAt: new Date() } },
1313
+ * { upsert: true },
1314
+ * );
1315
+ * ```
1299
1316
  */
1300
- static findOneAndUpdate<TModel extends Model = Model>(this: ChildModel<TModel>, filter: Record<string, unknown>, update: UpdateOperations): Promise<TModel | null>;
1317
+ static findOneAndUpdate<TModel extends Model = Model>(this: ChildModel<TModel>, filter: Record<string, unknown>, update: AtomicUpdate, options?: FindOneAndUpdateOptions): Promise<TModel | null>;
1301
1318
  /**
1302
1319
  * Find and replace the entire document that matches the provided filter and return the replaced document
1303
1320
  */
@@ -1 +1 @@
1
- {"version":3,"file":"model.d.mts","names":[],"sources":["../../../../../../../cascade/src/model/model.ts"],"mappings":"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"}
1
+ {"version":3,"file":"model.d.mts","names":[],"sources":["../../../../../../../cascade/src/model/model.ts"],"mappings":"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"}
@@ -1196,15 +1196,21 @@ var Model = class Model {
1196
1196
  return decreaseField(this, filter, field, amount);
1197
1197
  }
1198
1198
  /**
1199
- * Perform atomic operation
1200
- * Example
1199
+ * Perform an atomic update on every document/row matching the filter.
1201
1200
  *
1201
+ * @param filter - Filter conditions (operator keys rejected unless `trustedFilter`)
1202
+ * @param operations - Update operators, or an aggregation pipeline (MongoDB only)
1203
+ * @param options - `upsert`, `arrayFilters` (MongoDB only), `trustedFilter`
1204
+ * @returns Number of documents modified plus the number inserted by an upsert
1205
+ *
1206
+ * @example
1202
1207
  * ```typescript
1203
- * const user = await User.atomic({id: 1}, {$inc: {age: 1}})
1204
- * Returns user model with updated age
1208
+ * await User.atomic({ id: 1 }, { $inc: { age: 1 } });
1209
+ * await Counter.atomic({ key: "signups" }, { $inc: { count: 1 } }, { upsert: true });
1210
+ * ```
1205
1211
  */
1206
- static async atomic(filter, operations) {
1207
- return performAtomic(this, filter, operations);
1212
+ static async atomic(filter, operations, options) {
1213
+ return performAtomic(this, filter, operations, options);
1208
1214
  }
1209
1215
  /**
1210
1216
  * Perform an atomic update for the given id
@@ -1215,20 +1221,31 @@ var Model = class Model {
1215
1221
  /**
1216
1222
  * Find one and update multiple records that matches the provided filter and return the updated record
1217
1223
  * @param filter - Filter conditions
1218
- * @param update - Update operations ($set, $unset, $inc)
1224
+ * @param update - Update operators, or an aggregation pipeline (MongoDB only)
1225
+ * @param options - `upsert`, `arrayFilters` (MongoDB only)
1219
1226
  * @returns The updated records
1220
1227
  */
1221
- static async findAndUpdate(filter, update) {
1222
- return findAndUpdateRecords(this, filter, update);
1228
+ static async findAndUpdate(filter, update, options) {
1229
+ return findAndUpdateRecords(this, filter, update, options);
1223
1230
  }
1224
1231
  /**
1225
1232
  * Find one and update a single record that matches the provided filter and return the updated record
1226
1233
  * @param filter - Filter conditions
1227
- * @param update - Update operations ($set, $unset, $inc)
1228
- * @returns The updated record or null
1234
+ * @param update - Update operators, or an aggregation pipeline (MongoDB only)
1235
+ * @param options - `upsert`, `returnDocument` (default `"after"`), `arrayFilters`, `trustedFilter`
1236
+ * @returns The record after (or before) the update, or null when nothing matched
1237
+ *
1238
+ * @example
1239
+ * ```typescript
1240
+ * const counter = await Counter.findOneAndUpdate(
1241
+ * { key: "signups" },
1242
+ * { $inc: { count: 1 }, $setOnInsert: { startedAt: new Date() } },
1243
+ * { upsert: true },
1244
+ * );
1245
+ * ```
1229
1246
  */
1230
- static async findOneAndUpdate(filter, update) {
1231
- return findOneAndUpdateRecord(this, filter, update);
1247
+ static async findOneAndUpdate(filter, update, options) {
1248
+ return findOneAndUpdateRecord(this, filter, update, options);
1232
1249
  }
1233
1250
  /**
1234
1251
  * Find and replace the entire document that matches the provided filter and return the replaced document