From bf6c9a4f5a7fc8a45eaef3613785480c14814856 Mon Sep 17 00:00:00 2001 From: Yiming Cao Date: Thu, 12 Mar 2026 16:46:57 -0700 Subject: [PATCH 01/41] refactor(orm): move validateInput logic into InputValidator (#2480) Co-authored-by: Claude Opus 4.6 Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: Yiming Cao --- packages/orm/src/client/client-impl.ts | 20 +++- packages/orm/src/client/contract.ts | 3 +- .../src/client/crud/validator/validator.ts | 20 +++- packages/orm/src/client/options.ts | 7 +- packages/orm/src/client/zod/factory.ts | 5 +- .../orm/validation/custom-validation.test.ts | 91 ++++++++++++++++++- 6 files changed, 131 insertions(+), 15 deletions(-) diff --git a/packages/orm/src/client/client-impl.ts b/packages/orm/src/client/client-impl.ts index 1046d0ca8..52fc9c772 100644 --- a/packages/orm/src/client/client-impl.ts +++ b/packages/orm/src/client/client-impl.ts @@ -120,7 +120,9 @@ export class ClientImpl { } this.kysely = new Kysely(this.kyselyProps); - this.inputValidator = baseClient?.inputValidator ?? new InputValidator(this as any); + this.inputValidator = + baseClient?.inputValidator ?? + new InputValidator(this as any, { enabled: this.$options.validateInput !== false }); return createClientProxy(this); } @@ -348,7 +350,9 @@ export class ClientImpl { const newClient = new ClientImpl(this.schema, newOptions, this); // create a new validator to have a fresh schema cache, because plugins may extend the // query args schemas - newClient.inputValidator = new InputValidator(newClient as any); + newClient.inputValidator = new InputValidator(newClient as any, { + enabled: newOptions.validateInput !== false, + }); return newClient; } @@ -367,7 +371,9 @@ export class ClientImpl { const newClient = new ClientImpl(this.schema, newOptions, this); // create a new validator to have a fresh schema cache, because plugins may // extend the query args schemas - newClient.inputValidator = new InputValidator(newClient as any); + newClient.inputValidator = new InputValidator(newClient as any, { + enabled: newClient.$options.validateInput !== false, + }); return newClient; } @@ -380,7 +386,9 @@ export class ClientImpl { const newClient = new ClientImpl(this.schema, newOptions, this); // create a new validator to have a fresh schema cache, because plugins may // extend the query args schemas - newClient.inputValidator = new InputValidator(newClient as any); + newClient.inputValidator = new InputValidator(newClient as any, { + enabled: newOptions.validateInput !== false, + }); return newClient; } @@ -400,7 +408,9 @@ export class ClientImpl { $setOptions>(options: Options): ClientContract { const newClient = new ClientImpl(this.schema, options as ClientOptions, this); // create a new validator to have a fresh schema cache, because options may change validation settings - newClient.inputValidator = new InputValidator(newClient as any); + newClient.inputValidator = new InputValidator(newClient as any, { + enabled: newClient.$options.validateInput !== false, + }); return newClient as unknown as ClientContract; } diff --git a/packages/orm/src/client/contract.ts b/packages/orm/src/client/contract.ts index c6b772aa4..da3fd7790 100644 --- a/packages/orm/src/client/contract.ts +++ b/packages/orm/src/client/contract.ts @@ -138,8 +138,7 @@ export type ClientContract< ): ClientContract; /** - * Returns a new client enabling/disabling input validations expressed with attributes like - * `@email`, `@regex`, `@@validate`, etc. + * Returns a new client enabling/disabling query args validation. * * @deprecated Use {@link $setOptions} instead. */ diff --git a/packages/orm/src/client/crud/validator/validator.ts b/packages/orm/src/client/crud/validator/validator.ts index 1acba6f15..001302152 100644 --- a/packages/orm/src/client/crud/validator/validator.ts +++ b/packages/orm/src/client/crud/validator/validator.ts @@ -25,11 +25,23 @@ import { ZodSchemaFactory } from '../../zod/factory'; type GetSchemaFunc = (model: GetModels) => ZodType; +export type InputValidatorOptions = { + /** + * Whether validation is enabled. Defaults to `true`. + */ + enabled?: boolean; +}; + export class InputValidator { readonly zodFactory: ZodSchemaFactory; + private readonly enabled: boolean; - constructor(private readonly client: ClientContract) { + constructor( + private readonly client: ClientContract, + options?: InputValidatorOptions, + ) { this.zodFactory = new ZodSchemaFactory(client); + this.enabled = options?.enabled !== false; } // #region Entry points @@ -183,6 +195,9 @@ export class InputValidator { // TODO: turn it into a Zod schema and cache validateProcedureInput(proc: string, input: unknown): unknown { + if (!this.enabled) { + return input; + } const procDef = (this.client.$schema.procedures ?? {})[proc] as ProcedureDef | undefined; invariant(procDef, `Procedure "${proc}" not found in schema`); @@ -270,6 +285,9 @@ export class InputValidator { // #region Validation helpers private validate(model: GetModels, operation: string, getSchema: GetSchemaFunc, args: unknown) { + if (!this.enabled) { + return args as T; + } const schema = getSchema(model); const { error, data } = schema.safeParse(args); if (error) { diff --git a/packages/orm/src/client/options.ts b/packages/orm/src/client/options.ts index e2622d6cf..c0b37c0bd 100644 --- a/packages/orm/src/client/options.ts +++ b/packages/orm/src/client/options.ts @@ -193,8 +193,11 @@ export type ClientOptions = QueryOptions & { fixPostgresTimezone?: boolean; /** - * Whether to enable input validations expressed with attributes like `@email`, `@regex`, - * `@@validate`, etc. Defaults to `true`. + * Whether to enable query args validation. Defaults to `true`. + * + * **USE WITH CAUTION**, as setting it to `false` will allow malformed input to pass through, causing + * incorrect SQL generation or runtime errors. If you use validation attributes like `@email`, `@regex`, + * etc., in ZModel, they will be ignored too. */ validateInput?: boolean; diff --git a/packages/orm/src/client/zod/factory.ts b/packages/orm/src/client/zod/factory.ts index 0f0eb61e8..e985b8df1 100644 --- a/packages/orm/src/client/zod/factory.ts +++ b/packages/orm/src/client/zod/factory.ts @@ -108,6 +108,7 @@ export class ZodSchemaFactory< private readonly allFilterKinds = [...new Set(Object.values(FILTER_PROPERTY_TO_KIND))]; private readonly schema: Schema; private readonly options: Options; + private readonly extraValidationsEnabled = true; constructor(client: ClientContract); constructor(schema: Schema, options?: Options); @@ -125,10 +126,6 @@ export class ZodSchemaFactory< return this.options.plugins ?? []; } - private get extraValidationsEnabled() { - return this.options.validateInput !== false; - } - private shouldIncludeRelations(options?: CreateSchemaOptions): boolean { return options?.relationDepth === undefined || options.relationDepth > 0; } diff --git a/tests/e2e/orm/validation/custom-validation.test.ts b/tests/e2e/orm/validation/custom-validation.test.ts index 565581084..35df71b60 100644 --- a/tests/e2e/orm/validation/custom-validation.test.ts +++ b/tests/e2e/orm/validation/custom-validation.test.ts @@ -116,7 +116,7 @@ describe('Custom validation tests', () => { } }); - it('allows disabling validation', async () => { + it('disabling validation makes validation attributes ineffective', async () => { const db = await createTestClient( ` model User { @@ -180,6 +180,95 @@ describe('Custom validation tests', () => { ).toBeRejectedByValidation(); }); + it('disabling validation skips structural validation for all CRUD operations', async () => { + const db = await createTestClient( + ` + model User { + id Int @id @default(autoincrement()) + email String + name String + } + `, + ); + + const dbNoValidation = db.$setOptions({ ...db.$options, validateInput: false }); + + // Helper: assert that a promise rejects but NOT with a Zod-based validation error + // (the cause of a Zod validation error is a ZodError) + const expectNonValidationError = async (promise: Promise) => { + try { + await promise; + } catch (err: any) { + if (err.reason === 'invalid-input') { + expect(err.cause?.constructor?.name).not.toBe('ZodError'); + } + return; + } + // resolving is also acceptable — it means validation was skipped and the ORM handled it + }; + + // create - missing required "data" is normally rejected by Zod validation + await expect(db.user.create({} as any)).toBeRejectedByValidation(); + // with validation disabled, it skips Zod validation + await expectNonValidationError(dbNoValidation.user.create({} as any)); + + // update - missing required "where" is normally rejected by Zod validation + await expect(db.user.update({ data: { email: 'new@b.com' } } as any)).toBeRejectedByValidation(); + await expectNonValidationError(dbNoValidation.user.update({ data: { email: 'new@b.com' } } as any)); + + // delete - missing required "where" is normally rejected by Zod validation + await expect(db.user.delete({} as any)).toBeRejectedByValidation(); + await expectNonValidationError(dbNoValidation.user.delete({} as any)); + + // upsert - missing required fields is normally rejected by Zod validation + await expect(db.user.upsert({} as any)).toBeRejectedByValidation(); + await expectNonValidationError(dbNoValidation.user.upsert({} as any)); + }); + + it('$setInputValidation toggles validation', async () => { + const db = await createTestClient( + ` + model Item { + id Int @id @default(autoincrement()) + url String @url + } + `, + ); + + // validation enabled by default + await expect(db.item.create({ data: { url: 'not-a-url' } })).toBeRejectedByValidation(); + + // disable via $setInputValidation + const dbDisabled = db.$setInputValidation(false); + await expect(dbDisabled.item.create({ data: { url: 'not-a-url' } })).toResolveTruthy(); + + // re-enable via $setInputValidation + const dbReEnabled = dbDisabled.$setInputValidation(true); + await expect(dbReEnabled.item.create({ data: { url: 'still-not-a-url' } })).toBeRejectedByValidation(); + + // valid data should work with re-enabled validation + await expect(dbReEnabled.item.create({ data: { url: 'https://example.com' } })).toResolveTruthy(); + }); + + it('disabling validation at client creation time', async () => { + const db = await createTestClient( + ` + model Post { + id Int @id @default(autoincrement()) + title String @length(min: 5) + } + `, + { validateInput: false }, + ); + + // should skip validation since validateInput is false from the start + await expect(db.post.create({ data: { id: 1, title: 'ab' } })).toResolveTruthy(); + + // re-enable validation + const dbValidated = db.$setInputValidation(true); + await expect(dbValidated.post.create({ data: { title: 'ab' } })).toBeRejectedByValidation(); + }); + it('checks arg type for validation functions', async () => { // length() on relation field await loadSchemaWithError( From ae407ac040fcfc1baf74462f748ec77927244aed Mon Sep 17 00:00:00 2001 From: ymc9 <104139426+ymc9@users.noreply.github.com> Date: Thu, 12 Mar 2026 17:16:57 -0700 Subject: [PATCH 02/41] feat(orm): add $diagnostics() method for cache stats and slow query tracking Introduces a new `$diagnostics()` method on ZenStackClient that returns Zod schema cache statistics and slow query information, helping users monitor and debug ORM performance. - Add `diagnostics` option to `ClientOptions` with `slowQueryThresholdMs` and `slowQueryMaxRecords` settings - Track slow queries in `ZenStackQueryExecutor` when diagnostics is enabled - Share slow query collection across derived clients (via $setAuth, $setOptions, $use, transactions, etc.) - Cap slow query records with an eviction policy that keeps the slowest queries (default max: 100) - Validate diagnostics config with Zod in ClientImpl constructor - Add `Diagnostics`, `QueryInfo`, and `ZodCacheStats` types - Add e2e tests covering all diagnostics features Co-Authored-By: Claude Opus 4.6 --- packages/orm/src/client/client-impl.ts | 81 ++++++--- packages/orm/src/client/contract.ts | 6 + packages/orm/src/client/diagnostics.ts | 44 +++++ .../executor/zenstack-query-executor.ts | 42 ++++- packages/orm/src/client/options.ts | 21 ++- packages/orm/src/client/zod/factory.ts | 72 ++++++-- tests/e2e/orm/client-api/diagnostics.test.ts | 165 ++++++++++++++++++ 7 files changed, 382 insertions(+), 49 deletions(-) create mode 100644 packages/orm/src/client/diagnostics.ts create mode 100644 tests/e2e/orm/client-api/diagnostics.test.ts diff --git a/packages/orm/src/client/client-impl.ts b/packages/orm/src/client/client-impl.ts index 1046d0ca8..d389974d8 100644 --- a/packages/orm/src/client/client-impl.ts +++ b/packages/orm/src/client/client-impl.ts @@ -10,9 +10,11 @@ import { Transaction, type KyselyProps, } from 'kysely'; +import z from 'zod'; import type { ProcedureDef, SchemaDef } from '../schema'; import type { AnyKysely } from '../utils/kysely-utils'; import type { UnwrapTuplePromises } from '../utils/type-utils'; +import { formatError } from '../utils/zod-utils'; import type { AuthType, ClientConstructor, @@ -31,6 +33,7 @@ import { FindOperationHandler } from './crud/operations/find'; import { GroupByOperationHandler } from './crud/operations/group-by'; import { UpdateOperationHandler } from './crud/operations/update'; import { InputValidator } from './crud/validator'; +import type { Diagnostics, QueryInfo } from './diagnostics'; import { createConfigError, createNotFoundError, createNotSupportedError } from './errors'; import { ZenStackDriver } from './executor/zenstack-driver'; import { ZenStackQueryExecutor } from './executor/zenstack-query-executor'; @@ -60,6 +63,7 @@ export class ClientImpl { readonly kyselyProps: KyselyProps; private auth: AuthType | undefined; inputValidator: InputValidator; + readonly slowQueries: QueryInfo[] = []; constructor( private readonly schema: SchemaDef, @@ -75,10 +79,7 @@ export class ClientImpl { ...this.$options.functions, }; - if (!baseClient && !options.skipValidationForComputedFields) { - // validate computed fields configuration once for the root client - this.validateComputedFieldsConfig(); - } + this.validateOptions(baseClient, options); // here we use kysely's props constructor so we can pass a custom query executor if (baseClient) { @@ -96,6 +97,7 @@ export class ClientImpl { }; this.kyselyRaw = baseClient.kyselyRaw; this.auth = baseClient.auth; + this.slowQueries = baseClient.slowQueries; } else { const driver = new ZenStackDriver(options.dialect.createDriver(), new Log(this.$options.log ?? [])); const compiler = options.dialect.createQueryCompiler(); @@ -125,37 +127,30 @@ export class ClientImpl { return createClientProxy(this); } - get $qb() { - return this.kysely; - } - - get $qbRaw() { - return this.kyselyRaw; - } - - get $zod() { - return this.inputValidator.zodFactory; - } - - get isTransaction() { - return this.kysely.isTransaction; - } + private validateOptions(baseClient: ClientImpl | undefined, options: ClientOptions) { + if (!baseClient && !options.skipValidationForComputedFields) { + // validate computed fields configuration once for the root client + this.validateComputedFieldsConfig(options); + } - /** - * Create a new client with a new query executor. - */ - withExecutor(executor: QueryExecutor) { - return new ClientImpl(this.schema, this.$options, this, executor); + if (options.diagnostics) { + const diagnosticsSchema = z.object({ + slowQueryThresholdMs: z.int().nonnegative().optional(), + slowQueryMaxRecords: z.int().nonnegative().optional(), + }); + const parseResult = diagnosticsSchema.safeParse(options.diagnostics); + if (!parseResult.success) { + throw createConfigError(`Invalid diagnostics configuration: ${formatError(parseResult.error)}`); + } + } } /** * Validates that all computed fields in the schema have corresponding configurations. */ - private validateComputedFieldsConfig() { + private validateComputedFieldsConfig(options: ClientOptions) { const computedFieldsConfig = - 'computedFields' in this.$options - ? (this.$options.computedFields as Record | undefined) - : undefined; + 'computedFields' in options ? (options.computedFields as Record | undefined) : undefined; for (const [modelName, modelDef] of Object.entries(this.$schema.models)) { if (modelDef.computedFields) { @@ -181,6 +176,29 @@ export class ClientImpl { } } + get $qb() { + return this.kysely; + } + + get $qbRaw() { + return this.kyselyRaw; + } + + get $zod() { + return this.inputValidator.zodFactory; + } + + get isTransaction() { + return this.kysely.isTransaction; + } + + /** + * Create a new client with a new query executor. + */ + withExecutor(executor: QueryExecutor) { + return new ClientImpl(this.schema, this.$options, this, executor); + } + // overload for interactive transaction $transaction( callback: (tx: ClientContract) => Promise, @@ -412,6 +430,13 @@ export class ClientImpl { return this.$setOptions(newOptions); } + async $diagnostics(): Promise { + return { + zodCache: this.inputValidator.zodFactory.cacheStats, + slowQueries: [...this.slowQueries], + }; + } + $executeRaw(query: TemplateStringsArray, ...values: any[]) { return createZenStackPromise(async () => { const result = await sql(query, ...values).execute(this.kysely); diff --git a/packages/orm/src/client/contract.ts b/packages/orm/src/client/contract.ts index c6b772aa4..a28c2a87a 100644 --- a/packages/orm/src/client/contract.ts +++ b/packages/orm/src/client/contract.ts @@ -39,6 +39,7 @@ import type { UpdateManyArgs, UpsertArgs, } from './crud-types'; +import type { Diagnostics } from './diagnostics'; import type { ClientOptions, QueryOptions } from './options'; import type { ExtClientMembersBase, ExtQueryArgsBase, RuntimePlugin } from './plugin'; import type { ZenStackPromise } from './promise'; @@ -212,6 +213,11 @@ export type ClientContract< * @private */ $pushSchema(): Promise; + + /** + * Returns diagnostics information such as cache and slow query statistics. + */ + $diagnostics(): Promise; } & { [Key in GetSlicedModels as Uncapitalize]: ModelOperations; } & ProcedureOperations & diff --git a/packages/orm/src/client/diagnostics.ts b/packages/orm/src/client/diagnostics.ts new file mode 100644 index 000000000..c1e290121 --- /dev/null +++ b/packages/orm/src/client/diagnostics.ts @@ -0,0 +1,44 @@ +/** + * Zod schema cache statistics. + */ +export interface ZodCacheStats { + /** + * Number of cached Zod schemas. + */ + size: number; + + /** + * Keys of the cached Zod schemas. + */ + keys: string[]; +} + +/** + * Information about a query, used for diagnostics. + */ +export interface QueryInfo { + /** + * Duration of the query in milliseconds. + */ + durationMs: number; + + /** + * SQL statement of the query. + */ + sql: string; +} + +/** + * ZenStackClient diagnostics. + */ +export interface Diagnostics { + /** + * Statistics about the Zod schemas (used for query args validation) cache. + */ + zodCache: ZodCacheStats; + + /** + * Slow queries. + */ + slowQueries: QueryInfo[]; +} diff --git a/packages/orm/src/client/executor/zenstack-query-executor.ts b/packages/orm/src/client/executor/zenstack-query-executor.ts index 52afde140..59b37ae1e 100644 --- a/packages/orm/src/client/executor/zenstack-query-executor.ts +++ b/packages/orm/src/client/executor/zenstack-query-executor.ts @@ -31,7 +31,7 @@ import { } from 'kysely'; import { match } from 'ts-pattern'; import type { ModelDef, SchemaDef, TypeDefDef } from '../../schema'; -import { type ClientImpl } from '../client-impl'; +import type { ClientImpl } from '../client-impl'; import { TransactionIsolationLevel, type ClientContract } from '../contract'; import { getCrudDialect } from '../crud/dialects'; import type { BaseCrudDialect } from '../crud/dialects/base-dialect'; @@ -70,6 +70,8 @@ type CallAfterMutationHooksArgs = { afterMutationEntities?: Record[]; }; +const DEFAULT_MAX_SLOW_RECORDS = 100; + export class ZenStackQueryExecutor extends DefaultQueryExecutor { // #region constructor, fields and props @@ -673,8 +675,16 @@ In such cases, ZenStack cannot reliably determine the IDs of the mutated entitie compiledQuery = { ...compiledQuery, parameters: parameters }; } + const trackSlowQuery = this.options.diagnostics !== undefined; + const startTime = trackSlowQuery ? performance.now() : undefined; + try { const result = await connection.executeQuery(compiledQuery); + + if (startTime !== undefined) { + this.trackSlowQuery(compiledQuery, startTime); + } + return this.ensureProperQueryResult(compiledQuery.query, result); } catch (err) { throw createDBQueryError( @@ -686,6 +696,36 @@ In such cases, ZenStack cannot reliably determine the IDs of the mutated entitie } } + private trackSlowQuery(compiledQuery: CompiledQuery, startTime: number) { + const durationMs = performance.now() - startTime; + const thresholdMs = this.options.diagnostics?.slowQueryThresholdMs; + if (thresholdMs === undefined || durationMs < thresholdMs) { + return; + } + + const slowQueries = this.client.slowQueries; + const maxRecords = this.options.diagnostics?.slowQueryMaxRecords ?? DEFAULT_MAX_SLOW_RECORDS; + if (maxRecords <= 0) { + return; + } + + if (slowQueries.length >= maxRecords) { + // find and remove the entry with the lowest duration + let minIndex = 0; + for (let i = 1; i < slowQueries.length; i++) { + if (slowQueries[i]!.durationMs < slowQueries[minIndex]!.durationMs) { + minIndex = i; + } + } + // only replace if the new query is slower than the minimum + if (durationMs > slowQueries[minIndex]!.durationMs) { + slowQueries[minIndex] = { durationMs, sql: compiledQuery.sql }; + } + } else { + slowQueries.push({ durationMs, sql: compiledQuery.sql }); + } + } + private ensureProperQueryResult(query: RootOperationNode, result: QueryResult) { let finalResult = result; diff --git a/packages/orm/src/client/options.ts b/packages/orm/src/client/options.ts index e2622d6cf..ae9d7bbb2 100644 --- a/packages/orm/src/client/options.ts +++ b/packages/orm/src/client/options.ts @@ -178,7 +178,8 @@ export type ClientOptions = QueryOptions & { plugins?: AnyPlugin[]; /** - * Logging configuration. + * Logging configuration. Extends Kysely's log config with a `'warning'` level + * for ZenStack-specific diagnostics (e.g., slow query warnings). */ log?: KyselyConfig['log']; @@ -208,9 +209,25 @@ export type ClientOptions = QueryOptions & { useCompactAliasNames?: boolean; /** - * Whether to skip validation for computed fields. + * Whether to skip validation for whether all computed fields are properly defined. */ skipValidationForComputedFields?: boolean; + + /** + * Diagnostics related options. + */ + diagnostics?: { + /** + * Threshold in milliseconds for determining slow queries. If not specified, no query will be considered slow. + */ + slowQueryThresholdMs?: number; + + /** + * Maximum number of slow query records to keep in memory. Defaults to `100`. When the number is exceeded, the + * entry with the lowest duration will be removed. Set to `Infinity` to keep unlimited records. + */ + slowQueryMaxRecords?: number; + }; } & (HasComputedFields extends true ? { /** diff --git a/packages/orm/src/client/zod/factory.ts b/packages/orm/src/client/zod/factory.ts index 0f0eb61e8..0790c030e 100644 --- a/packages/orm/src/client/zod/factory.ts +++ b/packages/orm/src/client/zod/factory.ts @@ -64,6 +64,15 @@ type FieldInfo = { array?: boolean; }; +function toFieldInfo(def: FieldDef): FieldInfo { + return { + name: def.name, + type: def.type, + optional: def.optional, + array: def.array, + }; +} + /** * Create a factory for generating Zod schemas to validate ORM query inputs. */ @@ -151,14 +160,11 @@ export class ZodSchemaFactory< return this.schemaCache.set(cacheKey, schema); } - // @ts-ignore - private printCacheStats(detailed = false) { - console.log('Schema cache size:', this.schemaCache.size); - if (detailed) { - for (const key of this.schemaCache.keys()) { - console.log(`\t${key}`); - } - } + get cacheStats() { + return { + size: this.schemaCache.size, + keys: [...this.schemaCache.keys()], + }; } // #endregion @@ -403,16 +409,26 @@ export class ZodSchemaFactory< if (enumDef) { // enum if (Object.keys(enumDef.values).length > 0) { - fieldSchema = this.makeEnumFilterSchema(model, fieldDef, withAggregations, ignoreSlicing); + fieldSchema = this.makeEnumFilterSchema( + model, + toFieldInfo(fieldDef), + withAggregations, + ignoreSlicing, + ); } } else if (fieldDef.array) { // array field - fieldSchema = this.makeArrayFilterSchema(model, fieldDef); + fieldSchema = this.makeArrayFilterSchema(model, toFieldInfo(fieldDef)); } else if (this.isTypeDefType(fieldDef.type)) { - fieldSchema = this.makeTypedJsonFilterSchema(model, fieldDef); + fieldSchema = this.makeTypedJsonFilterSchema(model, toFieldInfo(fieldDef)); } else { // primitive field - fieldSchema = this.makePrimitiveFilterSchema(model, fieldDef, withAggregations, ignoreSlicing); + fieldSchema = this.makePrimitiveFilterSchema( + model, + toFieldInfo(fieldDef), + withAggregations, + ignoreSlicing, + ); } } @@ -437,12 +453,22 @@ export class ZodSchemaFactory< if (enumDef) { // enum if (Object.keys(enumDef.values).length > 0) { - fieldSchema = this.makeEnumFilterSchema(model, def, false, true); + fieldSchema = this.makeEnumFilterSchema( + model, + toFieldInfo(def), + false, + true, + ); } else { fieldSchema = z.never(); } } else { - fieldSchema = this.makePrimitiveFilterSchema(model, def, false, true); + fieldSchema = this.makePrimitiveFilterSchema( + model, + toFieldInfo(def), + false, + true, + ); } return [key, fieldSchema]; }), @@ -514,18 +540,28 @@ export class ZodSchemaFactory< for (const [fieldName, fieldDef] of Object.entries(typeDef.fields)) { if (this.isTypeDefType(fieldDef.type)) { // recursive typed JSON - use same model/field for nested typed JSON - fieldSchemas[fieldName] = this.makeTypedJsonFilterSchema(contextModel, fieldDef).optional(); + fieldSchemas[fieldName] = this.makeTypedJsonFilterSchema( + contextModel, + toFieldInfo(fieldDef), + ).optional(); } else { // enum, array, primitives const enumDef = getEnum(this.schema, fieldDef.type); if (enumDef) { - fieldSchemas[fieldName] = this.makeEnumFilterSchema(contextModel, fieldDef, false).optional(); + fieldSchemas[fieldName] = this.makeEnumFilterSchema( + contextModel, + toFieldInfo(fieldDef), + false, + ).optional(); } else if (fieldDef.array) { - fieldSchemas[fieldName] = this.makeArrayFilterSchema(contextModel, fieldDef).optional(); + fieldSchemas[fieldName] = this.makeArrayFilterSchema( + contextModel, + toFieldInfo(fieldDef), + ).optional(); } else { fieldSchemas[fieldName] = this.makePrimitiveFilterSchema( contextModel, - fieldDef, + toFieldInfo(fieldDef), false, ).optional(); } diff --git a/tests/e2e/orm/client-api/diagnostics.test.ts b/tests/e2e/orm/client-api/diagnostics.test.ts new file mode 100644 index 000000000..541b7b36f --- /dev/null +++ b/tests/e2e/orm/client-api/diagnostics.test.ts @@ -0,0 +1,165 @@ +import { afterEach, beforeEach, describe, expect, it } from 'vitest'; +import type { ClientContract } from '@zenstackhq/orm'; +import { schema } from '../schemas/basic'; +import { createTestClient } from '@zenstackhq/testtools'; + +describe('Client $diagnostics tests', () => { + describe('without diagnostics option', () => { + let client: ClientContract; + + beforeEach(async () => { + client = await createTestClient(schema); + }); + + afterEach(async () => { + await client?.$disconnect(); + }); + + it('returns zod cache stats', async () => { + const diagnostics = await client.$diagnostics(); + expect(diagnostics.zodCache).toEqual({ size: 0, keys: [] }); + }); + + it('returns zod cache stats after queries', async () => { + await client.user.create({ data: { email: 'u1@test.com' } }); + const diagnostics = await client.$diagnostics(); + expect(diagnostics.zodCache.size).toBeGreaterThan(0); + expect(diagnostics.zodCache.keys.length).toBe(diagnostics.zodCache.size); + }); + + it('returns empty slow queries when diagnostics option is not set', async () => { + await client.user.create({ data: { email: 'u1@test.com' } }); + await client.user.findMany(); + const diagnostics = await client.$diagnostics(); + expect(diagnostics.slowQueries).toEqual([]); + }); + }); + + describe('with diagnostics option', () => { + let client: ClientContract; + + beforeEach(async () => { + client = await createTestClient(schema, { + diagnostics: { + // threshold of 0ms ensures all queries are captured as "slow" + slowQueryThresholdMs: 0, + }, + }); + }); + + afterEach(async () => { + await client?.$disconnect(); + }); + + it('records slow queries when threshold is exceeded', async () => { + await client.user.create({ data: { email: 'u1@test.com' } }); + await client.user.findMany(); + + const diagnostics = await client.$diagnostics(); + expect(diagnostics.slowQueries.length).toBeGreaterThan(0); + for (const query of diagnostics.slowQueries) { + expect(query.durationMs).toBeGreaterThanOrEqual(0); + expect(query.sql).toBeTruthy(); + } + }); + + it('does not record queries below threshold', async () => { + const fastClient = await createTestClient(schema, { + diagnostics: { + // very high threshold to ensure no queries are captured + slowQueryThresholdMs: 999999, + }, + }); + + try { + await fastClient.user.create({ data: { email: 'u1@test.com' } }); + await fastClient.user.findMany(); + + const diagnostics = await fastClient.$diagnostics(); + expect(diagnostics.slowQueries).toEqual([]); + } finally { + await fastClient.$disconnect(); + } + }); + + it('returns a copy of slow queries', async () => { + await client.user.create({ data: { email: 'u1@test.com' } }); + + const diagnostics1 = await client.$diagnostics(); + const diagnostics2 = await client.$diagnostics(); + expect(diagnostics1.slowQueries).not.toBe(diagnostics2.slowQueries); + expect(diagnostics1.slowQueries).toEqual(diagnostics2.slowQueries); + }); + + it('shares slow queries across derived clients', async () => { + await client.user.create({ data: { email: 'u1@test.com' } }); + + const derivedClient = client.$setAuth({ id: '1' }); + await derivedClient.user.findMany(); + + // both clients should see the same slow queries + const parentDiag = await client.$diagnostics(); + const derivedDiag = await derivedClient.$diagnostics(); + expect(parentDiag.slowQueries).toEqual(derivedDiag.slowQueries); + }); + + it('shares slow queries across transaction clients', async () => { + await client.$transaction(async (tx) => { + await tx.user.create({ data: { email: 'u1@test.com' } }); + }); + + const diagnostics = await client.$diagnostics(); + expect(diagnostics.slowQueries.length).toBeGreaterThan(0); + }); + }); + + describe('slowQueryMaxRecords', () => { + it('limits the number of slow query records', async () => { + const maxRecords = 3; + const client = await createTestClient(schema, { + diagnostics: { + slowQueryThresholdMs: 0, + slowQueryMaxRecords: maxRecords, + }, + }); + + try { + // create enough queries to exceed the limit + for (let i = 0; i < 10; i++) { + await client.user.create({ data: { email: `u${i}@test.com` } }); + } + + const diagnostics = await client.$diagnostics(); + expect(diagnostics.slowQueries.length).toBeLessThanOrEqual(maxRecords); + } finally { + await client.$disconnect(); + } + }); + + it('keeps the slowest queries when limit is exceeded', async () => { + const maxRecords = 2; + const client = await createTestClient(schema, { + diagnostics: { + slowQueryThresholdMs: 0, + slowQueryMaxRecords: maxRecords, + }, + }); + + try { + for (let i = 0; i < 5; i++) { + await client.user.create({ data: { email: `u${i}@test.com` } }); + } + + const diagnostics = await client.$diagnostics(); + expect(diagnostics.slowQueries.length).toBeLessThanOrEqual(maxRecords); + // all entries should have valid data + for (const query of diagnostics.slowQueries) { + expect(query.durationMs).toBeGreaterThanOrEqual(0); + expect(query.sql).toBeTruthy(); + } + } finally { + await client.$disconnect(); + } + }); + }); +}); From 24089deb7cc4d5ec546a896a666fd3934326fe15 Mon Sep 17 00:00:00 2001 From: ymc9 <104139426+ymc9@users.noreply.github.com> Date: Thu, 12 Mar 2026 17:22:39 -0700 Subject: [PATCH 03/41] update --- packages/orm/src/client/client-impl.ts | 2 +- tests/e2e/orm/client-api/diagnostics.test.ts | 157 ++++++++++--------- 2 files changed, 84 insertions(+), 75 deletions(-) diff --git a/packages/orm/src/client/client-impl.ts b/packages/orm/src/client/client-impl.ts index d389974d8..f93d23c42 100644 --- a/packages/orm/src/client/client-impl.ts +++ b/packages/orm/src/client/client-impl.ts @@ -135,7 +135,7 @@ export class ClientImpl { if (options.diagnostics) { const diagnosticsSchema = z.object({ - slowQueryThresholdMs: z.int().nonnegative().optional(), + slowQueryThresholdMs: z.number().nonnegative().optional(), slowQueryMaxRecords: z.int().nonnegative().optional(), }); const parseResult = diagnosticsSchema.safeParse(options.diagnostics); diff --git a/tests/e2e/orm/client-api/diagnostics.test.ts b/tests/e2e/orm/client-api/diagnostics.test.ts index 541b7b36f..1efa58b54 100644 --- a/tests/e2e/orm/client-api/diagnostics.test.ts +++ b/tests/e2e/orm/client-api/diagnostics.test.ts @@ -1,115 +1,128 @@ -import { afterEach, beforeEach, describe, expect, it } from 'vitest'; -import type { ClientContract } from '@zenstackhq/orm'; +import { describe, expect, it } from 'vitest'; import { schema } from '../schemas/basic'; import { createTestClient } from '@zenstackhq/testtools'; describe('Client $diagnostics tests', () => { describe('without diagnostics option', () => { - let client: ClientContract; - - beforeEach(async () => { - client = await createTestClient(schema); - }); - - afterEach(async () => { - await client?.$disconnect(); - }); - it('returns zod cache stats', async () => { - const diagnostics = await client.$diagnostics(); - expect(diagnostics.zodCache).toEqual({ size: 0, keys: [] }); + const client = await createTestClient(schema); + try { + const diagnostics = await client.$diagnostics(); + expect(diagnostics.zodCache).toEqual({ size: 0, keys: [] }); + } finally { + await client.$disconnect(); + } }); it('returns zod cache stats after queries', async () => { - await client.user.create({ data: { email: 'u1@test.com' } }); - const diagnostics = await client.$diagnostics(); - expect(diagnostics.zodCache.size).toBeGreaterThan(0); - expect(diagnostics.zodCache.keys.length).toBe(diagnostics.zodCache.size); + const client = await createTestClient(schema); + try { + await client.user.create({ data: { email: 'u1@test.com' } }); + const diagnostics = await client.$diagnostics(); + expect(diagnostics.zodCache.size).toBeGreaterThan(0); + expect(diagnostics.zodCache.keys.length).toBe(diagnostics.zodCache.size); + } finally { + await client.$disconnect(); + } }); it('returns empty slow queries when diagnostics option is not set', async () => { - await client.user.create({ data: { email: 'u1@test.com' } }); - await client.user.findMany(); - const diagnostics = await client.$diagnostics(); - expect(diagnostics.slowQueries).toEqual([]); + const client = await createTestClient(schema); + try { + await client.user.create({ data: { email: 'u1@test.com' } }); + await client.user.findMany(); + const diagnostics = await client.$diagnostics(); + expect(diagnostics.slowQueries).toEqual([]); + } finally { + await client.$disconnect(); + } }); }); describe('with diagnostics option', () => { - let client: ClientContract; - - beforeEach(async () => { - client = await createTestClient(schema, { - diagnostics: { - // threshold of 0ms ensures all queries are captured as "slow" - slowQueryThresholdMs: 0, - }, + it('records slow queries when threshold is exceeded', async () => { + const client = await createTestClient(schema, { + diagnostics: { slowQueryThresholdMs: 0 }, }); - }); - - afterEach(async () => { - await client?.$disconnect(); - }); + try { + await client.user.create({ data: { email: 'u1@test.com' } }); + await client.user.findMany(); - it('records slow queries when threshold is exceeded', async () => { - await client.user.create({ data: { email: 'u1@test.com' } }); - await client.user.findMany(); - - const diagnostics = await client.$diagnostics(); - expect(diagnostics.slowQueries.length).toBeGreaterThan(0); - for (const query of diagnostics.slowQueries) { - expect(query.durationMs).toBeGreaterThanOrEqual(0); - expect(query.sql).toBeTruthy(); + const diagnostics = await client.$diagnostics(); + expect(diagnostics.slowQueries.length).toBeGreaterThan(0); + for (const query of diagnostics.slowQueries) { + expect(query.durationMs).toBeGreaterThanOrEqual(0); + expect(query.sql).toBeTruthy(); + } + } finally { + await client.$disconnect(); } }); it('does not record queries below threshold', async () => { - const fastClient = await createTestClient(schema, { - diagnostics: { - // very high threshold to ensure no queries are captured - slowQueryThresholdMs: 999999, - }, + const client = await createTestClient(schema, { + diagnostics: { slowQueryThresholdMs: 999999 }, }); - try { - await fastClient.user.create({ data: { email: 'u1@test.com' } }); - await fastClient.user.findMany(); + await client.user.create({ data: { email: 'u1@test.com' } }); + await client.user.findMany(); - const diagnostics = await fastClient.$diagnostics(); + const diagnostics = await client.$diagnostics(); expect(diagnostics.slowQueries).toEqual([]); } finally { - await fastClient.$disconnect(); + await client.$disconnect(); } }); it('returns a copy of slow queries', async () => { - await client.user.create({ data: { email: 'u1@test.com' } }); + const client = await createTestClient(schema, { + diagnostics: { slowQueryThresholdMs: 0 }, + }); + try { + await client.user.create({ data: { email: 'u1@test.com' } }); - const diagnostics1 = await client.$diagnostics(); - const diagnostics2 = await client.$diagnostics(); - expect(diagnostics1.slowQueries).not.toBe(diagnostics2.slowQueries); - expect(diagnostics1.slowQueries).toEqual(diagnostics2.slowQueries); + const diagnostics1 = await client.$diagnostics(); + const diagnostics2 = await client.$diagnostics(); + expect(diagnostics1.slowQueries).not.toBe(diagnostics2.slowQueries); + expect(diagnostics1.slowQueries).toEqual(diagnostics2.slowQueries); + } finally { + await client.$disconnect(); + } }); it('shares slow queries across derived clients', async () => { - await client.user.create({ data: { email: 'u1@test.com' } }); + const client = await createTestClient(schema, { + diagnostics: { slowQueryThresholdMs: 0 }, + }); + try { + await client.user.create({ data: { email: 'u1@test.com' } }); - const derivedClient = client.$setAuth({ id: '1' }); - await derivedClient.user.findMany(); + const derivedClient = client.$setAuth({ id: '1' }); + await derivedClient.user.findMany(); - // both clients should see the same slow queries - const parentDiag = await client.$diagnostics(); - const derivedDiag = await derivedClient.$diagnostics(); - expect(parentDiag.slowQueries).toEqual(derivedDiag.slowQueries); + // both clients should see the same slow queries + const parentDiag = await client.$diagnostics(); + const derivedDiag = await derivedClient.$diagnostics(); + expect(parentDiag.slowQueries).toEqual(derivedDiag.slowQueries); + } finally { + await client.$disconnect(); + } }); it('shares slow queries across transaction clients', async () => { - await client.$transaction(async (tx) => { - await tx.user.create({ data: { email: 'u1@test.com' } }); + const client = await createTestClient(schema, { + diagnostics: { slowQueryThresholdMs: 0 }, }); + try { + await client.$transaction(async (tx) => { + await tx.user.create({ data: { email: 'u1@test.com' } }); + }); - const diagnostics = await client.$diagnostics(); - expect(diagnostics.slowQueries.length).toBeGreaterThan(0); + const diagnostics = await client.$diagnostics(); + expect(diagnostics.slowQueries.length).toBeGreaterThan(0); + } finally { + await client.$disconnect(); + } }); }); @@ -122,9 +135,7 @@ describe('Client $diagnostics tests', () => { slowQueryMaxRecords: maxRecords, }, }); - try { - // create enough queries to exceed the limit for (let i = 0; i < 10; i++) { await client.user.create({ data: { email: `u${i}@test.com` } }); } @@ -144,7 +155,6 @@ describe('Client $diagnostics tests', () => { slowQueryMaxRecords: maxRecords, }, }); - try { for (let i = 0; i < 5; i++) { await client.user.create({ data: { email: `u${i}@test.com` } }); @@ -152,7 +162,6 @@ describe('Client $diagnostics tests', () => { const diagnostics = await client.$diagnostics(); expect(diagnostics.slowQueries.length).toBeLessThanOrEqual(maxRecords); - // all entries should have valid data for (const query of diagnostics.slowQueries) { expect(query.durationMs).toBeGreaterThanOrEqual(0); expect(query.sql).toBeTruthy(); From 5a559773166c3470c1056c65900fd086e5a209e3 Mon Sep 17 00:00:00 2001 From: ymc9 <104139426+ymc9@users.noreply.github.com> Date: Thu, 12 Mar 2026 19:08:11 -0700 Subject: [PATCH 04/41] fix(orm): allow Infinity for slowQueryMaxRecords validation z.int().nonnegative() rejects Infinity. Use .or(z.literal(Infinity)) to accept both nonnegative integers and Infinity. Co-Authored-By: Claude Opus 4.6 --- packages/orm/src/client/client-impl.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/orm/src/client/client-impl.ts b/packages/orm/src/client/client-impl.ts index f93d23c42..7c122c00a 100644 --- a/packages/orm/src/client/client-impl.ts +++ b/packages/orm/src/client/client-impl.ts @@ -136,7 +136,7 @@ export class ClientImpl { if (options.diagnostics) { const diagnosticsSchema = z.object({ slowQueryThresholdMs: z.number().nonnegative().optional(), - slowQueryMaxRecords: z.int().nonnegative().optional(), + slowQueryMaxRecords: z.int().nonnegative().or(z.literal(Infinity)).optional(), }); const parseResult = diagnosticsSchema.safeParse(options.diagnostics); if (!parseResult.success) { From eef5fd64cb15a35a6cdeb9adfb617afb043e0973 Mon Sep 17 00:00:00 2001 From: ymc9 <104139426+ymc9@users.noreply.github.com> Date: Thu, 12 Mar 2026 19:09:37 -0700 Subject: [PATCH 05/41] improve test --- tests/e2e/orm/client-api/diagnostics.test.ts | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/tests/e2e/orm/client-api/diagnostics.test.ts b/tests/e2e/orm/client-api/diagnostics.test.ts index 1efa58b54..7203823ba 100644 --- a/tests/e2e/orm/client-api/diagnostics.test.ts +++ b/tests/e2e/orm/client-api/diagnostics.test.ts @@ -147,6 +147,25 @@ describe('Client $diagnostics tests', () => { } }); + it('accepts Infinity as slowQueryMaxRecords', async () => { + const client = await createTestClient(schema, { + diagnostics: { + slowQueryThresholdMs: 0, + slowQueryMaxRecords: Infinity, + }, + }); + try { + for (let i = 0; i < 5; i++) { + await client.user.create({ data: { email: `u${i}@test.com` } }); + } + + const diagnostics = await client.$diagnostics(); + expect(diagnostics.slowQueries.length).toBe(5); + } finally { + await client.$disconnect(); + } + }); + it('keeps the slowest queries when limit is exceeded', async () => { const maxRecords = 2; const client = await createTestClient(schema, { From d75f7f3d31285c99adafc169652403c057f99310 Mon Sep 17 00:00:00 2001 From: ymc9 <104139426+ymc9@users.noreply.github.com> Date: Thu, 12 Mar 2026 19:11:57 -0700 Subject: [PATCH 06/41] address PR comments --- packages/orm/src/client/client-impl.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/orm/src/client/client-impl.ts b/packages/orm/src/client/client-impl.ts index 7c122c00a..bebb5afe6 100644 --- a/packages/orm/src/client/client-impl.ts +++ b/packages/orm/src/client/client-impl.ts @@ -433,7 +433,7 @@ export class ClientImpl { async $diagnostics(): Promise { return { zodCache: this.inputValidator.zodFactory.cacheStats, - slowQueries: [...this.slowQueries], + slowQueries: this.slowQueries.map((q) => ({ ...q })), }; } From 1ba4e540668c9bcf43118a007edd17c1e88cebbc Mon Sep 17 00:00:00 2001 From: ymc9 <104139426+ymc9@users.noreply.github.com> Date: Thu, 12 Mar 2026 19:51:43 -0700 Subject: [PATCH 07/41] refactor(schema): widen types for attributes, default, and foreignKeyFor in generated schema The generated schema previously used `as const` on entire model/enum/typeDef objects, causing TypeScript to deeply infer literal types for all nested properties. This is unnecessary for `attributes`, `default`, and `foreignKeyFor` which are only used at runtime, not in CRUD type computations. Changes: - Add type assertions (`as readonly AttributeApplication[]`, `as FieldDefault`, `as readonly string[]`) to prevent deep const inference on these properties - Extract `FieldDefault` type alias from `FieldDef` for cleaner generated code - Change `FieldHasDefault` to use key existence check (`'default' extends keyof`) instead of value type check, enabling the `default` widening - Conditionally import `AttributeApplication` and `FieldDefault` only when used Co-Authored-By: Claude Opus 4.6 --- .../test/schemas/basic/schema-lite.ts | 16 +- packages/schema/src/schema.ts | 6 +- packages/sdk/src/ts-schema-generator.ts | 171 +- samples/next.js/zenstack/schema-lite.ts | 14 +- samples/next.js/zenstack/schema.ts | 32 +- samples/nuxt/zenstack/schema-lite.ts | 14 +- samples/nuxt/zenstack/schema.ts | 32 +- samples/orm/zenstack/schema.ts | 70 +- samples/sveltekit/src/zenstack/schema-lite.ts | 14 +- samples/sveltekit/src/zenstack/schema.ts | 32 +- tests/e2e/apps/rally/zenstack/schema.ts | 820 +++--- tests/e2e/github-repos/cal.com/schema.ts | 2246 ++++++++--------- tests/e2e/github-repos/formbricks/schema.ts | 790 +++--- tests/e2e/github-repos/trigger.dev/schema.ts | 1568 ++++++------ .../orm/plugin-infra/ext-query-args/schema.ts | 6 +- tests/e2e/orm/schemas/auth-type/schema.ts | 8 +- tests/e2e/orm/schemas/basic/schema.ts | 84 +- tests/e2e/orm/schemas/default-auth/schema.ts | 28 +- tests/e2e/orm/schemas/delegate/schema.ts | 114 +- tests/e2e/orm/schemas/json/schema.ts | 6 +- tests/e2e/orm/schemas/name-mapping/schema.ts | 34 +- tests/e2e/orm/schemas/omit/schema.ts | 20 +- tests/e2e/orm/schemas/petstore/schema.ts | 42 +- tests/e2e/orm/schemas/procedures/schema.ts | 12 +- tests/e2e/orm/schemas/todo/schema.ts | 110 +- tests/e2e/orm/schemas/typed-json/schema.ts | 8 +- tests/e2e/orm/schemas/typing/schema.ts | 62 +- tests/regression/test/issue-204/schema.ts | 6 +- tests/regression/test/issue-422/schema.ts | 24 +- tests/regression/test/issue-503/schema.ts | 22 +- tests/runtimes/bun/schemas/schema.ts | 24 +- tests/runtimes/edge-runtime/schemas/schema.ts | 24 +- 32 files changed, 3250 insertions(+), 3209 deletions(-) diff --git a/packages/clients/tanstack-query/test/schemas/basic/schema-lite.ts b/packages/clients/tanstack-query/test/schemas/basic/schema-lite.ts index af9b66ee6..4ea2da51e 100644 --- a/packages/clients/tanstack-query/test/schemas/basic/schema-lite.ts +++ b/packages/clients/tanstack-query/test/schemas/basic/schema-lite.ts @@ -5,7 +5,7 @@ /* eslint-disable */ -import { type SchemaDef, ExpressionUtils } from "@zenstackhq/schema"; +import { type SchemaDef, type FieldDefault, ExpressionUtils } from "@zenstackhq/schema"; export class SchemaType implements SchemaDef { provider = { type: "sqlite" @@ -18,7 +18,7 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - default: ExpressionUtils.call("cuid") + default: ExpressionUtils.call("cuid") as FieldDefault }, email: { name: "email", @@ -50,7 +50,7 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - default: ExpressionUtils.call("cuid") + default: ExpressionUtils.call("cuid") as FieldDefault }, title: { name: "title", @@ -68,7 +68,7 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "owner" - ] + ] as readonly string[] }, category: { name: "category", @@ -82,7 +82,7 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "category" - ] + ] as readonly string[] } }, idFields: ["id"], @@ -97,7 +97,7 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - default: ExpressionUtils.call("cuid") + default: ExpressionUtils.call("cuid") as FieldDefault }, name: { name: "name", @@ -124,7 +124,7 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - default: ExpressionUtils.call("cuid") + default: ExpressionUtils.call("cuid") as FieldDefault }, type: { name: "type", @@ -147,7 +147,7 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - default: ExpressionUtils.call("cuid") + default: ExpressionUtils.call("cuid") as FieldDefault }, type: { name: "type", diff --git a/packages/schema/src/schema.ts b/packages/schema/src/schema.ts index e21b5e30e..cb7e9299e 100644 --- a/packages/schema/src/schema.ts +++ b/packages/schema/src/schema.ts @@ -63,6 +63,8 @@ export type UpdatedAtInfo = { ignore?: readonly string[]; }; +export type FieldDefault = MappedBuiltinType | Expression | readonly unknown[]; + export type FieldDef = { name: string; type: string; @@ -72,7 +74,7 @@ export type FieldDef = { unique?: boolean; updatedAt?: boolean | UpdatedAtInfo; attributes?: readonly AttributeApplication[]; - default?: MappedBuiltinType | Expression | readonly unknown[]; + default?: FieldDefault; omit?: boolean; relation?: RelationInfo; foreignKeyFor?: readonly string[]; @@ -285,7 +287,7 @@ export type FieldHasDefault< Schema extends SchemaDef, Model extends GetModels, Field extends GetModelFields, -> = GetModelField['default'] extends object | number | string | boolean +> = 'default' extends keyof GetModelField ? true : GetModelField['updatedAt'] extends true | UpdatedAtInfo ? true diff --git a/packages/sdk/src/ts-schema-generator.ts b/packages/sdk/src/ts-schema-generator.ts index b10068a3f..be5483003 100644 --- a/packages/sdk/src/ts-schema-generator.ts +++ b/packages/sdk/src/ts-schema-generator.ts @@ -64,12 +64,16 @@ export type TsSchemaGeneratorOptions = { export class TsSchemaGenerator { private usedExpressionUtils = false; + private usedAttributeApplication = false; + private usedFieldDefault = false; async generate(model: Model, options: TsSchemaGeneratorOptions) { fs.mkdirSync(options.outDir, { recursive: true }); - // Reset the flag for each generation + // Reset the flags for each generation this.usedExpressionUtils = false; + this.usedAttributeApplication = false; + this.usedFieldDefault = false; // the schema itself this.generateSchema(model, options); @@ -130,6 +134,24 @@ export class TsSchemaGenerator { undefined, ts.factory.createNamedImports([ ts.factory.createImportSpecifier(true, undefined, ts.factory.createIdentifier('SchemaDef')), + ...(this.usedAttributeApplication + ? [ + ts.factory.createImportSpecifier( + true, + undefined, + ts.factory.createIdentifier('AttributeApplication'), + ), + ] + : []), + ...(this.usedFieldDefault + ? [ + ts.factory.createImportSpecifier( + true, + undefined, + ts.factory.createIdentifier('FieldDefault'), + ), + ] + : []), ...(this.usedExpressionUtils ? [ ts.factory.createImportSpecifier( @@ -285,6 +307,22 @@ export class TsSchemaGenerator { return ts.factory.createAsExpression(expr, ts.factory.createTypeReferenceNode('const')); } + private createAttributesTypeAssertion(expr: ts.Expression): ts.Expression { + this.usedAttributeApplication = true; + return ts.factory.createAsExpression( + expr, + ts.factory.createTypeOperatorNode( + ts.SyntaxKind.ReadonlyKeyword, + ts.factory.createArrayTypeNode(ts.factory.createTypeReferenceNode('AttributeApplication')), + ), + ); + } + + private createDefaultTypeAssertion(expr: ts.Expression): ts.Expression { + this.usedFieldDefault = true; + return ts.factory.createAsExpression(expr, ts.factory.createTypeReferenceNode('FieldDefault')); + } + private createProviderObject(model: Model): ts.Expression { const dsProvider = this.getDataSourceProvider(model); const defaultSchema = this.getDataSourceDefaultSchema(model); @@ -374,9 +412,11 @@ export class TsSchemaGenerator { ? [ ts.factory.createPropertyAssignment( 'attributes', - ts.factory.createArrayLiteralExpression( - allAttributes.map((attr) => this.createAttributeObject(attr)), - true, + this.createAttributesTypeAssertion( + ts.factory.createArrayLiteralExpression( + allAttributes.map((attr) => this.createAttributeObject(attr)), + true, + ), ), ), ] @@ -458,9 +498,11 @@ export class TsSchemaGenerator { ? [ ts.factory.createPropertyAssignment( 'attributes', - ts.factory.createArrayLiteralExpression( - allAttributes.map((attr) => this.createAttributeObject(attr)), - true, + this.createAttributesTypeAssertion( + ts.factory.createArrayLiteralExpression( + allAttributes.map((attr) => this.createAttributeObject(attr)), + true, + ), ), ), ] @@ -608,8 +650,10 @@ export class TsSchemaGenerator { objectFields.push( ts.factory.createPropertyAssignment( 'attributes', - ts.factory.createArrayLiteralExpression( - field.attributes.map((attr) => this.createAttributeObject(attr)), + this.createAttributesTypeAssertion( + ts.factory.createArrayLiteralExpression( + field.attributes.map((attr) => this.createAttributeObject(attr)), + ), ), ), ); @@ -617,62 +661,45 @@ export class TsSchemaGenerator { const defaultValue = this.getFieldMappedDefault(field); if (defaultValue !== undefined) { + let defaultExpr: ts.Expression; if (defaultValue === null) { - objectFields.push( - ts.factory.createPropertyAssignment('default', this.createExpressionUtilsCall('_null')), - ); + defaultExpr = this.createExpressionUtilsCall('_null'); } else if (typeof defaultValue === 'object' && !Array.isArray(defaultValue)) { if ('call' in defaultValue) { - objectFields.push( - ts.factory.createPropertyAssignment( - 'default', - this.createExpressionUtilsCall('call', [ - ts.factory.createStringLiteral(defaultValue.call), - ...(defaultValue.args.length > 0 - ? [ - ts.factory.createArrayLiteralExpression( - defaultValue.args.map((arg) => - this.createExpressionUtilsCall('literal', [ - this.createLiteralNode(arg), - ]), - ), - ), - ] - : []), - ]), - ), - ); + defaultExpr = this.createExpressionUtilsCall('call', [ + ts.factory.createStringLiteral(defaultValue.call), + ...(defaultValue.args.length > 0 + ? [ + ts.factory.createArrayLiteralExpression( + defaultValue.args.map((arg) => + this.createExpressionUtilsCall('literal', [ + this.createLiteralNode(arg), + ]), + ), + ), + ] + : []), + ]); } else if ('authMember' in defaultValue) { - objectFields.push( - ts.factory.createPropertyAssignment( - 'default', - this.createExpressionUtilsCall('member', [ - this.createExpressionUtilsCall('call', [ts.factory.createStringLiteral('auth')]), - ts.factory.createArrayLiteralExpression( - defaultValue.authMember.map((m) => ts.factory.createStringLiteral(m)), - ), - ]), + defaultExpr = this.createExpressionUtilsCall('member', [ + this.createExpressionUtilsCall('call', [ts.factory.createStringLiteral('auth')]), + ts.factory.createArrayLiteralExpression( + defaultValue.authMember.map((m) => ts.factory.createStringLiteral(m)), ), - ); + ]); } else { throw new Error(`Unsupported default value type for field ${field.name}`); } + } else if (Array.isArray(defaultValue)) { + defaultExpr = ts.factory.createArrayLiteralExpression( + defaultValue.map((item) => this.createLiteralNode(item as any)), + ); } else { - if (Array.isArray(defaultValue)) { - objectFields.push( - ts.factory.createPropertyAssignment( - 'default', - ts.factory.createArrayLiteralExpression( - defaultValue.map((item) => this.createLiteralNode(item as any)), - ), - ), - ); - } else { - objectFields.push( - ts.factory.createPropertyAssignment('default', this.createLiteralNode(defaultValue)), - ); - } + defaultExpr = this.createLiteralNode(defaultValue); } + objectFields.push( + ts.factory.createPropertyAssignment('default', this.createDefaultTypeAssertion(defaultExpr)), + ); } if (hasAttribute(field, '@computed')) { @@ -688,9 +715,17 @@ export class TsSchemaGenerator { objectFields.push( ts.factory.createPropertyAssignment( 'foreignKeyFor', - ts.factory.createArrayLiteralExpression( - fkFor.map((fk) => ts.factory.createStringLiteral(fk)), - true, + ts.factory.createAsExpression( + ts.factory.createArrayLiteralExpression( + fkFor.map((fk) => ts.factory.createStringLiteral(fk)), + true, + ), + ts.factory.createTypeOperatorNode( + ts.SyntaxKind.ReadonlyKeyword, + ts.factory.createArrayTypeNode( + ts.factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword), + ), + ), ), ), ); @@ -1070,11 +1105,13 @@ export class TsSchemaGenerator { ? [ ts.factory.createPropertyAssignment( 'attributes', - ts.factory.createArrayLiteralExpression( - field.attributes?.map((attr) => - this.createAttributeObject(attr), - ) ?? [], - true, + this.createAttributesTypeAssertion( + ts.factory.createArrayLiteralExpression( + field.attributes?.map((attr) => + this.createAttributeObject(attr), + ) ?? [], + true, + ), ), ), ] @@ -1094,9 +1131,11 @@ export class TsSchemaGenerator { ? [ ts.factory.createPropertyAssignment( 'attributes', - ts.factory.createArrayLiteralExpression( - e.attributes.map((attr) => this.createAttributeObject(attr)), - true, + this.createAttributesTypeAssertion( + ts.factory.createArrayLiteralExpression( + e.attributes.map((attr) => this.createAttributeObject(attr)), + true, + ), ), ), ] diff --git a/samples/next.js/zenstack/schema-lite.ts b/samples/next.js/zenstack/schema-lite.ts index 0f5ad88bc..895455c0c 100644 --- a/samples/next.js/zenstack/schema-lite.ts +++ b/samples/next.js/zenstack/schema-lite.ts @@ -5,7 +5,7 @@ /* eslint-disable */ -import { type SchemaDef, ExpressionUtils } from "@zenstackhq/schema"; +import { type SchemaDef, type AttributeApplication, type FieldDefault, ExpressionUtils } from "@zenstackhq/schema"; export class SchemaType implements SchemaDef { provider = { type: "sqlite" @@ -18,12 +18,12 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - default: ExpressionUtils.call("cuid") + default: ExpressionUtils.call("cuid") as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - default: ExpressionUtils.call("now") + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", @@ -60,12 +60,12 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - default: ExpressionUtils.call("cuid") + default: ExpressionUtils.call("cuid") as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - default: ExpressionUtils.call("now") + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", @@ -79,7 +79,7 @@ export class SchemaType implements SchemaDef { published: { name: "published", type: "Boolean", - default: false + default: false as FieldDefault }, author: { name: "author", @@ -91,7 +91,7 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "author" - ] + ] as readonly string[] } }, idFields: ["id"], diff --git a/samples/next.js/zenstack/schema.ts b/samples/next.js/zenstack/schema.ts index c420179f7..6735451d6 100644 --- a/samples/next.js/zenstack/schema.ts +++ b/samples/next.js/zenstack/schema.ts @@ -5,7 +5,7 @@ /* eslint-disable */ -import { type SchemaDef, ExpressionUtils } from "@zenstackhq/schema"; +import { type SchemaDef, type AttributeApplication, type FieldDefault, ExpressionUtils } from "@zenstackhq/schema"; export class SchemaType implements SchemaDef { provider = { type: "sqlite" @@ -18,26 +18,26 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, email: { name: "email", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, name: { name: "name", @@ -64,20 +64,20 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, title: { name: "title", @@ -86,13 +86,13 @@ export class SchemaType implements SchemaDef { published: { name: "published", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, author: { name: "author", type: "User", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("authorId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("authorId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "posts", fields: ["authorId"], references: ["id"], onUpdate: "Cascade", onDelete: "Cascade" } }, authorId: { @@ -100,7 +100,7 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "author" - ] + ] as readonly string[] } }, idFields: ["id"], diff --git a/samples/nuxt/zenstack/schema-lite.ts b/samples/nuxt/zenstack/schema-lite.ts index 0f5ad88bc..895455c0c 100644 --- a/samples/nuxt/zenstack/schema-lite.ts +++ b/samples/nuxt/zenstack/schema-lite.ts @@ -5,7 +5,7 @@ /* eslint-disable */ -import { type SchemaDef, ExpressionUtils } from "@zenstackhq/schema"; +import { type SchemaDef, type AttributeApplication, type FieldDefault, ExpressionUtils } from "@zenstackhq/schema"; export class SchemaType implements SchemaDef { provider = { type: "sqlite" @@ -18,12 +18,12 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - default: ExpressionUtils.call("cuid") + default: ExpressionUtils.call("cuid") as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - default: ExpressionUtils.call("now") + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", @@ -60,12 +60,12 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - default: ExpressionUtils.call("cuid") + default: ExpressionUtils.call("cuid") as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - default: ExpressionUtils.call("now") + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", @@ -79,7 +79,7 @@ export class SchemaType implements SchemaDef { published: { name: "published", type: "Boolean", - default: false + default: false as FieldDefault }, author: { name: "author", @@ -91,7 +91,7 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "author" - ] + ] as readonly string[] } }, idFields: ["id"], diff --git a/samples/nuxt/zenstack/schema.ts b/samples/nuxt/zenstack/schema.ts index c420179f7..6735451d6 100644 --- a/samples/nuxt/zenstack/schema.ts +++ b/samples/nuxt/zenstack/schema.ts @@ -5,7 +5,7 @@ /* eslint-disable */ -import { type SchemaDef, ExpressionUtils } from "@zenstackhq/schema"; +import { type SchemaDef, type AttributeApplication, type FieldDefault, ExpressionUtils } from "@zenstackhq/schema"; export class SchemaType implements SchemaDef { provider = { type: "sqlite" @@ -18,26 +18,26 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, email: { name: "email", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, name: { name: "name", @@ -64,20 +64,20 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, title: { name: "title", @@ -86,13 +86,13 @@ export class SchemaType implements SchemaDef { published: { name: "published", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, author: { name: "author", type: "User", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("authorId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("authorId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "posts", fields: ["authorId"], references: ["id"], onUpdate: "Cascade", onDelete: "Cascade" } }, authorId: { @@ -100,7 +100,7 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "author" - ] + ] as readonly string[] } }, idFields: ["id"], diff --git a/samples/orm/zenstack/schema.ts b/samples/orm/zenstack/schema.ts index aa0d92bc6..6b7df5b25 100644 --- a/samples/orm/zenstack/schema.ts +++ b/samples/orm/zenstack/schema.ts @@ -5,7 +5,7 @@ /* eslint-disable */ -import { type SchemaDef, ExpressionUtils } from "@zenstackhq/schema"; +import { type SchemaDef, type AttributeApplication, type FieldDefault, ExpressionUtils } from "@zenstackhq/schema"; export class SchemaType implements SchemaDef { provider = { type: "sqlite" @@ -18,26 +18,26 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, email: { name: "email", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, name: { name: "name", @@ -47,14 +47,14 @@ export class SchemaType implements SchemaDef { postCount: { name: "postCount", type: "Int", - attributes: [{ name: "@computed" }], + attributes: [{ name: "@computed" }] as readonly AttributeApplication[], computed: true }, role: { name: "role", type: "Role", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("USER") }] }], - default: "USER" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("USER") }] }] as readonly AttributeApplication[], + default: "USER" as FieldDefault }, posts: { name: "posts", @@ -72,7 +72,7 @@ export class SchemaType implements SchemaDef { attributes: [ { name: "@@allow", args: [{ name: "operation", value: ExpressionUtils.literal("read,create") }, { name: "condition", value: ExpressionUtils.literal(true) }] }, { name: "@@allow", args: [{ name: "operation", value: ExpressionUtils.literal("all") }, { name: "condition", value: ExpressionUtils.binary(ExpressionUtils._this(), "==", ExpressionUtils.call("auth")) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -93,20 +93,20 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, bio: { name: "bio", @@ -122,7 +122,7 @@ export class SchemaType implements SchemaDef { name: "user", type: "User", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }] }] as readonly AttributeApplication[], relation: { opposite: "profile", fields: ["userId"], references: ["id"] } }, userId: { @@ -130,15 +130,15 @@ export class SchemaType implements SchemaDef { type: "String", unique: true, optional: true, - attributes: [{ name: "@unique" }], + attributes: [{ name: "@unique" }] as readonly AttributeApplication[], foreignKeyFor: [ "user" - ] + ] as readonly string[] } }, attributes: [ { name: "@@allow", args: [{ name: "operation", value: ExpressionUtils.literal("all") }, { name: "condition", value: ExpressionUtils.call("check", [ExpressionUtils.field("user")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -152,20 +152,20 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, title: { name: "title", @@ -178,13 +178,13 @@ export class SchemaType implements SchemaDef { published: { name: "published", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, author: { name: "author", type: "User", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("authorId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("authorId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }] }] as readonly AttributeApplication[], relation: { opposite: "posts", fields: ["authorId"], references: ["id"] } }, authorId: { @@ -192,13 +192,13 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "author" - ] + ] as readonly string[] } }, attributes: [ { name: "@@allow", args: [{ name: "operation", value: ExpressionUtils.literal("read") }, { name: "condition", value: ExpressionUtils.field("published") }] }, { name: "@@allow", args: [{ name: "operation", value: ExpressionUtils.literal("all") }, { name: "condition", value: ExpressionUtils.binary(ExpressionUtils.field("author"), "==", ExpressionUtils.call("auth")) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" } @@ -212,20 +212,20 @@ export class SchemaType implements SchemaDef { id: { name: "id", type: "String", - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] } } } diff --git a/samples/sveltekit/src/zenstack/schema-lite.ts b/samples/sveltekit/src/zenstack/schema-lite.ts index 0f5ad88bc..895455c0c 100644 --- a/samples/sveltekit/src/zenstack/schema-lite.ts +++ b/samples/sveltekit/src/zenstack/schema-lite.ts @@ -5,7 +5,7 @@ /* eslint-disable */ -import { type SchemaDef, ExpressionUtils } from "@zenstackhq/schema"; +import { type SchemaDef, type AttributeApplication, type FieldDefault, ExpressionUtils } from "@zenstackhq/schema"; export class SchemaType implements SchemaDef { provider = { type: "sqlite" @@ -18,12 +18,12 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - default: ExpressionUtils.call("cuid") + default: ExpressionUtils.call("cuid") as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - default: ExpressionUtils.call("now") + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", @@ -60,12 +60,12 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - default: ExpressionUtils.call("cuid") + default: ExpressionUtils.call("cuid") as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - default: ExpressionUtils.call("now") + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", @@ -79,7 +79,7 @@ export class SchemaType implements SchemaDef { published: { name: "published", type: "Boolean", - default: false + default: false as FieldDefault }, author: { name: "author", @@ -91,7 +91,7 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "author" - ] + ] as readonly string[] } }, idFields: ["id"], diff --git a/samples/sveltekit/src/zenstack/schema.ts b/samples/sveltekit/src/zenstack/schema.ts index c420179f7..6735451d6 100644 --- a/samples/sveltekit/src/zenstack/schema.ts +++ b/samples/sveltekit/src/zenstack/schema.ts @@ -5,7 +5,7 @@ /* eslint-disable */ -import { type SchemaDef, ExpressionUtils } from "@zenstackhq/schema"; +import { type SchemaDef, type AttributeApplication, type FieldDefault, ExpressionUtils } from "@zenstackhq/schema"; export class SchemaType implements SchemaDef { provider = { type: "sqlite" @@ -18,26 +18,26 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, email: { name: "email", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, name: { name: "name", @@ -64,20 +64,20 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, title: { name: "title", @@ -86,13 +86,13 @@ export class SchemaType implements SchemaDef { published: { name: "published", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, author: { name: "author", type: "User", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("authorId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("authorId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "posts", fields: ["authorId"], references: ["id"], onUpdate: "Cascade", onDelete: "Cascade" } }, authorId: { @@ -100,7 +100,7 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "author" - ] + ] as readonly string[] } }, idFields: ["id"], diff --git a/tests/e2e/apps/rally/zenstack/schema.ts b/tests/e2e/apps/rally/zenstack/schema.ts index a729240c7..34a1bf454 100644 --- a/tests/e2e/apps/rally/zenstack/schema.ts +++ b/tests/e2e/apps/rally/zenstack/schema.ts @@ -5,7 +5,7 @@ /* eslint-disable */ -import { type SchemaDef, ExpressionUtils } from "@zenstackhq/schema"; +import { type SchemaDef, type AttributeApplication, type FieldDefault, ExpressionUtils } from "@zenstackhq/schema"; export class SchemaType implements SchemaDef { provider = { type: "postgresql" @@ -18,16 +18,16 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, userId: { name: "userId", type: "String", - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("user_id") }] }], + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("user_id") }] }] as readonly AttributeApplication[], foreignKeyFor: [ "user" - ] + ] as readonly string[] }, provider: { name: "provider", @@ -36,19 +36,19 @@ export class SchemaType implements SchemaDef { providerAccountId: { name: "providerAccountId", type: "String", - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("provider_account_id") }] }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("provider_account_id") }] }] as readonly AttributeApplication[] }, refresh_token: { name: "refresh_token", type: "String", optional: true, - attributes: [{ name: "@db.Text" }] + attributes: [{ name: "@db.Text" }] as readonly AttributeApplication[] }, access_token: { name: "access_token", type: "String", optional: true, - attributes: [{ name: "@db.Text" }] + attributes: [{ name: "@db.Text" }] as readonly AttributeApplication[] }, expires_at: { name: "expires_at", @@ -64,49 +64,49 @@ export class SchemaType implements SchemaDef { name: "id_token", type: "String", optional: true, - attributes: [{ name: "@db.Text" }] + attributes: [{ name: "@db.Text" }] as readonly AttributeApplication[] }, user: { name: "user", type: "User", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "accounts", fields: ["userId"], references: ["id"], onDelete: "Cascade" } }, accessTokenExpiresAt: { name: "accessTokenExpiresAt", type: "DateTime", optional: true, - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("access_token_expires_at") }] }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("access_token_expires_at") }] }] as readonly AttributeApplication[] }, refreshTokenExpiresAt: { name: "refreshTokenExpiresAt", type: "DateTime", optional: true, - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("refresh_token_expires_at") }] }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("refresh_token_expires_at") }] }] as readonly AttributeApplication[] }, password: { name: "password", type: "String", optional: true, - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("password") }] }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("password") }] }] as readonly AttributeApplication[] }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] + attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] as readonly AttributeApplication[] } }, attributes: [ { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("provider"), ExpressionUtils.field("providerAccountId")]) }] }, { name: "@@map", args: [{ name: "name", value: ExpressionUtils.literal("accounts") }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -120,8 +120,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, name: { name: "name", @@ -131,13 +131,13 @@ export class SchemaType implements SchemaDef { name: "email", type: "String", unique: true, - attributes: [{ name: "@unique" }, { name: "@db.Citext" }] + attributes: [{ name: "@unique" }, { name: "@db.Citext" }] as readonly AttributeApplication[] }, emailVerified: { name: "emailVerified", type: "Boolean", optional: true, - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("email_verified") }] }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("email_verified") }] }] as readonly AttributeApplication[] }, image: { name: "image", @@ -148,19 +148,19 @@ export class SchemaType implements SchemaDef { name: "timeZone", type: "String", optional: true, - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("time_zone") }] }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("time_zone") }] }] as readonly AttributeApplication[] }, weekStart: { name: "weekStart", type: "Int", optional: true, - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("week_start") }] }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("week_start") }] }] as readonly AttributeApplication[] }, timeFormat: { name: "timeFormat", type: "TimeFormat", optional: true, - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("time_format") }] }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("time_format") }] }] as readonly AttributeApplication[] }, locale: { name: "locale", @@ -170,63 +170,63 @@ export class SchemaType implements SchemaDef { createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", optional: true, updatedAt: true, - attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] + attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] as readonly AttributeApplication[] }, customerId: { name: "customerId", type: "String", optional: true, - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("customer_id") }] }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("customer_id") }] }] as readonly AttributeApplication[] }, banned: { name: "banned", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, bannedAt: { name: "bannedAt", type: "DateTime", optional: true, - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("banned_at") }] }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("banned_at") }] }] as readonly AttributeApplication[] }, banReason: { name: "banReason", type: "String", optional: true, - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("ban_reason") }] }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("ban_reason") }] }] as readonly AttributeApplication[] }, banExpires: { name: "banExpires", type: "DateTime", optional: true, - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("ban_expires") }] }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("ban_expires") }] }] as readonly AttributeApplication[] }, role: { name: "role", type: "UserRole", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("user") }] }], - default: "user" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("user") }] }] as readonly AttributeApplication[], + default: "user" as FieldDefault }, lastLoginMethod: { name: "lastLoginMethod", type: "String", optional: true, - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("last_login_method") }] }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("last_login_method") }] }] as readonly AttributeApplication[] }, isAnonymous: { name: "isAnonymous", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("anonymous") }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("anonymous") }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, comments: { name: "comments", @@ -274,14 +274,14 @@ export class SchemaType implements SchemaDef { name: "subscriptions", type: "Subscription", array: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("UserToSubscription") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("UserToSubscription") }] }] as readonly AttributeApplication[], relation: { opposite: "user", name: "UserToSubscription" } }, spaces: { name: "spaces", type: "Space", array: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("UserSpaces") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("UserSpaces") }] }] as readonly AttributeApplication[], relation: { opposite: "owner", name: "UserSpaces" } }, memberOf: { @@ -324,16 +324,16 @@ export class SchemaType implements SchemaDef { name: "defaultDestinationCalendarId", type: "String", optional: true, - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("default_destination_calendar_id") }] }], + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("default_destination_calendar_id") }] }] as readonly AttributeApplication[], foreignKeyFor: [ "defaultDestinationCalendar" - ] + ] as readonly string[] }, defaultDestinationCalendar: { name: "defaultDestinationCalendar", type: "ProviderCalendar", optional: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("UserDefaultDestinationCalendar") }, { name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("defaultDestinationCalendarId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("UserDefaultDestinationCalendar") }, { name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("defaultDestinationCalendarId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }] }] as readonly AttributeApplication[], relation: { opposite: "userDefaultDestination", name: "UserDefaultDestinationCalendar", fields: ["defaultDestinationCalendarId"], references: ["id"], onDelete: "SetNull" } }, sessions: { @@ -346,13 +346,13 @@ export class SchemaType implements SchemaDef { name: "impersonatedSessions", type: "Session", array: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("ImpersonatedSessions") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("ImpersonatedSessions") }] }] as readonly AttributeApplication[], relation: { opposite: "impersonatedByUser", name: "ImpersonatedSessions" } } }, attributes: [ { name: "@@map", args: [{ name: "name", value: ExpressionUtils.literal("users") }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -365,14 +365,14 @@ export class SchemaType implements SchemaDef { identifier: { name: "identifier", type: "String", - attributes: [{ name: "@db.Citext" }] + attributes: [{ name: "@db.Citext" }] as readonly AttributeApplication[] }, token: { name: "token", type: "String", id: true, unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, expires: { name: "expires", @@ -382,7 +382,7 @@ export class SchemaType implements SchemaDef { attributes: [ { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("identifier"), ExpressionUtils.field("token")]) }] }, { name: "@@map", args: [{ name: "name", value: ExpressionUtils.literal("verification_tokens") }] } - ], + ] as readonly AttributeApplication[], idFields: ["token"], uniqueFields: { token: { type: "String" }, @@ -396,12 +396,12 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }] + attributes: [{ name: "@id" }] as readonly AttributeApplication[] }, expiresAt: { name: "expiresAt", type: "DateTime", - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("expires_at") }] }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("expires_at") }] }] as readonly AttributeApplication[] }, token: { name: "token", @@ -410,62 +410,62 @@ export class SchemaType implements SchemaDef { createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] + attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] as readonly AttributeApplication[] }, ipAddress: { name: "ipAddress", type: "String", optional: true, - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("ip_address") }] }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("ip_address") }] }] as readonly AttributeApplication[] }, userAgent: { name: "userAgent", type: "String", optional: true, - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("user_agent") }] }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("user_agent") }] }] as readonly AttributeApplication[] }, userId: { name: "userId", type: "String", - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("user_id") }] }], + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("user_id") }] }] as readonly AttributeApplication[], foreignKeyFor: [ "user" - ] + ] as readonly string[] }, impersonatedBy: { name: "impersonatedBy", type: "String", optional: true, - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("impersonated_by") }] }], + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("impersonated_by") }] }] as readonly AttributeApplication[], foreignKeyFor: [ "impersonatedByUser" - ] + ] as readonly string[] }, user: { name: "user", type: "User", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "sessions", fields: ["userId"], references: ["id"], onDelete: "Cascade" } }, impersonatedByUser: { name: "impersonatedByUser", type: "User", optional: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("ImpersonatedSessions") }, { name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("impersonatedBy")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("ImpersonatedSessions") }, { name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("impersonatedBy")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }] }] as readonly AttributeApplication[], relation: { opposite: "impersonatedSessions", name: "ImpersonatedSessions", fields: ["impersonatedBy"], references: ["id"] } } }, attributes: [ { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("token")]) }] }, { name: "@@map", args: [{ name: "name", value: ExpressionUtils.literal("sessions") }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -479,7 +479,7 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }] + attributes: [{ name: "@id" }] as readonly AttributeApplication[] }, identifier: { name: "identifier", @@ -492,25 +492,25 @@ export class SchemaType implements SchemaDef { expiresAt: { name: "expiresAt", type: "DateTime", - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("expires_at") }] }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("expires_at") }] }] as readonly AttributeApplication[] }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault } }, attributes: [ { name: "@@map", args: [{ name: "name", value: ExpressionUtils.literal("verifications") }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" } @@ -524,19 +524,19 @@ export class SchemaType implements SchemaDef { type: "String", id: true, unique: true, - attributes: [{ name: "@id" }, { name: "@unique" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("id") }] }] + attributes: [{ name: "@id" }, { name: "@unique" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("id") }] }] as readonly AttributeApplication[] }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] + attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] as readonly AttributeApplication[] }, deadline: { name: "deadline", @@ -561,111 +561,111 @@ export class SchemaType implements SchemaDef { name: "userId", type: "String", optional: true, - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("user_id") }] }], + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("user_id") }] }] as readonly AttributeApplication[], foreignKeyFor: [ "user" - ] + ] as readonly string[] }, guestId: { name: "guestId", type: "String", optional: true, - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("guest_id") }] }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("guest_id") }] }] as readonly AttributeApplication[] }, timeZone: { name: "timeZone", type: "String", optional: true, - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("time_zone") }] }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("time_zone") }] }] as readonly AttributeApplication[] }, status: { name: "status", type: "PollStatus", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("live") }] }], - default: "live" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("live") }] }] as readonly AttributeApplication[], + default: "live" as FieldDefault }, deleted: { name: "deleted", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, deletedAt: { name: "deletedAt", type: "DateTime", optional: true, - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("deleted_at") }] }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("deleted_at") }] }] as readonly AttributeApplication[] }, touchedAt: { name: "touchedAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("touched_at") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("touched_at") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, participantUrlId: { name: "participantUrlId", type: "String", unique: true, - attributes: [{ name: "@unique" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("participant_url_id") }] }] + attributes: [{ name: "@unique" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("participant_url_id") }] }] as readonly AttributeApplication[] }, adminUrlId: { name: "adminUrlId", type: "String", unique: true, - attributes: [{ name: "@unique" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("admin_url_id") }] }] + attributes: [{ name: "@unique" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("admin_url_id") }] }] as readonly AttributeApplication[] }, eventId: { name: "eventId", type: "String", unique: true, optional: true, - attributes: [{ name: "@unique" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("event_id") }] }] + attributes: [{ name: "@unique" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("event_id") }] }] as readonly AttributeApplication[] }, scheduledEventId: { name: "scheduledEventId", type: "String", optional: true, - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("scheduled_event_id") }] }], + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("scheduled_event_id") }] }] as readonly AttributeApplication[], foreignKeyFor: [ "scheduledEvent" - ] + ] as readonly string[] }, hideParticipants: { name: "hideParticipants", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("hide_participants") }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("hide_participants") }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, hideScores: { name: "hideScores", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("hide_scores") }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("hide_scores") }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, disableComments: { name: "disableComments", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("disable_comments") }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("disable_comments") }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, requireParticipantEmail: { name: "requireParticipantEmail", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("require_participant_email") }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("require_participant_email") }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, user: { name: "user", type: "User", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "polls", fields: ["userId"], references: ["id"], onDelete: "Cascade" } }, scheduledEvent: { name: "scheduledEvent", type: "ScheduledEvent", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("scheduledEventId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("scheduledEventId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }] }] as readonly AttributeApplication[], relation: { opposite: "polls", fields: ["scheduledEventId"], references: ["id"], onDelete: "SetNull" } }, options: { @@ -708,17 +708,17 @@ export class SchemaType implements SchemaDef { name: "space", type: "Space", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("spaceId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("spaceId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }] }] as readonly AttributeApplication[], relation: { opposite: "polls", fields: ["spaceId"], references: ["id"], onDelete: "SetNull" } }, spaceId: { name: "spaceId", type: "String", optional: true, - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("space_id") }] }], + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("space_id") }] }] as readonly AttributeApplication[], foreignKeyFor: [ "space" - ] + ] as readonly string[] } }, attributes: [ @@ -726,7 +726,7 @@ export class SchemaType implements SchemaDef { { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("spaceId")]) }, { name: "type", value: ExpressionUtils.literal("Hash") }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("userId")]) }, { name: "type", value: ExpressionUtils.literal("Hash") }] }, { name: "@@map", args: [{ name: "name", value: ExpressionUtils.literal("polls") }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -742,48 +742,48 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, userId: { name: "userId", type: "String", - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("user_id") }] }], + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("user_id") }] }] as readonly AttributeApplication[], foreignKeyFor: [ "user" - ] + ] as readonly string[] }, pollId: { name: "pollId", type: "String", - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("poll_id") }] }], + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("poll_id") }] }] as readonly AttributeApplication[], foreignKeyFor: [ "poll" - ] + ] as readonly string[] }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, poll: { name: "poll", type: "Poll", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("pollId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("pollId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "watchers", fields: ["pollId"], references: ["id"], onDelete: "Cascade" } }, user: { name: "user", type: "User", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "watcher", fields: ["userId"], references: ["id"], onDelete: "Cascade" } } }, attributes: [ { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("pollId")]) }, { name: "type", value: ExpressionUtils.literal("Hash") }] }, { name: "@@map", args: [{ name: "name", value: ExpressionUtils.literal("watchers") }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "Int" } @@ -796,8 +796,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, name: { name: "name", @@ -812,24 +812,24 @@ export class SchemaType implements SchemaDef { name: "userId", type: "String", optional: true, - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("user_id") }] }], + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("user_id") }] }] as readonly AttributeApplication[], foreignKeyFor: [ "user" - ] + ] as readonly string[] }, guestId: { name: "guestId", type: "String", optional: true, - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("guest_id") }] }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("guest_id") }] }] as readonly AttributeApplication[] }, pollId: { name: "pollId", type: "String", - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("poll_id") }] }], + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("poll_id") }] }] as readonly AttributeApplication[], foreignKeyFor: [ "poll" - ] + ] as readonly string[] }, locale: { name: "locale", @@ -840,32 +840,32 @@ export class SchemaType implements SchemaDef { name: "timeZone", type: "String", optional: true, - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("time_zone") }] }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("time_zone") }] }] as readonly AttributeApplication[] }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", optional: true, updatedAt: true, - attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] + attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] as readonly AttributeApplication[] }, deleted: { name: "deleted", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, deletedAt: { name: "deletedAt", type: "DateTime", optional: true, - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("deleted_at") }] }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("deleted_at") }] }] as readonly AttributeApplication[] }, votes: { name: "votes", @@ -876,21 +876,21 @@ export class SchemaType implements SchemaDef { poll: { name: "poll", type: "Poll", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("pollId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("pollId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "participants", fields: ["pollId"], references: ["id"], onDelete: "Cascade" } }, user: { name: "user", type: "User", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }] }] as readonly AttributeApplication[], relation: { opposite: "participants", fields: ["userId"], references: ["id"], onDelete: "SetNull" } } }, attributes: [ { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("pollId")]) }, { name: "type", value: ExpressionUtils.literal("Hash") }] }, { name: "@@map", args: [{ name: "name", value: ExpressionUtils.literal("participants") }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" } @@ -903,33 +903,33 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, startTime: { name: "startTime", type: "DateTime", - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("start_time") }] }, { name: "@db.Timestamp", args: [{ name: "x", value: ExpressionUtils.literal(0) }] }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("start_time") }] }, { name: "@db.Timestamp", args: [{ name: "x", value: ExpressionUtils.literal(0) }] }] as readonly AttributeApplication[] }, duration: { name: "duration", type: "Int", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("duration_minutes") }] }], - default: 0 + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("duration_minutes") }] }] as readonly AttributeApplication[], + default: 0 as FieldDefault }, pollId: { name: "pollId", type: "String", - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("poll_id") }] }], + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("poll_id") }] }] as readonly AttributeApplication[], foreignKeyFor: [ "poll" - ] + ] as readonly string[] }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, votes: { name: "votes", @@ -940,14 +940,14 @@ export class SchemaType implements SchemaDef { poll: { name: "poll", type: "Poll", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("pollId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("pollId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "options", fields: ["pollId"], references: ["id"], onDelete: "Cascade" } } }, attributes: [ { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("pollId")]) }, { name: "type", value: ExpressionUtils.literal("Hash") }] }, { name: "@@map", args: [{ name: "name", value: ExpressionUtils.literal("options") }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" } @@ -960,68 +960,68 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, participantId: { name: "participantId", type: "String", - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("participant_id") }] }], + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("participant_id") }] }] as readonly AttributeApplication[], foreignKeyFor: [ "participant" - ] + ] as readonly string[] }, optionId: { name: "optionId", type: "String", - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("option_id") }] }], + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("option_id") }] }] as readonly AttributeApplication[], foreignKeyFor: [ "option" - ] + ] as readonly string[] }, pollId: { name: "pollId", type: "String", - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("poll_id") }] }], + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("poll_id") }] }] as readonly AttributeApplication[], foreignKeyFor: [ "poll" - ] + ] as readonly string[] }, type: { name: "type", type: "VoteType", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("yes") }] }], - default: "yes" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("yes") }] }] as readonly AttributeApplication[], + default: "yes" as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", optional: true, updatedAt: true, - attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] + attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] as readonly AttributeApplication[] }, participant: { name: "participant", type: "Participant", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("participantId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("participantId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "votes", fields: ["participantId"], references: ["id"], onDelete: "Cascade" } }, option: { name: "option", type: "Option", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("optionId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("optionId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "votes", fields: ["optionId"], references: ["id"], onDelete: "Cascade" } }, poll: { name: "poll", type: "Poll", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("pollId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("pollId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "votes", fields: ["pollId"], references: ["id"], onDelete: "Cascade" } } }, @@ -1030,7 +1030,7 @@ export class SchemaType implements SchemaDef { { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("participantId")]) }, { name: "type", value: ExpressionUtils.literal("Hash") }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("optionId")]) }, { name: "type", value: ExpressionUtils.literal("Hash") }] }, { name: "@@map", args: [{ name: "name", value: ExpressionUtils.literal("votes") }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" } @@ -1043,8 +1043,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, content: { name: "content", @@ -1053,62 +1053,62 @@ export class SchemaType implements SchemaDef { pollId: { name: "pollId", type: "String", - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("poll_id") }] }], + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("poll_id") }] }] as readonly AttributeApplication[], foreignKeyFor: [ "poll" - ] + ] as readonly string[] }, authorName: { name: "authorName", type: "String", - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("author_name") }] }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("author_name") }] }] as readonly AttributeApplication[] }, userId: { name: "userId", type: "String", optional: true, - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("user_id") }] }], + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("user_id") }] }] as readonly AttributeApplication[], foreignKeyFor: [ "user" - ] + ] as readonly string[] }, guestId: { name: "guestId", type: "String", optional: true, - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("guest_id") }] }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("guest_id") }] }] as readonly AttributeApplication[] }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", optional: true, updatedAt: true, - attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] + attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] as readonly AttributeApplication[] }, poll: { name: "poll", type: "Poll", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("pollId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("pollId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "comments", fields: ["pollId"], references: ["id"], onDelete: "Cascade" } }, user: { name: "user", type: "User", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "comments", fields: ["userId"], references: ["id"], onDelete: "Cascade" } } }, attributes: [ { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("pollId")]) }, { name: "type", value: ExpressionUtils.literal("Hash") }] }, { name: "@@map", args: [{ name: "name", value: ExpressionUtils.literal("comments") }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" } @@ -1121,55 +1121,55 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, pollId: { name: "pollId", type: "String", - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("poll_id") }] }], + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("poll_id") }] }] as readonly AttributeApplication[], foreignKeyFor: [ "poll" - ] + ] as readonly string[] }, ipAddress: { name: "ipAddress", type: "String", optional: true, - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("ip_address") }] }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("ip_address") }] }] as readonly AttributeApplication[] }, userId: { name: "userId", type: "String", optional: true, - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("user_id") }] }], + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("user_id") }] }] as readonly AttributeApplication[], foreignKeyFor: [ "user" - ] + ] as readonly string[] }, userAgent: { name: "userAgent", type: "String", optional: true, - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("user_agent") }] }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("user_agent") }] }] as readonly AttributeApplication[] }, viewedAt: { name: "viewedAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("viewed_at") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("viewed_at") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, poll: { name: "poll", type: "Poll", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("pollId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("pollId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "views", fields: ["pollId"], references: ["id"], onDelete: "Cascade" } }, user: { name: "user", type: "User", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }] }] as readonly AttributeApplication[], relation: { opposite: "pollViews", fields: ["userId"], references: ["id"], onDelete: "SetNull" } } }, @@ -1178,7 +1178,7 @@ export class SchemaType implements SchemaDef { { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("userId")]) }, { name: "type", value: ExpressionUtils.literal("Hash") }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("DateTime", [ExpressionUtils.field("viewedAt")]) }] }, { name: "@@map", args: [{ name: "name", value: ExpressionUtils.literal("poll_views") }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" } @@ -1191,8 +1191,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("uuid") }] }], - default: ExpressionUtils.call("uuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("uuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("uuid") as FieldDefault }, name: { name: "name", @@ -1206,33 +1206,33 @@ export class SchemaType implements SchemaDef { ownerId: { name: "ownerId", type: "String", - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("owner_id") }] }], + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("owner_id") }] }] as readonly AttributeApplication[], foreignKeyFor: [ "owner" - ] + ] as readonly string[] }, tier: { name: "tier", type: "SpaceTier", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("hobby") }] }], - default: "hobby" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("hobby") }] }] as readonly AttributeApplication[], + default: "hobby" as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] + attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] as readonly AttributeApplication[] }, owner: { name: "owner", type: "User", - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("UserSpaces") }, { name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("ownerId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("UserSpaces") }, { name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("ownerId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "spaces", name: "UserSpaces", fields: ["ownerId"], references: ["id"], onDelete: "Cascade" } }, polls: { @@ -1251,7 +1251,7 @@ export class SchemaType implements SchemaDef { name: "subscriptions", type: "Subscription", array: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("SpaceToSubscription") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("SpaceToSubscription") }] }] as readonly AttributeApplication[], relation: { opposite: "space", name: "SpaceToSubscription" } }, members: { @@ -1270,7 +1270,7 @@ export class SchemaType implements SchemaDef { attributes: [ { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("ownerId")]) }, { name: "type", value: ExpressionUtils.literal("Hash") }] }, { name: "@@map", args: [{ name: "name", value: ExpressionUtils.literal("spaces") }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" } @@ -1283,59 +1283,59 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("uuid") }] }], - default: ExpressionUtils.call("uuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("uuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("uuid") as FieldDefault }, spaceId: { name: "spaceId", type: "String", - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("space_id") }] }], + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("space_id") }] }] as readonly AttributeApplication[], foreignKeyFor: [ "space" - ] + ] as readonly string[] }, userId: { name: "userId", type: "String", - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("user_id") }] }], + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("user_id") }] }] as readonly AttributeApplication[], foreignKeyFor: [ "user" - ] + ] as readonly string[] }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] + attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] as readonly AttributeApplication[] }, role: { name: "role", type: "SpaceMemberRole", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("MEMBER") }] }], - default: "MEMBER" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("MEMBER") }] }] as readonly AttributeApplication[], + default: "MEMBER" as FieldDefault }, lastSelectedAt: { name: "lastSelectedAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("last_selected_at") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("last_selected_at") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, space: { name: "space", type: "Space", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("spaceId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("spaceId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "members", fields: ["spaceId"], references: ["id"], onDelete: "Cascade" } }, user: { name: "user", type: "User", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "memberOf", fields: ["userId"], references: ["id"], onDelete: "Cascade" } } }, @@ -1344,7 +1344,7 @@ export class SchemaType implements SchemaDef { { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("spaceId")]) }, { name: "type", value: ExpressionUtils.literal("Hash") }, { name: "map", value: ExpressionUtils.literal("space_members_space_id_idx") }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("userId")]) }, { name: "type", value: ExpressionUtils.literal("Hash") }, { name: "map", value: ExpressionUtils.literal("space_members_user_id_idx") }] }, { name: "@@map", args: [{ name: "name", value: ExpressionUtils.literal("space_members") }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -1358,16 +1358,16 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("uuid") }] }], - default: ExpressionUtils.call("uuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("uuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("uuid") as FieldDefault }, spaceId: { name: "spaceId", type: "String", - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("space_id") }] }], + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("space_id") }] }] as readonly AttributeApplication[], foreignKeyFor: [ "space" - ] + ] as readonly string[] }, email: { name: "email", @@ -1376,39 +1376,39 @@ export class SchemaType implements SchemaDef { createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] + attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] as readonly AttributeApplication[] }, role: { name: "role", type: "SpaceMemberRole", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("MEMBER") }] }], - default: "MEMBER" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("MEMBER") }] }] as readonly AttributeApplication[], + default: "MEMBER" as FieldDefault }, inviterId: { name: "inviterId", type: "String", - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("inviter_id") }] }], + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("inviter_id") }] }] as readonly AttributeApplication[], foreignKeyFor: [ "invitedBy" - ] + ] as readonly string[] }, invitedBy: { name: "invitedBy", type: "User", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("inviterId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("inviterId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "spaceMemberInvites", fields: ["inviterId"], references: ["id"], onDelete: "Cascade" } }, space: { name: "space", type: "Space", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("spaceId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("spaceId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "memberInvites", fields: ["spaceId"], references: ["id"], onDelete: "Cascade" } } }, @@ -1416,7 +1416,7 @@ export class SchemaType implements SchemaDef { { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("spaceId"), ExpressionUtils.field("email")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("spaceId")]) }, { name: "type", value: ExpressionUtils.literal("Hash") }, { name: "map", value: ExpressionUtils.literal("space_member_invites_space_id_idx") }] }, { name: "@@map", args: [{ name: "name", value: ExpressionUtils.literal("space_member_invites") }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -1430,23 +1430,23 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }] + attributes: [{ name: "@id" }] as readonly AttributeApplication[] }, priceId: { name: "priceId", type: "String", - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("price_id") }] }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("price_id") }] }] as readonly AttributeApplication[] }, quantity: { name: "quantity", type: "Int", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(1) }] }], - default: 1 + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(1) }] }] as readonly AttributeApplication[], + default: 1 as FieldDefault }, subscriptionItemId: { name: "subscriptionItemId", type: "String", - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("subscription_item_id") }] }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("subscription_item_id") }] }] as readonly AttributeApplication[] }, amount: { name: "amount", @@ -1471,51 +1471,51 @@ export class SchemaType implements SchemaDef { createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, periodStart: { name: "periodStart", type: "DateTime", - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("period_start") }] }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("period_start") }] }] as readonly AttributeApplication[] }, periodEnd: { name: "periodEnd", type: "DateTime", - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("period_end") }] }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("period_end") }] }] as readonly AttributeApplication[] }, cancelAtPeriodEnd: { name: "cancelAtPeriodEnd", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("cancel_at_period_end") }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("cancel_at_period_end") }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, userId: { name: "userId", type: "String", - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("user_id") }] }], + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("user_id") }] }] as readonly AttributeApplication[], foreignKeyFor: [ "user" - ] + ] as readonly string[] }, spaceId: { name: "spaceId", type: "String", - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("space_id") }] }], + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("space_id") }] }] as readonly AttributeApplication[], foreignKeyFor: [ "space" - ] + ] as readonly string[] }, user: { name: "user", type: "User", - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("UserToSubscription") }, { name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("UserToSubscription") }, { name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "subscriptions", name: "UserToSubscription", fields: ["userId"], references: ["id"], onDelete: "Cascade" } }, space: { name: "space", type: "Space", - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("SpaceToSubscription") }, { name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("spaceId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("SpaceToSubscription") }, { name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("spaceId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "subscriptions", name: "SpaceToSubscription", fields: ["spaceId"], references: ["id"], onDelete: "Cascade" } } }, @@ -1523,7 +1523,7 @@ export class SchemaType implements SchemaDef { { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("userId")]) }, { name: "type", value: ExpressionUtils.literal("Hash") }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("spaceId")]) }, { name: "type", value: ExpressionUtils.literal("Hash") }] }, { name: "@@map", args: [{ name: "name", value: ExpressionUtils.literal("subscriptions") }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" } @@ -1536,15 +1536,15 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }] + attributes: [{ name: "@id" }] as readonly AttributeApplication[] }, userId: { name: "userId", type: "String", - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("user_id") }] }], + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("user_id") }] }] as readonly AttributeApplication[], foreignKeyFor: [ "user" - ] + ] as readonly string[] }, type: { name: "type", @@ -1557,25 +1557,25 @@ export class SchemaType implements SchemaDef { createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] + attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] as readonly AttributeApplication[] }, user: { name: "user", type: "User", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "paymentMethods", fields: ["userId"], references: ["id"], onDelete: "Cascade" } } }, attributes: [ { name: "@@map", args: [{ name: "name", value: ExpressionUtils.literal("payment_methods") }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" } @@ -1588,24 +1588,24 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, userId: { name: "userId", type: "String", - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("user_id") }] }], + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("user_id") }] }] as readonly AttributeApplication[], foreignKeyFor: [ "user" - ] + ] as readonly string[] }, spaceId: { name: "spaceId", type: "String", - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("space_id") }] }], + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("space_id") }] }] as readonly AttributeApplication[], foreignKeyFor: [ "space" - ] + ] as readonly string[] }, title: { name: "title", @@ -1624,26 +1624,26 @@ export class SchemaType implements SchemaDef { createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] + attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] as readonly AttributeApplication[] }, status: { name: "status", type: "ScheduledEventStatus", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("confirmed") }] }], - default: "confirmed" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("confirmed") }] }] as readonly AttributeApplication[], + default: "confirmed" as FieldDefault }, timeZone: { name: "timeZone", type: "String", optional: true, - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("time_zone") }] }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("time_zone") }] }] as readonly AttributeApplication[] }, start: { name: "start", @@ -1656,37 +1656,37 @@ export class SchemaType implements SchemaDef { allDay: { name: "allDay", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("all_day") }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("all_day") }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, deletedAt: { name: "deletedAt", type: "DateTime", optional: true, - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("deleted_at") }] }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("deleted_at") }] }] as readonly AttributeApplication[] }, sequence: { name: "sequence", type: "Int", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }], - default: 0 + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }] as readonly AttributeApplication[], + default: 0 as FieldDefault }, uid: { name: "uid", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, user: { name: "user", type: "User", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "scheduledEvents", fields: ["userId"], references: ["id"], onDelete: "Cascade" } }, space: { name: "space", type: "Space", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("spaceId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("spaceId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "scheduledEvents", fields: ["spaceId"], references: ["id"], onDelete: "Cascade" } }, rescheduledDates: { @@ -1712,7 +1712,7 @@ export class SchemaType implements SchemaDef { { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("spaceId")]) }, { name: "type", value: ExpressionUtils.literal("Hash") }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("userId")]) }, { name: "type", value: ExpressionUtils.literal("Hash") }] }, { name: "@@map", args: [{ name: "name", value: ExpressionUtils.literal("scheduled_events") }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -1726,50 +1726,50 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, scheduledEventId: { name: "scheduledEventId", type: "String", - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("scheduled_event_id") }] }], + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("scheduled_event_id") }] }] as readonly AttributeApplication[], foreignKeyFor: [ "scheduledEvent" - ] + ] as readonly string[] }, start: { name: "start", type: "DateTime", - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("start") }] }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("start") }] }] as readonly AttributeApplication[] }, end: { name: "end", type: "DateTime", - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("end") }] }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("end") }] }] as readonly AttributeApplication[] }, allDay: { name: "allDay", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("all_day") }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("all_day") }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, scheduledEvent: { name: "scheduledEvent", type: "ScheduledEvent", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("scheduledEventId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("scheduledEventId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "rescheduledDates", fields: ["scheduledEventId"], references: ["id"], onDelete: "Cascade" } } }, attributes: [ { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("scheduledEventId")]) }] }, { name: "@@map", args: [{ name: "name", value: ExpressionUtils.literal("rescheduled_event_dates") }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" } @@ -1782,71 +1782,71 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, scheduledEventId: { name: "scheduledEventId", type: "String", - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("scheduled_event_id") }] }], + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("scheduled_event_id") }] }] as readonly AttributeApplication[], foreignKeyFor: [ "scheduledEvent" - ] + ] as readonly string[] }, inviteeName: { name: "inviteeName", type: "String", - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("invitee_name") }] }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("invitee_name") }] }] as readonly AttributeApplication[] }, inviteeEmail: { name: "inviteeEmail", type: "String", - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("invitee_email") }] }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("invitee_email") }] }] as readonly AttributeApplication[] }, inviteeId: { name: "inviteeId", type: "String", optional: true, - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("invitee_id") }] }], + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("invitee_id") }] }] as readonly AttributeApplication[], foreignKeyFor: [ "user" - ] + ] as readonly string[] }, inviteeTimeZone: { name: "inviteeTimeZone", type: "String", optional: true, - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("invitee_time_zone") }] }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("invitee_time_zone") }] }] as readonly AttributeApplication[] }, status: { name: "status", type: "ScheduledEventInviteStatus", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("pending") }] }], - default: "pending" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("pending") }] }] as readonly AttributeApplication[], + default: "pending" as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] + attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] as readonly AttributeApplication[] }, scheduledEvent: { name: "scheduledEvent", type: "ScheduledEvent", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("scheduledEventId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("scheduledEventId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "invites", fields: ["scheduledEventId"], references: ["id"], onDelete: "Cascade" } }, user: { name: "user", type: "User", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("inviteeId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("inviteeId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }] }] as readonly AttributeApplication[], relation: { opposite: "scheduledEventInvites", fields: ["inviteeId"], references: ["id"], onDelete: "SetNull" } } }, @@ -1855,7 +1855,7 @@ export class SchemaType implements SchemaDef { { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("inviteeId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("inviteeEmail")]) }] }, { name: "@@map", args: [{ name: "name", value: ExpressionUtils.literal("scheduled_event_invites") }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" } @@ -1868,16 +1868,16 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, userId: { name: "userId", type: "String", - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("user_id") }] }], + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("user_id") }] }] as readonly AttributeApplication[], foreignKeyFor: [ "user" - ] + ] as readonly string[] }, provider: { name: "provider", @@ -1886,7 +1886,7 @@ export class SchemaType implements SchemaDef { providerAccountId: { name: "providerAccountId", type: "String", - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("provider_account_id") }] }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("provider_account_id") }] }] as readonly AttributeApplication[] }, type: { name: "type", @@ -1895,7 +1895,7 @@ export class SchemaType implements SchemaDef { secret: { name: "secret", type: "String", - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("secret") }] }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("secret") }] }] as readonly AttributeApplication[] }, scopes: { name: "scopes", @@ -1906,19 +1906,19 @@ export class SchemaType implements SchemaDef { name: "expiresAt", type: "DateTime", optional: true, - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("expires_at") }] }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("expires_at") }] }] as readonly AttributeApplication[] }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] + attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] as readonly AttributeApplication[] }, calendarConnections: { name: "calendarConnections", @@ -1929,7 +1929,7 @@ export class SchemaType implements SchemaDef { user: { name: "user", type: "User", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "credentials", fields: ["userId"], references: ["id"], onDelete: "Cascade" } } }, @@ -1937,7 +1937,7 @@ export class SchemaType implements SchemaDef { { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("userId"), ExpressionUtils.field("provider"), ExpressionUtils.field("providerAccountId")]) }, { name: "name", value: ExpressionUtils.literal("user_provider_account_unique") }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("DateTime", [ExpressionUtils.field("expiresAt")]) }, { name: "name", value: ExpressionUtils.literal("credential_expiry_idx") }] }, { name: "@@map", args: [{ name: "name", value: ExpressionUtils.literal("credentials") }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -1951,16 +1951,16 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, userId: { name: "userId", type: "String", - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("user_id") }] }], + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("user_id") }] }] as readonly AttributeApplication[], foreignKeyFor: [ "user" - ] + ] as readonly string[] }, provider: { name: "provider", @@ -1969,12 +1969,12 @@ export class SchemaType implements SchemaDef { integrationId: { name: "integrationId", type: "String", - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("integration_id") }] }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("integration_id") }] }] as readonly AttributeApplication[] }, providerAccountId: { name: "providerAccountId", type: "String", - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("provider_account_id") }] }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("provider_account_id") }] }] as readonly AttributeApplication[] }, email: { name: "email", @@ -1984,38 +1984,38 @@ export class SchemaType implements SchemaDef { name: "displayName", type: "String", optional: true, - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("display_name") }] }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("display_name") }] }] as readonly AttributeApplication[] }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] + attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] as readonly AttributeApplication[] }, credential: { name: "credential", type: "Credential", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("credentialId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("credentialId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "calendarConnections", fields: ["credentialId"], references: ["id"], onDelete: "Cascade" } }, credentialId: { name: "credentialId", type: "String", - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("credential_id") }] }], + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("credential_id") }] }] as readonly AttributeApplication[], foreignKeyFor: [ "credential" - ] + ] as readonly string[] }, user: { name: "user", type: "User", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "calendarConnections", fields: ["userId"], references: ["id"], onDelete: "Cascade" } }, providerCalendars: { @@ -2028,7 +2028,7 @@ export class SchemaType implements SchemaDef { attributes: [ { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("userId"), ExpressionUtils.field("provider"), ExpressionUtils.field("providerAccountId")]) }, { name: "name", value: ExpressionUtils.literal("user_provider_account_unique") }] }, { name: "@@map", args: [{ name: "name", value: ExpressionUtils.literal("calendar_connections") }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -2042,21 +2042,21 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, calendarConnectionId: { name: "calendarConnectionId", type: "String", - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("calendar_connection_id") }] }], + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("calendar_connection_id") }] }] as readonly AttributeApplication[], foreignKeyFor: [ "calendarConnection" - ] + ] as readonly string[] }, providerCalendarId: { name: "providerCalendarId", type: "String", - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("provider_calendar_id") }] }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("provider_calendar_id") }] }] as readonly AttributeApplication[] }, name: { name: "name", @@ -2065,68 +2065,68 @@ export class SchemaType implements SchemaDef { isPrimary: { name: "isPrimary", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("primary") }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("primary") }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, timeZone: { name: "timeZone", type: "String", optional: true, - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("time_zone") }] }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("time_zone") }] }] as readonly AttributeApplication[] }, isSelected: { name: "isSelected", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("selected") }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("selected") }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, isDeleted: { name: "isDeleted", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("deleted") }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("deleted") }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, isWritable: { name: "isWritable", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("writable") }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("writable") }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, providerData: { name: "providerData", type: "Json", optional: true, - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("provider_data") }] }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("provider_data") }] }] as readonly AttributeApplication[] }, lastSyncedAt: { name: "lastSyncedAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("last_synced_at") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("last_synced_at") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] + attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] as readonly AttributeApplication[] }, calendarConnection: { name: "calendarConnection", type: "CalendarConnection", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("calendarConnectionId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("calendarConnectionId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "providerCalendars", fields: ["calendarConnectionId"], references: ["id"], onDelete: "Cascade" } }, userDefaultDestination: { name: "userDefaultDestination", type: "User", array: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("UserDefaultDestinationCalendar") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("UserDefaultDestinationCalendar") }] }] as readonly AttributeApplication[], relation: { opposite: "defaultDestinationCalendar", name: "UserDefaultDestinationCalendar" } } }, @@ -2136,7 +2136,7 @@ export class SchemaType implements SchemaDef { { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Boolean", [ExpressionUtils.field("isPrimary")]) }, { name: "name", value: ExpressionUtils.literal("primary_calendar_idx") }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("DateTime", [ExpressionUtils.field("lastSyncedAt")]) }, { name: "name", value: ExpressionUtils.literal("sync_time_idx") }] }, { name: "@@map", args: [{ name: "name", value: ExpressionUtils.literal("provider_calendars") }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -2150,32 +2150,32 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(1) }] }], - default: 1 + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(1) }] }] as readonly AttributeApplication[], + default: 1 as FieldDefault }, disableUserRegistration: { name: "disableUserRegistration", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("disable_user_registration") }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("disable_user_registration") }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault } }, attributes: [ { name: "@@map", args: [{ name: "name", value: ExpressionUtils.literal("instance_settings") }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "Int" } @@ -2188,20 +2188,20 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, licenseKey: { name: "licenseKey", type: "String", unique: true, - attributes: [{ name: "@unique" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("license_key") }] }] + attributes: [{ name: "@unique" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("license_key") }] }] as readonly AttributeApplication[] }, version: { name: "version", type: "Int", optional: true, - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("version") }] }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("version") }] }] as readonly AttributeApplication[] }, type: { name: "type", @@ -2211,37 +2211,37 @@ export class SchemaType implements SchemaDef { name: "seats", type: "Int", optional: true, - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("seats") }] }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("seats") }] }] as readonly AttributeApplication[] }, issuedAt: { name: "issuedAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("issued_at") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("issued_at") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, expiresAt: { name: "expiresAt", type: "DateTime", optional: true, - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("expires_at") }] }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("expires_at") }] }] as readonly AttributeApplication[] }, licenseeEmail: { name: "licenseeEmail", type: "String", optional: true, - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("licensee_email") }] }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("licensee_email") }] }] as readonly AttributeApplication[] }, licenseeName: { name: "licenseeName", type: "String", optional: true, - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("licensee_name") }] }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("licensee_name") }] }] as readonly AttributeApplication[] }, status: { name: "status", type: "LicenseStatus", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("ACTIVE") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("status") }] }], - default: "ACTIVE" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("ACTIVE") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("status") }] }] as readonly AttributeApplication[], + default: "ACTIVE" as FieldDefault }, validations: { name: "validations", @@ -2252,7 +2252,7 @@ export class SchemaType implements SchemaDef { }, attributes: [ { name: "@@map", args: [{ name: "name", value: ExpressionUtils.literal("licenses") }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -2266,51 +2266,51 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, licenseId: { name: "licenseId", type: "String", - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("license_id") }] }], + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("license_id") }] }] as readonly AttributeApplication[], foreignKeyFor: [ "license" - ] + ] as readonly string[] }, license: { name: "license", type: "License", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("licenseId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("licenseId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "validations", fields: ["licenseId"], references: ["id"], onDelete: "Cascade" } }, ipAddress: { name: "ipAddress", type: "String", optional: true, - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("ip_address") }] }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("ip_address") }] }] as readonly AttributeApplication[] }, fingerprint: { name: "fingerprint", type: "String", optional: true, - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("fingerprint") }] }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("fingerprint") }] }] as readonly AttributeApplication[] }, validatedAt: { name: "validatedAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("validated_at") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("validated_at") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, userAgent: { name: "userAgent", type: "String", optional: true, - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("user_agent") }] }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("user_agent") }] }] as readonly AttributeApplication[] } }, attributes: [ { name: "@@map", args: [{ name: "name", value: ExpressionUtils.literal("license_validations") }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" } @@ -2323,20 +2323,20 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, licenseKey: { name: "licenseKey", type: "String", unique: true, - attributes: [{ name: "@unique" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("license_key") }] }] + attributes: [{ name: "@unique" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("license_key") }] }] as readonly AttributeApplication[] }, version: { name: "version", type: "Int", optional: true, - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("version") }] }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("version") }] }] as readonly AttributeApplication[] }, type: { name: "type", @@ -2346,42 +2346,42 @@ export class SchemaType implements SchemaDef { name: "seats", type: "Int", optional: true, - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("seats") }] }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("seats") }] }] as readonly AttributeApplication[] }, issuedAt: { name: "issuedAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("issued_at") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("issued_at") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, expiresAt: { name: "expiresAt", type: "DateTime", optional: true, - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("expires_at") }] }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("expires_at") }] }] as readonly AttributeApplication[] }, licenseeEmail: { name: "licenseeEmail", type: "String", optional: true, - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("licensee_email") }] }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("licensee_email") }] }] as readonly AttributeApplication[] }, licenseeName: { name: "licenseeName", type: "String", optional: true, - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("licensee_name") }] }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("licensee_name") }] }] as readonly AttributeApplication[] }, status: { name: "status", type: "LicenseStatus", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("ACTIVE") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("status") }] }], - default: "ACTIVE" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("ACTIVE") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("status") }] }] as readonly AttributeApplication[], + default: "ACTIVE" as FieldDefault } }, attributes: [ { name: "@@map", args: [{ name: "name", value: ExpressionUtils.literal("instance_licenses") }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -2398,7 +2398,7 @@ export class SchemaType implements SchemaDef { }, attributes: [ { name: "@@map", args: [{ name: "name", value: ExpressionUtils.literal("time_format") }] } - ] + ] as readonly AttributeApplication[] }, UserRole: { name: "UserRole", @@ -2408,7 +2408,7 @@ export class SchemaType implements SchemaDef { }, attributes: [ { name: "@@map", args: [{ name: "name", value: ExpressionUtils.literal("user_role") }] } - ] + ] as readonly AttributeApplication[] }, ParticipantVisibility: { name: "ParticipantVisibility", @@ -2419,7 +2419,7 @@ export class SchemaType implements SchemaDef { }, attributes: [ { name: "@@map", args: [{ name: "name", value: ExpressionUtils.literal("participant_visibility") }] } - ] + ] as readonly AttributeApplication[] }, PollStatus: { name: "PollStatus", @@ -2430,7 +2430,7 @@ export class SchemaType implements SchemaDef { }, attributes: [ { name: "@@map", args: [{ name: "name", value: ExpressionUtils.literal("poll_status") }] } - ] + ] as readonly AttributeApplication[] }, VoteType: { name: "VoteType", @@ -2441,7 +2441,7 @@ export class SchemaType implements SchemaDef { }, attributes: [ { name: "@@map", args: [{ name: "name", value: ExpressionUtils.literal("vote_type") }] } - ] + ] as readonly AttributeApplication[] }, SpaceMemberRole: { name: "SpaceMemberRole", @@ -2458,7 +2458,7 @@ export class SchemaType implements SchemaDef { }, attributes: [ { name: "@@map", args: [{ name: "name", value: ExpressionUtils.literal("space_tiers") }] } - ] + ] as readonly AttributeApplication[] }, SubscriptionStatus: { name: "SubscriptionStatus", @@ -2474,7 +2474,7 @@ export class SchemaType implements SchemaDef { }, attributes: [ { name: "@@map", args: [{ name: "name", value: ExpressionUtils.literal("subscription_status") }] } - ] + ] as readonly AttributeApplication[] }, SubscriptionInterval: { name: "SubscriptionInterval", @@ -2484,7 +2484,7 @@ export class SchemaType implements SchemaDef { }, attributes: [ { name: "@@map", args: [{ name: "name", value: ExpressionUtils.literal("subscription_interval") }] } - ] + ] as readonly AttributeApplication[] }, ScheduledEventStatus: { name: "ScheduledEventStatus", @@ -2495,7 +2495,7 @@ export class SchemaType implements SchemaDef { }, attributes: [ { name: "@@map", args: [{ name: "name", value: ExpressionUtils.literal("scheduled_event_status") }] } - ] + ] as readonly AttributeApplication[] }, ScheduledEventInviteStatus: { name: "ScheduledEventInviteStatus", @@ -2507,7 +2507,7 @@ export class SchemaType implements SchemaDef { }, attributes: [ { name: "@@map", args: [{ name: "name", value: ExpressionUtils.literal("scheduled_event_invite_status") }] } - ] + ] as readonly AttributeApplication[] }, CredentialType: { name: "CredentialType", diff --git a/tests/e2e/github-repos/cal.com/schema.ts b/tests/e2e/github-repos/cal.com/schema.ts index dc3e4194b..787417aee 100644 --- a/tests/e2e/github-repos/cal.com/schema.ts +++ b/tests/e2e/github-repos/cal.com/schema.ts @@ -5,7 +5,7 @@ /* eslint-disable */ -import { type SchemaDef, ExpressionUtils } from "@zenstackhq/schema"; +import { type SchemaDef, type AttributeApplication, type FieldDefault, ExpressionUtils } from "@zenstackhq/schema"; export class SchemaType implements SchemaDef { provider = { type: "postgresql" @@ -17,7 +17,7 @@ export class SchemaType implements SchemaDef { user: { name: "user", type: "User", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "hosts", fields: ["userId"], references: ["id"], onDelete: "Cascade" } }, userId: { @@ -26,12 +26,12 @@ export class SchemaType implements SchemaDef { id: true, foreignKeyFor: [ "user" - ] + ] as readonly string[] }, eventType: { name: "eventType", type: "EventType", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("eventTypeId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("eventTypeId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "hosts", fields: ["eventTypeId"], references: ["id"], onDelete: "Cascade" } }, eventTypeId: { @@ -40,13 +40,13 @@ export class SchemaType implements SchemaDef { id: true, foreignKeyFor: [ "eventType" - ] + ] as readonly string[] }, isFixed: { name: "isFixed", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, priority: { name: "priority", @@ -67,7 +67,7 @@ export class SchemaType implements SchemaDef { name: "schedule", type: "Schedule", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("scheduleId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("scheduleId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }] }] as readonly AttributeApplication[], relation: { opposite: "Host", fields: ["scheduleId"], references: ["id"] } }, scheduleId: { @@ -76,13 +76,13 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "schedule" - ] + ] as readonly string[] }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault } }, attributes: [ @@ -90,7 +90,7 @@ export class SchemaType implements SchemaDef { { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("eventTypeId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("scheduleId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["userId", "eventTypeId"], uniqueFields: { userId_eventTypeId: { userId: { type: "Int" }, eventTypeId: { type: "Int" } } @@ -103,34 +103,34 @@ export class SchemaType implements SchemaDef { name: "eventTypeId", type: "Int", id: true, - attributes: [{ name: "@id" }], + attributes: [{ name: "@id" }] as readonly AttributeApplication[], foreignKeyFor: [ "eventType" - ] + ] as readonly string[] }, eventType: { name: "eventType", type: "EventType", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("eventTypeId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("eventTypeId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "calVideoSettings", fields: ["eventTypeId"], references: ["id"], onDelete: "Cascade" } }, disableRecordingForOrganizer: { name: "disableRecordingForOrganizer", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, disableRecordingForGuests: { name: "disableRecordingForGuests", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, enableAutomaticTranscription: { name: "enableAutomaticTranscription", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, redirectUrlOnExit: { name: "redirectUrlOnExit", @@ -140,26 +140,26 @@ export class SchemaType implements SchemaDef { disableTranscriptionForGuests: { name: "disableTranscriptionForGuests", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, disableTranscriptionForOrganizer: { name: "disableTranscriptionForOrganizer", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] } }, idFields: ["eventTypeId"], @@ -174,8 +174,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, title: { name: "title", @@ -198,8 +198,8 @@ export class SchemaType implements SchemaDef { position: { name: "position", type: "Int", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }], - default: 0 + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }] as readonly AttributeApplication[], + default: 0 as FieldDefault }, locations: { name: "locations", @@ -213,14 +213,14 @@ export class SchemaType implements SchemaDef { offsetStart: { name: "offsetStart", type: "Int", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }], - default: 0 + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }] as readonly AttributeApplication[], + default: 0 as FieldDefault }, hidden: { name: "hidden", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, hosts: { name: "hosts", @@ -232,14 +232,14 @@ export class SchemaType implements SchemaDef { name: "users", type: "User", array: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("user_eventtype") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("user_eventtype") }] }] as readonly AttributeApplication[], relation: { opposite: "eventTypes", name: "user_eventtype" } }, owner: { name: "owner", type: "User", optional: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("owner") }, { name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("owner") }, { name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "ownedEventTypes", name: "owner", fields: ["userId"], references: ["id"], onDelete: "Cascade" } }, userId: { @@ -248,7 +248,7 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "owner" - ] + ] as readonly string[] }, profileId: { name: "profileId", @@ -256,20 +256,20 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "profile" - ] + ] as readonly string[] }, profile: { name: "profile", type: "Profile", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("profileId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("profileId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }] }] as readonly AttributeApplication[], relation: { opposite: "eventTypes", fields: ["profileId"], references: ["id"] } }, team: { name: "team", type: "Team", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("teamId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("teamId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "eventTypes", fields: ["teamId"], references: ["id"], onDelete: "Cascade" } }, teamId: { @@ -278,7 +278,7 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "team" - ] + ] as readonly string[] }, hashedLink: { name: "hashedLink", @@ -313,8 +313,8 @@ export class SchemaType implements SchemaDef { useEventLevelSelectedCalendars: { name: "useEventLevelSelectedCalendars", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, eventName: { name: "eventName", @@ -333,20 +333,20 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "parent" - ] + ] as readonly string[] }, parent: { name: "parent", type: "EventType", optional: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("managed_eventtype") }, { name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("parentId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("managed_eventtype") }, { name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("parentId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "children", name: "managed_eventtype", fields: ["parentId"], references: ["id"], onDelete: "Cascade" } }, children: { name: "children", type: "EventType", array: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("managed_eventtype") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("managed_eventtype") }] }] as readonly AttributeApplication[], relation: { opposite: "parent", name: "managed_eventtype" } }, bookingFields: { @@ -362,8 +362,8 @@ export class SchemaType implements SchemaDef { periodType: { name: "periodType", type: "PeriodType", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("UNLIMITED") }] }], - default: "UNLIMITED" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("UNLIMITED") }] }] as readonly AttributeApplication[], + default: "UNLIMITED" as FieldDefault }, periodStartDate: { name: "periodStartDate", @@ -388,44 +388,44 @@ export class SchemaType implements SchemaDef { lockTimeZoneToggleOnBookingPage: { name: "lockTimeZoneToggleOnBookingPage", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, requiresConfirmation: { name: "requiresConfirmation", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, requiresConfirmationWillBlockSlot: { name: "requiresConfirmationWillBlockSlot", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, requiresConfirmationForFreeEmail: { name: "requiresConfirmationForFreeEmail", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, requiresBookerEmailVerification: { name: "requiresBookerEmailVerification", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, canSendCalVideoTranscriptionEmails: { name: "canSendCalVideoTranscriptionEmails", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(true) }] }], - default: true + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(true) }] }] as readonly AttributeApplication[], + default: true as FieldDefault }, autoTranslateDescriptionEnabled: { name: "autoTranslateDescriptionEnabled", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, recurringEvent: { name: "recurringEvent", @@ -435,38 +435,38 @@ export class SchemaType implements SchemaDef { disableGuests: { name: "disableGuests", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, hideCalendarNotes: { name: "hideCalendarNotes", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, hideCalendarEventDetails: { name: "hideCalendarEventDetails", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, minimumBookingNotice: { name: "minimumBookingNotice", type: "Int", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(120) }] }], - default: 120 + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(120) }] }] as readonly AttributeApplication[], + default: 120 as FieldDefault }, beforeEventBuffer: { name: "beforeEventBuffer", type: "Int", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }], - default: 0 + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }] as readonly AttributeApplication[], + default: 0 as FieldDefault }, afterEventBuffer: { name: "afterEventBuffer", type: "Int", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }], - default: 0 + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }] as readonly AttributeApplication[], + default: 0 as FieldDefault }, seatsPerTimeSlot: { name: "seatsPerTimeSlot", @@ -476,36 +476,36 @@ export class SchemaType implements SchemaDef { onlyShowFirstAvailableSlot: { name: "onlyShowFirstAvailableSlot", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, disableCancelling: { name: "disableCancelling", type: "Boolean", optional: true, - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, disableRescheduling: { name: "disableRescheduling", type: "Boolean", optional: true, - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, seatsShowAttendees: { name: "seatsShowAttendees", type: "Boolean", optional: true, - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, seatsShowAvailabilityCount: { name: "seatsShowAvailabilityCount", type: "Boolean", optional: true, - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(true) }] }], - default: true + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(true) }] }] as readonly AttributeApplication[], + default: true as FieldDefault }, schedulingType: { name: "schedulingType", @@ -516,7 +516,7 @@ export class SchemaType implements SchemaDef { name: "schedule", type: "Schedule", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("scheduleId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("scheduleId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }] }] as readonly AttributeApplication[], relation: { opposite: "eventType", fields: ["scheduleId"], references: ["id"] } }, scheduleId: { @@ -525,26 +525,26 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "schedule" - ] + ] as readonly string[] }, allowReschedulingCancelledBookings: { name: "allowReschedulingCancelledBookings", type: "Boolean", optional: true, - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, price: { name: "price", type: "Int", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }], - default: 0 + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }] as readonly AttributeApplication[], + default: 0 as FieldDefault }, currency: { name: "currency", type: "String", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("usd") }] }], - default: "usd" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("usd") }] }] as readonly AttributeApplication[], + default: "usd" as FieldDefault }, slotInterval: { name: "slotInterval", @@ -565,8 +565,8 @@ export class SchemaType implements SchemaDef { name: "forwardParamsSuccessRedirect", type: "Boolean", optional: true, - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(true) }] }], - default: true + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(true) }] }] as readonly AttributeApplication[], + default: true as FieldDefault }, workflows: { name: "workflows", @@ -587,14 +587,14 @@ export class SchemaType implements SchemaDef { isInstantEvent: { name: "isInstantEvent", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, instantMeetingExpiryTimeOffsetInSeconds: { name: "instantMeetingExpiryTimeOffsetInSeconds", type: "Int", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(90) }] }], - default: 90 + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(90) }] }] as readonly AttributeApplication[], + default: 90 as FieldDefault }, instantMeetingScheduleId: { name: "instantMeetingScheduleId", @@ -602,13 +602,13 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "instantMeetingSchedule" - ] + ] as readonly string[] }, instantMeetingSchedule: { name: "instantMeetingSchedule", type: "Schedule", optional: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("InstantMeetingSchedule") }, { name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("instantMeetingScheduleId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("InstantMeetingSchedule") }, { name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("instantMeetingScheduleId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }] }] as readonly AttributeApplication[], relation: { opposite: "instantMeetingEvents", name: "InstantMeetingSchedule", fields: ["instantMeetingScheduleId"], references: ["id"] } }, instantMeetingParameters: { @@ -619,14 +619,14 @@ export class SchemaType implements SchemaDef { assignAllTeamMembers: { name: "assignAllTeamMembers", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, assignRRMembersUsingSegment: { name: "assignRRMembersUsingSegment", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, rrSegmentQueryValue: { name: "rrSegmentQueryValue", @@ -636,8 +636,8 @@ export class SchemaType implements SchemaDef { useEventTypeDestinationCalendarEmail: { name: "useEventTypeDestinationCalendarEmail", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, aiPhoneCallConfig: { name: "aiPhoneCallConfig", @@ -648,8 +648,8 @@ export class SchemaType implements SchemaDef { isRRWeightsEnabled: { name: "isRRWeightsEnabled", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, fieldTranslations: { name: "fieldTranslations", @@ -665,8 +665,8 @@ export class SchemaType implements SchemaDef { includeNoShowInRRCalculation: { name: "includeNoShowInRRCalculation", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, selectedCalendars: { name: "selectedCalendars", @@ -677,14 +677,14 @@ export class SchemaType implements SchemaDef { allowReschedulingPastBookings: { name: "allowReschedulingPastBookings", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, hideOrganizerEmail: { name: "hideOrganizerEmail", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, maxActiveBookingsPerBooker: { name: "maxActiveBookingsPerBooker", @@ -694,8 +694,8 @@ export class SchemaType implements SchemaDef { maxActiveBookingPerBookerOfferReschedule: { name: "maxActiveBookingPerBookerOfferReschedule", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, customReplyToEmail: { name: "customReplyToEmail", @@ -716,8 +716,8 @@ export class SchemaType implements SchemaDef { rescheduleWithSameRoundRobinHost: { name: "rescheduleWithSameRoundRobinHost", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, secondaryEmailId: { name: "secondaryEmailId", @@ -725,20 +725,20 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "secondaryEmail" - ] + ] as readonly string[] }, secondaryEmail: { name: "secondaryEmail", type: "SecondaryEmail", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("secondaryEmailId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("secondaryEmailId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "eventTypes", fields: ["secondaryEmailId"], references: ["id"], onDelete: "Cascade" } }, useBookerTimezone: { name: "useBookerTimezone", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, restrictionScheduleId: { name: "restrictionScheduleId", @@ -746,13 +746,13 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "restrictionSchedule" - ] + ] as readonly string[] }, restrictionSchedule: { name: "restrictionSchedule", type: "Schedule", optional: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("restrictionSchedule") }, { name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("restrictionScheduleId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("restrictionSchedule") }, { name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("restrictionScheduleId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }] }] as readonly AttributeApplication[], relation: { opposite: "restrictionSchedule", name: "restrictionSchedule", fields: ["restrictionScheduleId"], references: ["id"] } } }, @@ -767,7 +767,7 @@ export class SchemaType implements SchemaDef { { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("secondaryEmailId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("parentId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("restrictionScheduleId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "Int" }, @@ -783,8 +783,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, type: { name: "type", @@ -798,7 +798,7 @@ export class SchemaType implements SchemaDef { name: "user", type: "User", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "credentials", fields: ["userId"], references: ["id"], onDelete: "Cascade" } }, userId: { @@ -807,13 +807,13 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "user" - ] + ] as readonly string[] }, team: { name: "team", type: "Team", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("teamId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("teamId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "credentials", fields: ["teamId"], references: ["id"], onDelete: "Cascade" } }, teamId: { @@ -822,13 +822,13 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "team" - ] + ] as readonly string[] }, app: { name: "app", type: "App", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("appId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("slug")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("appId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("slug")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "credentials", fields: ["appId"], references: ["slug"], onDelete: "Cascade" } }, appId: { @@ -837,7 +837,7 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "app" - ] + ] as readonly string[] }, subscriptionId: { name: "subscriptionId", @@ -870,8 +870,8 @@ export class SchemaType implements SchemaDef { name: "invalid", type: "Boolean", optional: true, - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, CalendarCache: { name: "CalendarCache", @@ -891,13 +891,13 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "delegationCredential" - ] + ] as readonly string[] }, delegationCredential: { name: "delegationCredential", type: "DelegationCredential", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("delegationCredentialId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("delegationCredentialId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "credentials", fields: ["delegationCredentialId"], references: ["id"], onDelete: "Cascade" } } }, @@ -906,7 +906,7 @@ export class SchemaType implements SchemaDef { { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("subscriptionId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Boolean", [ExpressionUtils.field("invalid")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId"), ExpressionUtils.field("delegationCredentialId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "Int" } @@ -919,8 +919,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, integration: { name: "integration", @@ -939,7 +939,7 @@ export class SchemaType implements SchemaDef { name: "user", type: "User", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "destinationCalendar", fields: ["userId"], references: ["id"], onDelete: "Cascade" } }, userId: { @@ -947,10 +947,10 @@ export class SchemaType implements SchemaDef { type: "Int", unique: true, optional: true, - attributes: [{ name: "@unique" }], + attributes: [{ name: "@unique" }] as readonly AttributeApplication[], foreignKeyFor: [ "user" - ] + ] as readonly string[] }, booking: { name: "booking", @@ -962,7 +962,7 @@ export class SchemaType implements SchemaDef { name: "eventType", type: "EventType", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("eventTypeId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("eventTypeId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "destinationCalendar", fields: ["eventTypeId"], references: ["id"], onDelete: "Cascade" } }, eventTypeId: { @@ -970,10 +970,10 @@ export class SchemaType implements SchemaDef { type: "Int", unique: true, optional: true, - attributes: [{ name: "@unique" }], + attributes: [{ name: "@unique" }] as readonly AttributeApplication[], foreignKeyFor: [ "eventType" - ] + ] as readonly string[] }, credentialId: { name: "credentialId", @@ -981,20 +981,20 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "credential" - ] + ] as readonly string[] }, credential: { name: "credential", type: "Credential", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("credentialId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("credentialId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "destinationCalendars", fields: ["credentialId"], references: ["id"], onDelete: "Cascade" } }, delegationCredential: { name: "delegationCredential", type: "DelegationCredential", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("delegationCredentialId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("delegationCredentialId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "destinationCalendar", fields: ["delegationCredentialId"], references: ["id"], onDelete: "Cascade" } }, delegationCredentialId: { @@ -1003,13 +1003,13 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "delegationCredential" - ] + ] as readonly string[] }, domainWideDelegation: { name: "domainWideDelegation", type: "DomainWideDelegation", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("domainWideDelegationCredentialId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("domainWideDelegationCredentialId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "destinationCalendar", fields: ["domainWideDelegationCredentialId"], references: ["id"], onDelete: "Cascade" } }, domainWideDelegationCredentialId: { @@ -1018,14 +1018,14 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "domainWideDelegation" - ] + ] as readonly string[] } }, attributes: [ { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("eventTypeId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("credentialId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "Int" }, @@ -1045,15 +1045,15 @@ export class SchemaType implements SchemaDef { type: "Int", id: true, unique: true, - attributes: [{ name: "@unique" }], + attributes: [{ name: "@unique" }] as readonly AttributeApplication[], foreignKeyFor: [ "user" - ] + ] as readonly string[] }, user: { name: "user", type: "User", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "password", fields: ["userId"], references: ["id"], onDelete: "Cascade" } } }, @@ -1069,20 +1069,20 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, userId: { name: "userId", type: "Int", foreignKeyFor: [ "user" - ] + ] as readonly string[] }, user: { name: "user", type: "User", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "travelSchedules", fields: ["userId"], references: ["id"], onDelete: "Cascade" } }, timeZone: { @@ -1107,7 +1107,7 @@ export class SchemaType implements SchemaDef { attributes: [ { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("DateTime", [ExpressionUtils.field("startDate")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("DateTime", [ExpressionUtils.field("endDate")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "Int" } @@ -1120,8 +1120,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, username: { name: "username", @@ -1161,8 +1161,8 @@ export class SchemaType implements SchemaDef { timeZone: { name: "timeZone", type: "String", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("Europe/London") }] }], - default: "Europe/London" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("Europe/London") }] }] as readonly AttributeApplication[], + default: "Europe/London" as FieldDefault }, travelSchedules: { name: "travelSchedules", @@ -1173,32 +1173,32 @@ export class SchemaType implements SchemaDef { weekStart: { name: "weekStart", type: "String", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("Sunday") }] }], - default: "Sunday" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("Sunday") }] }] as readonly AttributeApplication[], + default: "Sunday" as FieldDefault }, startTime: { name: "startTime", type: "Int", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }], - default: 0 + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }] as readonly AttributeApplication[], + default: 0 as FieldDefault }, endTime: { name: "endTime", type: "Int", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(1440) }] }], - default: 1440 + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(1440) }] }] as readonly AttributeApplication[], + default: 1440 as FieldDefault }, bufferTime: { name: "bufferTime", type: "Int", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }], - default: 0 + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }] as readonly AttributeApplication[], + default: 0 as FieldDefault }, hideBranding: { name: "hideBranding", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, theme: { name: "theme", @@ -1213,8 +1213,8 @@ export class SchemaType implements SchemaDef { createdDate: { name: "createdDate", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, trialEndsAt: { name: "trialEndsAt", @@ -1230,7 +1230,7 @@ export class SchemaType implements SchemaDef { name: "eventTypes", type: "EventType", array: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("user_eventtype") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("user_eventtype") }] }] as readonly AttributeApplication[], relation: { opposite: "users", name: "user_eventtype" } }, credentials: { @@ -1271,8 +1271,8 @@ export class SchemaType implements SchemaDef { completedOnboarding: { name: "completedOnboarding", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, locale: { name: "locale", @@ -1283,8 +1283,8 @@ export class SchemaType implements SchemaDef { name: "timeFormat", type: "Int", optional: true, - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(12) }] }], - default: 12 + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(12) }] }] as readonly AttributeApplication[], + default: 12 as FieldDefault }, twoFactorSecret: { name: "twoFactorSecret", @@ -1294,8 +1294,8 @@ export class SchemaType implements SchemaDef { twoFactorEnabled: { name: "twoFactorEnabled", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, backupCodes: { name: "backupCodes", @@ -1305,8 +1305,8 @@ export class SchemaType implements SchemaDef { identityProvider: { name: "identityProvider", type: "IdentityProvider", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("CAL") }] }], - default: "CAL" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("CAL") }] }] as readonly AttributeApplication[], + default: "CAL" as FieldDefault }, identityProviderId: { name: "identityProviderId", @@ -1350,22 +1350,22 @@ export class SchemaType implements SchemaDef { name: "allowDynamicBooking", type: "Boolean", optional: true, - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(true) }] }], - default: true + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(true) }] }] as readonly AttributeApplication[], + default: true as FieldDefault }, allowSEOIndexing: { name: "allowSEOIndexing", type: "Boolean", optional: true, - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(true) }] }], - default: true + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(true) }] }] as readonly AttributeApplication[], + default: true as FieldDefault }, receiveMonthlyDigestEmail: { name: "receiveMonthlyDigestEmail", type: "Boolean", optional: true, - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(true) }] }], - default: true + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(true) }] }] as readonly AttributeApplication[], + default: true as FieldDefault }, metadata: { name: "metadata", @@ -1376,33 +1376,33 @@ export class SchemaType implements SchemaDef { name: "verified", type: "Boolean", optional: true, - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, role: { name: "role", type: "UserPermissionRole", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("USER") }] }], - default: "USER" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("USER") }] }] as readonly AttributeApplication[], + default: "USER" as FieldDefault }, disableImpersonation: { name: "disableImpersonation", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, impersonatedUsers: { name: "impersonatedUsers", type: "Impersonations", array: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("impersonated_user") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("impersonated_user") }] }] as readonly AttributeApplication[], relation: { opposite: "impersonatedUser", name: "impersonated_user" } }, impersonatedBy: { name: "impersonatedBy", type: "Impersonations", array: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("impersonated_by_user") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("impersonated_by_user") }] }] as readonly AttributeApplication[], relation: { opposite: "impersonatedBy", name: "impersonated_by_user" } }, apiKeys: { @@ -1433,7 +1433,7 @@ export class SchemaType implements SchemaDef { name: "ownedEventTypes", type: "EventType", array: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("owner") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("owner") }] }] as readonly AttributeApplication[], relation: { opposite: "owner", name: "owner" } }, workflows: { @@ -1446,14 +1446,14 @@ export class SchemaType implements SchemaDef { name: "routingForms", type: "App_RoutingForms_Form", array: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("routing-form") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("routing-form") }] }] as readonly AttributeApplication[], relation: { opposite: "user", name: "routing-form" } }, updatedRoutingForms: { name: "updatedRoutingForms", type: "App_RoutingForms_Form", array: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("updated-routing-form") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("updated-routing-form") }] }] as readonly AttributeApplication[], relation: { opposite: "updatedBy", name: "updated-routing-form" } }, verifiedNumbers: { @@ -1480,13 +1480,13 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "organization" - ] + ] as readonly string[] }, organization: { name: "organization", type: "Team", optional: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("scope") }, { name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("organizationId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("scope") }, { name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("organizationId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }] }] as readonly AttributeApplication[], relation: { opposite: "orgUsers", name: "scope", fields: ["organizationId"], references: ["id"], onDelete: "SetNull" } }, accessCodes: { @@ -1505,14 +1505,14 @@ export class SchemaType implements SchemaDef { name: "bookingRedirectsTo", type: "OutOfOfficeEntry", array: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("toUser") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("toUser") }] }] as readonly AttributeApplication[], relation: { opposite: "toUser", name: "toUser" } }, locked: { name: "locked", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, platformOAuthClients: { name: "platformOAuthClients", @@ -1550,13 +1550,13 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "movedToProfile" - ] + ] as readonly string[] }, movedToProfile: { name: "movedToProfile", type: "Profile", optional: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("moved_to_profile") }, { name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("movedToProfileId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("moved_to_profile") }, { name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("movedToProfileId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }] }] as readonly AttributeApplication[], relation: { opposite: "movedFromUser", name: "moved_to_profile", fields: ["movedToProfileId"], references: ["id"], onDelete: "SetNull" } }, secondaryEmails: { @@ -1568,8 +1568,8 @@ export class SchemaType implements SchemaDef { isPlatformManaged: { name: "isPlatformManaged", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, OutOfOfficeReasons: { name: "OutOfOfficeReasons", @@ -1580,14 +1580,14 @@ export class SchemaType implements SchemaDef { smsLockState: { name: "smsLockState", type: "SMSLockState", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("UNLOCKED") }] }], - default: "UNLOCKED" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("UNLOCKED") }] }] as readonly AttributeApplication[], + default: "UNLOCKED" as FieldDefault }, smsLockReviewedByAdmin: { name: "smsLockReviewedByAdmin", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, NotificationsSubscriptions: { name: "NotificationsSubscriptions", @@ -1610,49 +1610,49 @@ export class SchemaType implements SchemaDef { name: "reassignedBookings", type: "Booking", array: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("reassignByUser") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("reassignByUser") }] }] as readonly AttributeApplication[], relation: { opposite: "reassignBy", name: "reassignByUser" } }, createdAttributeToUsers: { name: "createdAttributeToUsers", type: "AttributeToUser", array: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("createdBy") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("createdBy") }] }] as readonly AttributeApplication[], relation: { opposite: "createdBy", name: "createdBy" } }, updatedAttributeToUsers: { name: "updatedAttributeToUsers", type: "AttributeToUser", array: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("updatedBy") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("updatedBy") }] }] as readonly AttributeApplication[], relation: { opposite: "updatedBy", name: "updatedBy" } }, createdTranslations: { name: "createdTranslations", type: "EventTypeTranslation", array: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("CreatedEventTypeTranslations") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("CreatedEventTypeTranslations") }] }] as readonly AttributeApplication[], relation: { opposite: "creator", name: "CreatedEventTypeTranslations" } }, updatedTranslations: { name: "updatedTranslations", type: "EventTypeTranslation", array: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("UpdatedEventTypeTranslations") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("UpdatedEventTypeTranslations") }] }] as readonly AttributeApplication[], relation: { opposite: "updater", name: "UpdatedEventTypeTranslations" } }, createdWatchlists: { name: "createdWatchlists", type: "Watchlist", array: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("CreatedWatchlists") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("CreatedWatchlists") }] }] as readonly AttributeApplication[], relation: { opposite: "createdBy", name: "CreatedWatchlists" } }, updatedWatchlists: { name: "updatedWatchlists", type: "Watchlist", array: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("UpdatedWatchlists") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("UpdatedWatchlists") }] }] as readonly AttributeApplication[], relation: { opposite: "updatedBy", name: "UpdatedWatchlists" } }, BookingInternalNote: { @@ -1670,7 +1670,7 @@ export class SchemaType implements SchemaDef { name: "createdOrganizationOnboardings", type: "OrganizationOnboarding", array: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("CreatedOrganizationOnboardings") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("CreatedOrganizationOnboardings") }] }] as readonly AttributeApplication[], relation: { opposite: "createdBy", name: "CreatedOrganizationOnboardings" } }, filterSegments: { @@ -1694,8 +1694,8 @@ export class SchemaType implements SchemaDef { whitelistWorkflows: { name: "whitelistWorkflows", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault } }, attributes: [ @@ -1708,7 +1708,7 @@ export class SchemaType implements SchemaDef { { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("IdentityProvider", [ExpressionUtils.field("identityProvider")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("identityProviderId")]) }] }, { name: "@@map", args: [{ name: "name", value: ExpressionUtils.literal("users") }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "Int" }, @@ -1725,20 +1725,20 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, userId: { name: "userId", type: "Int", foreignKeyFor: [ "user" - ] + ] as readonly string[] }, user: { name: "user", type: "User", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "NotificationsSubscriptions", fields: ["userId"], references: ["id"], onDelete: "Cascade" } }, subscription: { @@ -1748,7 +1748,7 @@ export class SchemaType implements SchemaDef { }, attributes: [ { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId"), ExpressionUtils.field("subscription")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "Int" } @@ -1761,8 +1761,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, uid: { name: "uid", @@ -1773,12 +1773,12 @@ export class SchemaType implements SchemaDef { type: "Int", foreignKeyFor: [ "user" - ] + ] as readonly string[] }, user: { name: "user", type: "User", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "profiles", fields: ["userId"], references: ["id"], onDelete: "Cascade" } }, organizationId: { @@ -1786,12 +1786,12 @@ export class SchemaType implements SchemaDef { type: "Int", foreignKeyFor: [ "organization" - ] + ] as readonly string[] }, organization: { name: "organization", type: "Team", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("organizationId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("organizationId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "orgProfiles", fields: ["organizationId"], references: ["id"], onDelete: "Cascade" } }, username: { @@ -1808,20 +1808,20 @@ export class SchemaType implements SchemaDef { name: "movedFromUser", type: "User", optional: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("moved_to_profile") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("moved_to_profile") }] }] as readonly AttributeApplication[], relation: { opposite: "movedToProfile", name: "moved_to_profile" } }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] } }, attributes: [ @@ -1830,7 +1830,7 @@ export class SchemaType implements SchemaDef { { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("uid")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("organizationId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "Int" }, @@ -1845,8 +1845,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, name: { name: "name", @@ -1885,26 +1885,26 @@ export class SchemaType implements SchemaDef { hideBranding: { name: "hideBranding", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, hideTeamProfileLink: { name: "hideTeamProfileLink", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, isPrivate: { name: "isPrivate", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, hideBookATeamMember: { name: "hideBookATeamMember", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, members: { name: "members", @@ -1927,8 +1927,8 @@ export class SchemaType implements SchemaDef { createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, metadata: { name: "metadata", @@ -1944,14 +1944,14 @@ export class SchemaType implements SchemaDef { name: "rrResetInterval", type: "RRResetInterval", optional: true, - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("MONTH") }] }], - default: "MONTH" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("MONTH") }] }] as readonly AttributeApplication[], + default: "MONTH" as FieldDefault }, rrTimestampBasis: { name: "rrTimestampBasis", type: "RRTimestampBasis", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("CREATED_AT") }] }], - default: "CREATED_AT" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("CREATED_AT") }] }] as readonly AttributeApplication[], + default: "CREATED_AT" as FieldDefault }, brandColor: { name: "brandColor", @@ -1986,27 +1986,27 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "parent" - ] + ] as readonly string[] }, parent: { name: "parent", type: "Team", optional: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("organization") }, { name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("parentId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("organization") }, { name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("parentId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "children", name: "organization", fields: ["parentId"], references: ["id"], onDelete: "Cascade" } }, children: { name: "children", type: "Team", array: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("organization") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("organization") }] }] as readonly AttributeApplication[], relation: { opposite: "parent", name: "organization" } }, orgUsers: { name: "orgUsers", type: "User", array: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("scope") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("scope") }] }] as readonly AttributeApplication[], relation: { opposite: "organization", name: "scope" } }, inviteTokens: { @@ -2029,14 +2029,14 @@ export class SchemaType implements SchemaDef { timeZone: { name: "timeZone", type: "String", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("Europe/London") }] }], - default: "Europe/London" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("Europe/London") }] }] as readonly AttributeApplication[], + default: "Europe/London" as FieldDefault }, weekStart: { name: "weekStart", type: "String", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("Sunday") }] }], - default: "Sunday" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("Sunday") }] }] as readonly AttributeApplication[], + default: "Sunday" as FieldDefault }, routingForms: { name: "routingForms", @@ -2065,8 +2065,8 @@ export class SchemaType implements SchemaDef { isOrganization: { name: "isOrganization", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, organizationSettings: { name: "organizationSettings", @@ -2089,8 +2089,8 @@ export class SchemaType implements SchemaDef { pendingPayment: { name: "pendingPayment", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, dsyncTeamGroupMapping: { name: "dsyncTeamGroupMapping", @@ -2101,8 +2101,8 @@ export class SchemaType implements SchemaDef { isPlatform: { name: "isPlatform", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, platformOAuthClient: { name: "platformOAuthClient", @@ -2114,7 +2114,7 @@ export class SchemaType implements SchemaDef { name: "createdByOAuthClient", type: "PlatformOAuthClient", optional: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("CreatedByOAuthClient") }, { name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("createdByOAuthClientId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("CreatedByOAuthClient") }, { name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("createdByOAuthClientId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "teams", name: "CreatedByOAuthClient", fields: ["createdByOAuthClientId"], references: ["id"], onDelete: "Cascade" } }, createdByOAuthClientId: { @@ -2123,13 +2123,13 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "createdByOAuthClient" - ] + ] as readonly string[] }, smsLockState: { name: "smsLockState", type: "SMSLockState", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("UNLOCKED") }] }], - default: "UNLOCKED" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("UNLOCKED") }] }] as readonly AttributeApplication[], + default: "UNLOCKED" as FieldDefault }, platformBilling: { name: "platformBilling", @@ -2152,8 +2152,8 @@ export class SchemaType implements SchemaDef { smsLockReviewedByAdmin: { name: "smsLockReviewedByAdmin", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, delegationCredentials: { name: "delegationCredentials", @@ -2187,8 +2187,8 @@ export class SchemaType implements SchemaDef { includeManagedEventsInLimits: { name: "includeManagedEventsInLimits", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, internalNotePresets: { name: "internalNotePresets", @@ -2212,14 +2212,14 @@ export class SchemaType implements SchemaDef { name: "managedOrganization", type: "ManagedOrganization", optional: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("ManagedOrganization") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("ManagedOrganization") }] }] as readonly AttributeApplication[], relation: { opposite: "managedOrganization", name: "ManagedOrganization" } }, managedOrganizations: { name: "managedOrganizations", type: "ManagedOrganization", array: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("ManagerOrganization") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("ManagerOrganization") }] }] as readonly AttributeApplication[], relation: { opposite: "managerOrganization", name: "ManagerOrganization" } }, filterSegments: { @@ -2232,7 +2232,7 @@ export class SchemaType implements SchemaDef { attributes: [ { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("slug"), ExpressionUtils.field("parentId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("parentId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "Int" }, @@ -2246,14 +2246,14 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("uuid") }] }], - default: ExpressionUtils.call("uuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("uuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("uuid") as FieldDefault }, team: { name: "team", type: "Team", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("teamId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("teamId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "creditBalance", fields: ["teamId"], references: ["id"], onDelete: "Cascade" } }, teamId: { @@ -2261,16 +2261,16 @@ export class SchemaType implements SchemaDef { type: "Int", unique: true, optional: true, - attributes: [{ name: "@unique" }], + attributes: [{ name: "@unique" }] as readonly AttributeApplication[], foreignKeyFor: [ "team" - ] + ] as readonly string[] }, user: { name: "user", type: "User", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "creditBalance", fields: ["userId"], references: ["id"], onDelete: "Cascade" } }, userId: { @@ -2278,16 +2278,16 @@ export class SchemaType implements SchemaDef { type: "Int", unique: true, optional: true, - attributes: [{ name: "@unique" }], + attributes: [{ name: "@unique" }] as readonly AttributeApplication[], foreignKeyFor: [ "user" - ] + ] as readonly string[] }, additionalCredits: { name: "additionalCredits", type: "Int", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }], - default: 0 + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }] as readonly AttributeApplication[], + default: 0 as FieldDefault }, limitReachedAt: { name: "limitReachedAt", @@ -2326,20 +2326,20 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("uuid") }] }], - default: ExpressionUtils.call("uuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("uuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("uuid") as FieldDefault }, creditBalanceId: { name: "creditBalanceId", type: "String", foreignKeyFor: [ "creditBalance" - ] + ] as readonly string[] }, creditBalance: { name: "creditBalance", type: "CreditBalance", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("creditBalanceId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("creditBalanceId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "purchaseLogs", fields: ["creditBalanceId"], references: ["id"], onDelete: "Cascade" } }, credits: { @@ -2349,8 +2349,8 @@ export class SchemaType implements SchemaDef { createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault } }, idFields: ["id"], @@ -2365,20 +2365,20 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("uuid") }] }], - default: ExpressionUtils.call("uuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("uuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("uuid") as FieldDefault }, creditBalanceId: { name: "creditBalanceId", type: "String", foreignKeyFor: [ "creditBalance" - ] + ] as readonly string[] }, creditBalance: { name: "creditBalance", type: "CreditBalance", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("creditBalanceId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("creditBalanceId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "expenseLogs", fields: ["creditBalanceId"], references: ["id"], onDelete: "Cascade" } }, bookingUid: { @@ -2387,13 +2387,13 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "booking" - ] + ] as readonly string[] }, booking: { name: "booking", type: "Booking", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("bookingUid")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("uid")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("bookingUid")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("uid")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "expenseLogs", fields: ["bookingUid"], references: ["uid"], onDelete: "Cascade" } }, credits: { @@ -2432,35 +2432,35 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, organization: { name: "organization", type: "Team", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("organizationId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("organizationId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "organizationSettings", fields: ["organizationId"], references: ["id"], onDelete: "Cascade" } }, organizationId: { name: "organizationId", type: "Int", unique: true, - attributes: [{ name: "@unique" }], + attributes: [{ name: "@unique" }] as readonly AttributeApplication[], foreignKeyFor: [ "organization" - ] + ] as readonly string[] }, isOrganizationConfigured: { name: "isOrganizationConfigured", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, isOrganizationVerified: { name: "isOrganizationVerified", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, orgAutoAcceptEmail: { name: "orgAutoAcceptEmail", @@ -2469,20 +2469,20 @@ export class SchemaType implements SchemaDef { lockEventTypeCreationForUsers: { name: "lockEventTypeCreationForUsers", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, adminGetsNoSlotsNotification: { name: "adminGetsNoSlotsNotification", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, isAdminReviewed: { name: "isAdminReviewed", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, dSyncData: { name: "dSyncData", @@ -2493,26 +2493,26 @@ export class SchemaType implements SchemaDef { isAdminAPIEnabled: { name: "isAdminAPIEnabled", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, allowSEOIndexing: { name: "allowSEOIndexing", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, orgProfileRedirectsToVerifiedDomain: { name: "orgProfileRedirectsToVerifiedDomain", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, disablePhoneOnlySMSNotifications: { name: "disablePhoneOnlySMSNotifications", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault } }, idFields: ["id"], @@ -2528,28 +2528,28 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, teamId: { name: "teamId", type: "Int", foreignKeyFor: [ "team" - ] + ] as readonly string[] }, userId: { name: "userId", type: "Int", foreignKeyFor: [ "user" - ] + ] as readonly string[] }, accepted: { name: "accepted", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, role: { name: "role", @@ -2561,32 +2561,32 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "customRole" - ] + ] as readonly string[] }, customRole: { name: "customRole", type: "Role", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("customRoleId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("customRoleId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }] }] as readonly AttributeApplication[], relation: { opposite: "memberships", fields: ["customRoleId"], references: ["id"] } }, team: { name: "team", type: "Team", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("teamId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("teamId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "members", fields: ["teamId"], references: ["id"], onDelete: "Cascade" } }, user: { name: "user", type: "User", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "teams", fields: ["userId"], references: ["id"], onDelete: "Cascade" } }, disableImpersonation: { name: "disableImpersonation", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, AttributeToUser: { name: "AttributeToUser", @@ -2598,15 +2598,15 @@ export class SchemaType implements SchemaDef { name: "createdAt", type: "DateTime", optional: true, - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", optional: true, updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] } }, attributes: [ @@ -2616,7 +2616,7 @@ export class SchemaType implements SchemaDef { { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Boolean", [ExpressionUtils.field("accepted")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("MembershipRole", [ExpressionUtils.field("role")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("customRoleId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "Int" }, @@ -2630,8 +2630,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, identifier: { name: "identifier", @@ -2641,7 +2641,7 @@ export class SchemaType implements SchemaDef { name: "token", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, expires: { name: "expires", @@ -2655,14 +2655,14 @@ export class SchemaType implements SchemaDef { createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, teamId: { name: "teamId", @@ -2670,13 +2670,13 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "team" - ] + ] as readonly string[] }, team: { name: "team", type: "Team", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("teamId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("teamId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }] }] as readonly AttributeApplication[], relation: { opposite: "inviteTokens", fields: ["teamId"], references: ["id"] } }, secondaryEmailId: { @@ -2685,13 +2685,13 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "secondaryEmail" - ] + ] as readonly string[] }, secondaryEmail: { name: "secondaryEmail", type: "SecondaryEmail", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("secondaryEmailId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("secondaryEmailId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }] }] as readonly AttributeApplication[], relation: { opposite: "verificationTokens", fields: ["secondaryEmailId"], references: ["id"] } } }, @@ -2700,7 +2700,7 @@ export class SchemaType implements SchemaDef { { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("token")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("teamId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("secondaryEmailId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "Int" }, @@ -2715,14 +2715,14 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, token: { name: "token", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, expires: { name: "expires", @@ -2733,12 +2733,12 @@ export class SchemaType implements SchemaDef { type: "Int", foreignKeyFor: [ "team" - ] + ] as readonly string[] }, team: { name: "team", type: "Team", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("teamId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("teamId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }] }] as readonly AttributeApplication[], relation: { opposite: "instantMeetingTokens", fields: ["teamId"], references: ["id"] } }, bookingId: { @@ -2746,34 +2746,34 @@ export class SchemaType implements SchemaDef { type: "Int", unique: true, optional: true, - attributes: [{ name: "@unique" }], + attributes: [{ name: "@unique" }] as readonly AttributeApplication[], foreignKeyFor: [ "booking" - ] + ] as readonly string[] }, booking: { name: "booking", type: "Booking", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("bookingId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("bookingId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "instantMeetingToken", fields: ["bookingId"], references: ["id"], onDelete: "Cascade" } }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] } }, attributes: [ { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("token")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "Int" }, @@ -2788,8 +2788,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, type: { name: "type", @@ -2823,7 +2823,7 @@ export class SchemaType implements SchemaDef { name: "booking", type: "Booking", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("bookingId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("bookingId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "references", fields: ["bookingId"], references: ["id"], onDelete: "Cascade" } }, bookingId: { @@ -2832,7 +2832,7 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "booking" - ] + ] as readonly string[] }, externalCalendarId: { name: "externalCalendarId", @@ -2848,7 +2848,7 @@ export class SchemaType implements SchemaDef { name: "credential", type: "Credential", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("credentialId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("credentialId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }] }] as readonly AttributeApplication[], relation: { opposite: "references", fields: ["credentialId"], references: ["id"], onDelete: "SetNull" } }, credentialId: { @@ -2857,13 +2857,13 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "credential" - ] + ] as readonly string[] }, delegationCredential: { name: "delegationCredential", type: "DelegationCredential", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("delegationCredentialId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("delegationCredentialId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }] }] as readonly AttributeApplication[], relation: { opposite: "bookingReferences", fields: ["delegationCredentialId"], references: ["id"], onDelete: "SetNull" } }, delegationCredentialId: { @@ -2872,13 +2872,13 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "delegationCredential" - ] + ] as readonly string[] }, domainWideDelegation: { name: "domainWideDelegation", type: "DomainWideDelegation", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("domainWideDelegationCredentialId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("domainWideDelegationCredentialId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }] }] as readonly AttributeApplication[], relation: { opposite: "bookingReferences", fields: ["domainWideDelegationCredentialId"], references: ["id"], onDelete: "SetNull" } }, domainWideDelegationCredentialId: { @@ -2887,14 +2887,14 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "domainWideDelegation" - ] + ] as readonly string[] } }, attributes: [ { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("bookingId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("type")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("uid")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "Int" } @@ -2907,8 +2907,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, email: { name: "email", @@ -2931,14 +2931,14 @@ export class SchemaType implements SchemaDef { name: "locale", type: "String", optional: true, - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("en") }] }], - default: "en" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("en") }] }] as readonly AttributeApplication[], + default: "en" as FieldDefault }, booking: { name: "booking", type: "Booking", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("bookingId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("bookingId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "attendees", fields: ["bookingId"], references: ["id"], onDelete: "Cascade" } }, bookingId: { @@ -2947,7 +2947,7 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "booking" - ] + ] as readonly string[] }, bookingSeat: { name: "bookingSeat", @@ -2959,14 +2959,14 @@ export class SchemaType implements SchemaDef { name: "noShow", type: "Boolean", optional: true, - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault } }, attributes: [ { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("email")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("bookingId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "Int" } @@ -2979,27 +2979,27 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, uid: { name: "uid", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, idempotencyKey: { name: "idempotencyKey", type: "String", unique: true, optional: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, user: { name: "user", type: "User", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "bookings", fields: ["userId"], references: ["id"], onDelete: "Cascade" } }, userId: { @@ -3008,7 +3008,7 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "user" - ] + ] as readonly string[] }, userPrimaryEmail: { name: "userPrimaryEmail", @@ -3025,7 +3025,7 @@ export class SchemaType implements SchemaDef { name: "eventType", type: "EventType", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("eventTypeId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("eventTypeId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }] }] as readonly AttributeApplication[], relation: { opposite: "bookings", fields: ["eventTypeId"], references: ["id"] } }, eventTypeId: { @@ -3034,7 +3034,7 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "eventType" - ] + ] as readonly string[] }, title: { name: "title", @@ -3077,27 +3077,27 @@ export class SchemaType implements SchemaDef { createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", optional: true, updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, status: { name: "status", type: "BookingStatus", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("ACCEPTED") }] }], - default: "ACCEPTED" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("ACCEPTED") }] }] as readonly AttributeApplication[], + default: "ACCEPTED" as FieldDefault }, paid: { name: "paid", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, payment: { name: "payment", @@ -3109,7 +3109,7 @@ export class SchemaType implements SchemaDef { name: "destinationCalendar", type: "DestinationCalendar", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("destinationCalendarId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("destinationCalendarId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }] }] as readonly AttributeApplication[], relation: { opposite: "booking", fields: ["destinationCalendarId"], references: ["id"] } }, destinationCalendarId: { @@ -3118,7 +3118,7 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "destinationCalendar" - ] + ] as readonly string[] }, cancellationReason: { name: "cancellationReason", @@ -3139,7 +3139,7 @@ export class SchemaType implements SchemaDef { name: "reassignBy", type: "User", optional: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("reassignByUser") }, { name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("reassignById")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("reassignByUser") }, { name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("reassignById")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }] }] as readonly AttributeApplication[], relation: { opposite: "reassignedBookings", name: "reassignByUser", fields: ["reassignById"], references: ["id"] } }, reassignById: { @@ -3148,7 +3148,7 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "reassignBy" - ] + ] as readonly string[] }, dynamicEventSlugRef: { name: "dynamicEventSlugRef", @@ -3205,21 +3205,21 @@ export class SchemaType implements SchemaDef { isRecorded: { name: "isRecorded", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, iCalUID: { name: "iCalUID", type: "String", optional: true, - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("") }] }], - default: "" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("") }] }] as readonly AttributeApplication[], + default: "" as FieldDefault }, iCalSequence: { name: "iCalSequence", type: "Int", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }], - default: 0 + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }] as readonly AttributeApplication[], + default: 0 as FieldDefault }, instantMeetingToken: { name: "instantMeetingToken", @@ -3241,8 +3241,8 @@ export class SchemaType implements SchemaDef { name: "noShowHost", type: "Boolean", optional: true, - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, scheduledTriggers: { name: "scheduledTriggers", @@ -3255,8 +3255,8 @@ export class SchemaType implements SchemaDef { type: "String", unique: true, optional: true, - attributes: [{ name: "@unique" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("uuid") }] }], - default: ExpressionUtils.call("uuid") + attributes: [{ name: "@unique" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("uuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("uuid") as FieldDefault }, cancelledBy: { name: "cancelledBy", @@ -3318,7 +3318,7 @@ export class SchemaType implements SchemaDef { { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("uid")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("BookingStatus", [ExpressionUtils.field("status")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("DateTime", [ExpressionUtils.field("startTime"), ExpressionUtils.field("endTime"), ExpressionUtils.field("status")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "Int" }, @@ -3334,20 +3334,20 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, bookingId: { name: "bookingId", type: "Int", foreignKeyFor: [ "booking" - ] + ] as readonly string[] }, booking: { name: "booking", type: "Booking", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("bookingId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("bookingId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "tracking", fields: ["bookingId"], references: ["id"], onDelete: "Cascade" } }, utm_source: { @@ -3378,7 +3378,7 @@ export class SchemaType implements SchemaDef { }, attributes: [ { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("bookingId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "Int" }, @@ -3392,13 +3392,13 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, user: { name: "user", type: "User", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "schedules", fields: ["userId"], references: ["id"], onDelete: "Cascade" } }, userId: { @@ -3406,7 +3406,7 @@ export class SchemaType implements SchemaDef { type: "Int", foreignKeyFor: [ "user" - ] + ] as readonly string[] }, eventType: { name: "eventType", @@ -3418,14 +3418,14 @@ export class SchemaType implements SchemaDef { name: "instantMeetingEvents", type: "EventType", array: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("InstantMeetingSchedule") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("InstantMeetingSchedule") }] }] as readonly AttributeApplication[], relation: { opposite: "instantMeetingSchedule", name: "InstantMeetingSchedule" } }, restrictionSchedule: { name: "restrictionSchedule", type: "EventType", array: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("restrictionSchedule") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("restrictionSchedule") }] }] as readonly AttributeApplication[], relation: { opposite: "restrictionSchedule", name: "restrictionSchedule" } }, name: { @@ -3452,7 +3452,7 @@ export class SchemaType implements SchemaDef { }, attributes: [ { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "Int" } @@ -3465,14 +3465,14 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, user: { name: "user", type: "User", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "availability", fields: ["userId"], references: ["id"], onDelete: "Cascade" } }, userId: { @@ -3481,13 +3481,13 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "user" - ] + ] as readonly string[] }, eventType: { name: "eventType", type: "EventType", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("eventTypeId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("eventTypeId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }] }] as readonly AttributeApplication[], relation: { opposite: "availability", fields: ["eventTypeId"], references: ["id"] } }, eventTypeId: { @@ -3496,7 +3496,7 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "eventType" - ] + ] as readonly string[] }, days: { name: "days", @@ -3506,24 +3506,24 @@ export class SchemaType implements SchemaDef { startTime: { name: "startTime", type: "DateTime", - attributes: [{ name: "@db.Time" }] + attributes: [{ name: "@db.Time" }] as readonly AttributeApplication[] }, endTime: { name: "endTime", type: "DateTime", - attributes: [{ name: "@db.Time" }] + attributes: [{ name: "@db.Time" }] as readonly AttributeApplication[] }, date: { name: "date", type: "DateTime", optional: true, - attributes: [{ name: "@db.Date" }] + attributes: [{ name: "@db.Date" }] as readonly AttributeApplication[] }, Schedule: { name: "Schedule", type: "Schedule", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("scheduleId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("scheduleId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }] }] as readonly AttributeApplication[], relation: { opposite: "availability", fields: ["scheduleId"], references: ["id"] } }, scheduleId: { @@ -3532,14 +3532,14 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "Schedule" - ] + ] as readonly string[] } }, attributes: [ { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("eventTypeId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("scheduleId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "Int" } @@ -3552,13 +3552,13 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("uuid") }] }], - default: ExpressionUtils.call("uuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("uuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("uuid") as FieldDefault }, user: { name: "user", type: "User", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "selectedCalendars", fields: ["userId"], references: ["id"], onDelete: "Cascade" } }, userId: { @@ -3566,7 +3566,7 @@ export class SchemaType implements SchemaDef { type: "Int", foreignKeyFor: [ "user" - ] + ] as readonly string[] }, integration: { name: "integration", @@ -3580,7 +3580,7 @@ export class SchemaType implements SchemaDef { name: "credential", type: "Credential", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("credentialId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("credentialId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "selectedCalendars", fields: ["credentialId"], references: ["id"], onDelete: "Cascade" } }, credentialId: { @@ -3589,7 +3589,7 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "credential" - ] + ] as readonly string[] }, googleChannelId: { name: "googleChannelId", @@ -3620,7 +3620,7 @@ export class SchemaType implements SchemaDef { name: "delegationCredential", type: "DelegationCredential", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("delegationCredentialId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("delegationCredentialId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "selectedCalendars", fields: ["delegationCredentialId"], references: ["id"], onDelete: "Cascade" } }, delegationCredentialId: { @@ -3629,13 +3629,13 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "delegationCredential" - ] + ] as readonly string[] }, domainWideDelegationCredential: { name: "domainWideDelegationCredential", type: "DomainWideDelegation", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("domainWideDelegationCredentialId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("domainWideDelegationCredentialId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "selectedCalendars", fields: ["domainWideDelegationCredentialId"], references: ["id"], onDelete: "Cascade" } }, domainWideDelegationCredentialId: { @@ -3644,7 +3644,7 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "domainWideDelegationCredential" - ] + ] as readonly string[] }, error: { name: "error", @@ -3659,20 +3659,20 @@ export class SchemaType implements SchemaDef { watchAttempts: { name: "watchAttempts", type: "Int", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }], - default: 0 + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }] as readonly AttributeApplication[], + default: 0 as FieldDefault }, unwatchAttempts: { name: "unwatchAttempts", type: "Int", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }], - default: 0 + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }] as readonly AttributeApplication[], + default: 0 as FieldDefault }, maxAttempts: { name: "maxAttempts", type: "Int", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(3) }] }], - default: 3 + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(3) }] }] as readonly AttributeApplication[], + default: 3 as FieldDefault }, eventTypeId: { name: "eventTypeId", @@ -3680,13 +3680,13 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "eventType" - ] + ] as readonly string[] }, eventType: { name: "eventType", type: "EventType", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("eventTypeId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("eventTypeId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }] }] as readonly AttributeApplication[], relation: { opposite: "selectedCalendars", fields: ["eventTypeId"], references: ["id"] } } }, @@ -3699,7 +3699,7 @@ export class SchemaType implements SchemaDef { { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("credentialId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("integration"), ExpressionUtils.field("googleChannelExpiration"), ExpressionUtils.field("error"), ExpressionUtils.field("watchAttempts"), ExpressionUtils.field("maxAttempts")]) }, { name: "name", value: ExpressionUtils.literal("SelectedCalendar_watch_idx") }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("integration"), ExpressionUtils.field("googleChannelExpiration"), ExpressionUtils.field("error"), ExpressionUtils.field("unwatchAttempts"), ExpressionUtils.field("maxAttempts")]) }, { name: "name", value: ExpressionUtils.literal("SelectedCalendar_unwatch_idx") }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -3714,20 +3714,20 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, eventTypeId: { name: "eventTypeId", type: "Int", foreignKeyFor: [ "eventType" - ] + ] as readonly string[] }, eventType: { name: "eventType", type: "EventType", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("eventTypeId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("eventTypeId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "customInputs", fields: ["eventTypeId"], references: ["id"], onDelete: "Cascade" } }, label: { @@ -3750,13 +3750,13 @@ export class SchemaType implements SchemaDef { placeholder: { name: "placeholder", type: "String", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("") }] }], - default: "" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("") }] }] as readonly AttributeApplication[], + default: "" as FieldDefault } }, attributes: [ { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("eventTypeId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "Int" } @@ -3769,20 +3769,20 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, email: { name: "email", @@ -3805,8 +3805,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, referenceId: { name: "referenceId", @@ -3823,14 +3823,14 @@ export class SchemaType implements SchemaDef { createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault } }, attributes: [ { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("referenceId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("ReminderType", [ExpressionUtils.field("reminderType")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "Int" } @@ -3843,20 +3843,20 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, uid: { name: "uid", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, app: { name: "app", type: "App", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("appId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("slug")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("appId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("slug")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "payments", fields: ["appId"], references: ["slug"], onDelete: "Cascade" } }, appId: { @@ -3865,20 +3865,20 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "app" - ] + ] as readonly string[] }, bookingId: { name: "bookingId", type: "Int", foreignKeyFor: [ "booking" - ] + ] as readonly string[] }, booking: { name: "booking", type: "Booking", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("bookingId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("bookingId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "payment", fields: ["bookingId"], references: ["id"], onDelete: "Cascade" } }, amount: { @@ -3909,20 +3909,20 @@ export class SchemaType implements SchemaDef { name: "externalId", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, paymentOption: { name: "paymentOption", type: "PaymentOption", optional: true, - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("ON_BOOKING") }] }], - default: "ON_BOOKING" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("ON_BOOKING") }] }] as readonly AttributeApplication[], + default: "ON_BOOKING" as FieldDefault } }, attributes: [ { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("bookingId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("externalId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "Int" }, @@ -3938,7 +3938,7 @@ export class SchemaType implements SchemaDef { type: "String", id: true, unique: true, - attributes: [{ name: "@id" }, { name: "@unique" }] + attributes: [{ name: "@id" }, { name: "@unique" }] as readonly AttributeApplication[] }, userId: { name: "userId", @@ -3946,7 +3946,7 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "user" - ] + ] as readonly string[] }, teamId: { name: "teamId", @@ -3954,7 +3954,7 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "team" - ] + ] as readonly string[] }, eventTypeId: { name: "eventTypeId", @@ -3962,7 +3962,7 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "eventType" - ] + ] as readonly string[] }, platformOAuthClientId: { name: "platformOAuthClientId", @@ -3970,7 +3970,7 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "platformOAuthClient" - ] + ] as readonly string[] }, subscriberUrl: { name: "subscriberUrl", @@ -3984,14 +3984,14 @@ export class SchemaType implements SchemaDef { createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, active: { name: "active", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(true) }] }], - default: true + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(true) }] }] as readonly AttributeApplication[], + default: true as FieldDefault }, eventTriggers: { name: "eventTriggers", @@ -4002,35 +4002,35 @@ export class SchemaType implements SchemaDef { name: "user", type: "User", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "webhooks", fields: ["userId"], references: ["id"], onDelete: "Cascade" } }, team: { name: "team", type: "Team", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("teamId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("teamId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "webhooks", fields: ["teamId"], references: ["id"], onDelete: "Cascade" } }, eventType: { name: "eventType", type: "EventType", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("eventTypeId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("eventTypeId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "webhooks", fields: ["eventTypeId"], references: ["id"], onDelete: "Cascade" } }, platformOAuthClient: { name: "platformOAuthClient", type: "PlatformOAuthClient", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("platformOAuthClientId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("platformOAuthClientId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "webhook", fields: ["platformOAuthClientId"], references: ["id"], onDelete: "Cascade" } }, app: { name: "app", type: "App", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("appId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("slug")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("appId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("slug")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "Webhook", fields: ["appId"], references: ["slug"], onDelete: "Cascade" } }, appId: { @@ -4039,7 +4039,7 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "app" - ] + ] as readonly string[] }, secret: { name: "secret", @@ -4049,8 +4049,8 @@ export class SchemaType implements SchemaDef { platform: { name: "platform", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, scheduledTriggers: { name: "scheduledTriggers", @@ -4073,7 +4073,7 @@ export class SchemaType implements SchemaDef { { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId"), ExpressionUtils.field("subscriberUrl")]) }, { name: "name", value: ExpressionUtils.literal("courseIdentifier") }] }, { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("platformOAuthClientId"), ExpressionUtils.field("subscriberUrl")]) }, { name: "name", value: ExpressionUtils.literal("oauthclientwebhook") }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Boolean", [ExpressionUtils.field("active")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -4088,25 +4088,25 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, impersonatedUser: { name: "impersonatedUser", type: "User", - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("impersonated_user") }, { name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("impersonatedUserId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("impersonated_user") }, { name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("impersonatedUserId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "impersonatedUsers", name: "impersonated_user", fields: ["impersonatedUserId"], references: ["id"], onDelete: "Cascade" } }, impersonatedBy: { name: "impersonatedBy", type: "User", - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("impersonated_by_user") }, { name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("impersonatedById")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("impersonated_by_user") }, { name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("impersonatedById")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "impersonatedBy", name: "impersonated_by_user", fields: ["impersonatedById"], references: ["id"], onDelete: "Cascade" } }, impersonatedUserId: { @@ -4114,20 +4114,20 @@ export class SchemaType implements SchemaDef { type: "Int", foreignKeyFor: [ "impersonatedUser" - ] + ] as readonly string[] }, impersonatedById: { name: "impersonatedById", type: "Int", foreignKeyFor: [ "impersonatedBy" - ] + ] as readonly string[] } }, attributes: [ { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("impersonatedUserId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("impersonatedById")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "Int" } @@ -4141,15 +4141,15 @@ export class SchemaType implements SchemaDef { type: "String", id: true, unique: true, - attributes: [{ name: "@id" }, { name: "@unique" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@unique" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, userId: { name: "userId", type: "Int", foreignKeyFor: [ "user" - ] + ] as readonly string[] }, teamId: { name: "teamId", @@ -4157,7 +4157,7 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "team" - ] + ] as readonly string[] }, note: { name: "note", @@ -4167,8 +4167,8 @@ export class SchemaType implements SchemaDef { createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, expiresAt: { name: "expiresAt", @@ -4184,27 +4184,27 @@ export class SchemaType implements SchemaDef { name: "hashedKey", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, user: { name: "user", type: "User", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "apiKeys", fields: ["userId"], references: ["id"], onDelete: "Cascade" } }, team: { name: "team", type: "Team", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("teamId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("teamId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "apiKeys", fields: ["teamId"], references: ["id"], onDelete: "Cascade" } }, app: { name: "app", type: "App", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("appId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("slug")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("appId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("slug")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "ApiKey", fields: ["appId"], references: ["slug"], onDelete: "Cascade" } }, appId: { @@ -4213,7 +4213,7 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "app" - ] + ] as readonly string[] }, rateLimits: { name: "rateLimits", @@ -4224,7 +4224,7 @@ export class SchemaType implements SchemaDef { }, attributes: [ { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -4238,8 +4238,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("uuid") }] }], - default: ExpressionUtils.call("uuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("uuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("uuid") as FieldDefault }, name: { name: "name", @@ -4250,7 +4250,7 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "apiKey" - ] + ] as readonly string[] }, ttl: { name: "ttl", @@ -4267,25 +4267,25 @@ export class SchemaType implements SchemaDef { createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, apiKey: { name: "apiKey", type: "ApiKey", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("apiKeyId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("apiKeyId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "rateLimits", fields: ["apiKeyId"], references: ["id"], onDelete: "Cascade" } } }, attributes: [ { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("apiKeyId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" } @@ -4298,19 +4298,19 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, link: { name: "link", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, eventType: { name: "eventType", type: "EventType", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("eventTypeId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("eventTypeId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "hashedLink", fields: ["eventTypeId"], references: ["id"], onDelete: "Cascade" } }, eventTypeId: { @@ -4318,7 +4318,7 @@ export class SchemaType implements SchemaDef { type: "Int", foreignKeyFor: [ "eventType" - ] + ] as readonly string[] } }, idFields: ["id"], @@ -4334,15 +4334,15 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, userId: { name: "userId", type: "Int", foreignKeyFor: [ "user" - ] + ] as readonly string[] }, type: { name: "type", @@ -4365,13 +4365,13 @@ export class SchemaType implements SchemaDef { name: "refresh_token", type: "String", optional: true, - attributes: [{ name: "@db.Text" }] + attributes: [{ name: "@db.Text" }] as readonly AttributeApplication[] }, access_token: { name: "access_token", type: "String", optional: true, - attributes: [{ name: "@db.Text" }] + attributes: [{ name: "@db.Text" }] as readonly AttributeApplication[] }, expires_at: { name: "expires_at", @@ -4392,7 +4392,7 @@ export class SchemaType implements SchemaDef { name: "id_token", type: "String", optional: true, - attributes: [{ name: "@db.Text" }] + attributes: [{ name: "@db.Text" }] as readonly AttributeApplication[] }, session_state: { name: "session_state", @@ -4403,7 +4403,7 @@ export class SchemaType implements SchemaDef { name: "user", type: "User", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "accounts", fields: ["userId"], references: ["id"], onDelete: "Cascade" } } }, @@ -4411,7 +4411,7 @@ export class SchemaType implements SchemaDef { { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("provider"), ExpressionUtils.field("providerAccountId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("type")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -4425,21 +4425,21 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, sessionToken: { name: "sessionToken", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, userId: { name: "userId", type: "Int", foreignKeyFor: [ "user" - ] + ] as readonly string[] }, expires: { name: "expires", @@ -4449,13 +4449,13 @@ export class SchemaType implements SchemaDef { name: "user", type: "User", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "sessions", fields: ["userId"], references: ["id"], onDelete: "Cascade" } } }, attributes: [ { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -4470,13 +4470,13 @@ export class SchemaType implements SchemaDef { type: "String", id: true, unique: true, - attributes: [{ name: "@id" }, { name: "@unique" }] + attributes: [{ name: "@id" }, { name: "@unique" }] as readonly AttributeApplication[] }, dirName: { name: "dirName", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, keys: { name: "keys", @@ -4491,14 +4491,14 @@ export class SchemaType implements SchemaDef { createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, credentials: { name: "credentials", @@ -4527,13 +4527,13 @@ export class SchemaType implements SchemaDef { enabled: { name: "enabled", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault } }, attributes: [ { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Boolean", [ExpressionUtils.field("enabled")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["slug"], uniqueFields: { slug: { type: "String" }, @@ -4547,8 +4547,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, description: { name: "description", @@ -4558,8 +4558,8 @@ export class SchemaType implements SchemaDef { position: { name: "position", type: "Int", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }], - default: 0 + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }] as readonly AttributeApplication[], + default: 0 as FieldDefault }, routes: { name: "routes", @@ -4569,14 +4569,14 @@ export class SchemaType implements SchemaDef { createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, name: { name: "name", @@ -4590,14 +4590,14 @@ export class SchemaType implements SchemaDef { user: { name: "user", type: "User", - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("routing-form") }, { name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("routing-form") }, { name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "routingForms", name: "routing-form", fields: ["userId"], references: ["id"], onDelete: "Cascade" } }, updatedBy: { name: "updatedBy", type: "User", optional: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("updated-routing-form") }, { name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("updatedById")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("updated-routing-form") }, { name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("updatedById")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }] }] as readonly AttributeApplication[], relation: { opposite: "updatedRoutingForms", name: "updated-routing-form", fields: ["updatedById"], references: ["id"], onDelete: "SetNull" } }, updatedById: { @@ -4606,20 +4606,20 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "updatedBy" - ] + ] as readonly string[] }, userId: { name: "userId", type: "Int", foreignKeyFor: [ "user" - ] + ] as readonly string[] }, team: { name: "team", type: "Team", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("teamId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("teamId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "routingForms", fields: ["teamId"], references: ["id"], onDelete: "Cascade" } }, teamId: { @@ -4628,7 +4628,7 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "team" - ] + ] as readonly string[] }, responses: { name: "responses", @@ -4645,8 +4645,8 @@ export class SchemaType implements SchemaDef { disabled: { name: "disabled", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, settings: { name: "settings", @@ -4663,7 +4663,7 @@ export class SchemaType implements SchemaDef { attributes: [ { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Boolean", [ExpressionUtils.field("disabled")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" } @@ -4676,19 +4676,19 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, formFillerId: { name: "formFillerId", type: "String", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, form: { name: "form", type: "App_RoutingForms_Form", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("formId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("formId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "responses", fields: ["formId"], references: ["id"], onDelete: "Cascade" } }, formId: { @@ -4696,7 +4696,7 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "form" - ] + ] as readonly string[] }, response: { name: "response", @@ -4705,31 +4705,31 @@ export class SchemaType implements SchemaDef { createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", optional: true, updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, routedToBookingUid: { name: "routedToBookingUid", type: "String", unique: true, optional: true, - attributes: [{ name: "@unique" }], + attributes: [{ name: "@unique" }] as readonly AttributeApplication[], foreignKeyFor: [ "routedToBooking" - ] + ] as readonly string[] }, routedToBooking: { name: "routedToBooking", type: "Booking", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("routedToBookingUid")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("uid")]) }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("routedToBookingUid")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("uid")]) }] }] as readonly AttributeApplication[], relation: { opposite: "routedFromRoutingFormReponse", fields: ["routedToBookingUid"], references: ["uid"] } }, chosenRouteId: { @@ -4761,7 +4761,7 @@ export class SchemaType implements SchemaDef { { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("formFillerId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("formId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("routedToBookingUid")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "Int" }, @@ -4776,13 +4776,13 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, form: { name: "form", type: "App_RoutingForms_Form", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("formId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("formId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "queuedResponses", fields: ["formId"], references: ["id"], onDelete: "Cascade" } }, formId: { @@ -4790,7 +4790,7 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "form" - ] + ] as readonly string[] }, response: { name: "response", @@ -4804,31 +4804,31 @@ export class SchemaType implements SchemaDef { createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", optional: true, updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, actualResponseId: { name: "actualResponseId", type: "Int", unique: true, optional: true, - attributes: [{ name: "@unique" }], + attributes: [{ name: "@unique" }] as readonly AttributeApplication[], foreignKeyFor: [ "actualResponse" - ] + ] as readonly string[] }, actualResponse: { name: "actualResponse", type: "App_RoutingForms_FormResponse", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("actualResponseId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("actualResponseId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "queuedFormResponse", fields: ["actualResponseId"], references: ["id"], onDelete: "Cascade" } } }, @@ -4845,8 +4845,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, responseId: { name: "responseId", @@ -4854,7 +4854,7 @@ export class SchemaType implements SchemaDef { foreignKeyFor: [ "response", "denormalized" - ] + ] as readonly string[] }, fieldId: { name: "fieldId", @@ -4878,13 +4878,13 @@ export class SchemaType implements SchemaDef { response: { name: "response", type: "App_RoutingForms_FormResponse", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("responseId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "map", value: ExpressionUtils.literal("RoutingFormResponseField_response_fkey") }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("responseId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "map", value: ExpressionUtils.literal("RoutingFormResponseField_response_fkey") }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "routingFormResponseFields", fields: ["responseId"], references: ["id"], onDelete: "Cascade" } }, denormalized: { name: "denormalized", type: "RoutingFormResponseDenormalized", - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("DenormalizedResponseToFields") }, { name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("responseId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("DenormalizedResponseToFields") }, { name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("responseId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "fields", name: "DenormalizedResponseToFields", fields: ["responseId"], references: ["id"], onDelete: "Cascade" } } }, @@ -4893,7 +4893,7 @@ export class SchemaType implements SchemaDef { { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("fieldId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Float", [ExpressionUtils.field("valueNumber")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("valueStringArray")]) }, { name: "type", value: ExpressionUtils.literal("Gin") }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "Int" } @@ -4907,7 +4907,7 @@ export class SchemaType implements SchemaDef { type: "Int", id: true, unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, response: { name: "response", @@ -5043,10 +5043,10 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }], + attributes: [{ name: "@id" }] as readonly AttributeApplication[], foreignKeyFor: [ "response" - ] + ] as readonly string[] }, formId: { name: "formId", @@ -5069,7 +5069,7 @@ export class SchemaType implements SchemaDef { name: "booking", type: "Booking", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("bookingId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("bookingId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }] }] as readonly AttributeApplication[], relation: { opposite: "routingFormResponses", fields: ["bookingId"], references: ["id"], onDelete: "SetNull" } }, bookingUid: { @@ -5083,7 +5083,7 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "booking" - ] + ] as readonly string[] }, bookingStatus: { name: "bookingStatus", @@ -5099,19 +5099,19 @@ export class SchemaType implements SchemaDef { name: "bookingCreatedAt", type: "DateTime", optional: true, - attributes: [{ name: "@db.Timestamp", args: [{ name: "x", value: ExpressionUtils.literal(3) }] }] + attributes: [{ name: "@db.Timestamp", args: [{ name: "x", value: ExpressionUtils.literal(3) }] }] as readonly AttributeApplication[] }, bookingStartTime: { name: "bookingStartTime", type: "DateTime", optional: true, - attributes: [{ name: "@db.Timestamp", args: [{ name: "x", value: ExpressionUtils.literal(3) }] }] + attributes: [{ name: "@db.Timestamp", args: [{ name: "x", value: ExpressionUtils.literal(3) }] }] as readonly AttributeApplication[] }, bookingEndTime: { name: "bookingEndTime", type: "DateTime", optional: true, - attributes: [{ name: "@db.Timestamp", args: [{ name: "x", value: ExpressionUtils.literal(3) }] }] + attributes: [{ name: "@db.Timestamp", args: [{ name: "x", value: ExpressionUtils.literal(3) }] }] as readonly AttributeApplication[] }, bookingUserId: { name: "bookingUserId", @@ -5156,7 +5156,7 @@ export class SchemaType implements SchemaDef { createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@db.Timestamp", args: [{ name: "x", value: ExpressionUtils.literal(3) }] }] + attributes: [{ name: "@db.Timestamp", args: [{ name: "x", value: ExpressionUtils.literal(3) }] }] as readonly AttributeApplication[] }, utm_source: { name: "utm_source", @@ -5186,14 +5186,14 @@ export class SchemaType implements SchemaDef { response: { name: "response", type: "App_RoutingForms_FormResponse", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "routingFormResponses", fields: ["id"], references: ["id"], onDelete: "Cascade" } }, fields: { name: "fields", type: "RoutingFormResponseField", array: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("DenormalizedResponseToFields") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("DenormalizedResponseToFields") }] }] as readonly AttributeApplication[], relation: { opposite: "denormalized", name: "DenormalizedResponseToFields" } } }, @@ -5205,7 +5205,7 @@ export class SchemaType implements SchemaDef { { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("bookingId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("bookingUserId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("eventTypeId"), ExpressionUtils.field("eventTypeParentId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "Int" } @@ -5218,26 +5218,26 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, date: { name: "date", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, userId: { name: "userId", type: "Int", foreignKeyFor: [ "user" - ] + ] as readonly string[] }, user: { name: "user", type: "User", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "Feedback", fields: ["userId"], references: ["id"], onDelete: "Cascade" } }, rating: { @@ -5253,7 +5253,7 @@ export class SchemaType implements SchemaDef { attributes: [ { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("rating")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "Int" } @@ -5266,8 +5266,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, stepNumber: { name: "stepNumber", @@ -5282,12 +5282,12 @@ export class SchemaType implements SchemaDef { type: "Int", foreignKeyFor: [ "workflow" - ] + ] as readonly string[] }, workflow: { name: "workflow", type: "Workflow", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("workflowId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("workflowId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "steps", fields: ["workflowId"], references: ["id"], onDelete: "Cascade" } }, sendTo: { @@ -5308,8 +5308,8 @@ export class SchemaType implements SchemaDef { template: { name: "template", type: "WorkflowTemplates", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("REMINDER") }] }], - default: "REMINDER" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("REMINDER") }] }] as readonly AttributeApplication[], + default: "REMINDER" as FieldDefault }, workflowReminders: { name: "workflowReminders", @@ -5330,14 +5330,14 @@ export class SchemaType implements SchemaDef { numberVerificationPending: { name: "numberVerificationPending", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(true) }] }], - default: true + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(true) }] }] as readonly AttributeApplication[], + default: true as FieldDefault }, includeCalendarEvent: { name: "includeCalendarEvent", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, verifiedAt: { name: "verifiedAt", @@ -5347,7 +5347,7 @@ export class SchemaType implements SchemaDef { }, attributes: [ { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("workflowId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "Int" } @@ -5360,14 +5360,14 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, position: { name: "position", type: "Int", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }], - default: 0 + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }] as readonly AttributeApplication[], + default: 0 as FieldDefault }, name: { name: "name", @@ -5379,20 +5379,20 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "user" - ] + ] as readonly string[] }, user: { name: "user", type: "User", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "workflows", fields: ["userId"], references: ["id"], onDelete: "Cascade" } }, team: { name: "team", type: "Team", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("teamId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("teamId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "workflows", fields: ["teamId"], references: ["id"], onDelete: "Cascade" } }, teamId: { @@ -5401,7 +5401,7 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "team" - ] + ] as readonly string[] }, activeOn: { name: "activeOn", @@ -5418,8 +5418,8 @@ export class SchemaType implements SchemaDef { isActiveOnAll: { name: "isActiveOnAll", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, trigger: { name: "trigger", @@ -5445,7 +5445,7 @@ export class SchemaType implements SchemaDef { attributes: [ { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("teamId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "Int" } @@ -5458,13 +5458,13 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, eventType: { name: "eventType", type: "EventType", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("eventTypeId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("eventTypeId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "aiPhoneCallConfig", fields: ["eventTypeId"], references: ["id"], onDelete: "Cascade" } }, eventTypeId: { @@ -5472,13 +5472,13 @@ export class SchemaType implements SchemaDef { type: "Int", foreignKeyFor: [ "eventType" - ] + ] as readonly string[] }, templateType: { name: "templateType", type: "String", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("CUSTOM_TEMPLATE") }] }], - default: "CUSTOM_TEMPLATE" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("CUSTOM_TEMPLATE") }] }] as readonly AttributeApplication[], + default: "CUSTOM_TEMPLATE" as FieldDefault }, schedulerName: { name: "schedulerName", @@ -5516,8 +5516,8 @@ export class SchemaType implements SchemaDef { enabled: { name: "enabled", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, beginMessage: { name: "beginMessage", @@ -5533,7 +5533,7 @@ export class SchemaType implements SchemaDef { attributes: [ { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("eventTypeId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("eventTypeId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "Int" }, @@ -5547,13 +5547,13 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, workflow: { name: "workflow", type: "Workflow", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("workflowId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("workflowId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "activeOn", fields: ["workflowId"], references: ["id"], onDelete: "Cascade" } }, workflowId: { @@ -5561,12 +5561,12 @@ export class SchemaType implements SchemaDef { type: "Int", foreignKeyFor: [ "workflow" - ] + ] as readonly string[] }, eventType: { name: "eventType", type: "EventType", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("eventTypeId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("eventTypeId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "workflows", fields: ["eventTypeId"], references: ["id"], onDelete: "Cascade" } }, eventTypeId: { @@ -5574,14 +5574,14 @@ export class SchemaType implements SchemaDef { type: "Int", foreignKeyFor: [ "eventType" - ] + ] as readonly string[] } }, attributes: [ { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("workflowId"), ExpressionUtils.field("eventTypeId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("workflowId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("eventTypeId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "Int" }, @@ -5595,13 +5595,13 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, workflow: { name: "workflow", type: "Workflow", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("workflowId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("workflowId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "activeOnTeams", fields: ["workflowId"], references: ["id"], onDelete: "Cascade" } }, workflowId: { @@ -5609,12 +5609,12 @@ export class SchemaType implements SchemaDef { type: "Int", foreignKeyFor: [ "workflow" - ] + ] as readonly string[] }, team: { name: "team", type: "Team", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("teamId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("teamId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "activeOrgWorkflows", fields: ["teamId"], references: ["id"], onDelete: "Cascade" } }, teamId: { @@ -5622,14 +5622,14 @@ export class SchemaType implements SchemaDef { type: "Int", foreignKeyFor: [ "team" - ] + ] as readonly string[] } }, attributes: [ { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("workflowId"), ExpressionUtils.field("teamId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("workflowId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("teamId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "Int" }, @@ -5643,8 +5643,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(1) }] }], - default: 1 + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(1) }] }] as readonly AttributeApplication[], + default: 1 as FieldDefault }, logo: { name: "logo", @@ -5679,16 +5679,16 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, uuid: { name: "uuid", type: "String", unique: true, optional: true, - attributes: [{ name: "@unique" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("uuid") }] }], - default: ExpressionUtils.call("uuid") + attributes: [{ name: "@unique" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("uuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("uuid") as FieldDefault }, bookingUid: { name: "bookingUid", @@ -5696,13 +5696,13 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "booking" - ] + ] as readonly string[] }, booking: { name: "booking", type: "Booking", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("bookingUid")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("uid")]) }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("bookingUid")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("uid")]) }] }] as readonly AttributeApplication[], relation: { opposite: "workflowReminders", fields: ["bookingUid"], references: ["uid"] } }, method: { @@ -5718,7 +5718,7 @@ export class SchemaType implements SchemaDef { type: "String", unique: true, optional: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, scheduled: { name: "scheduled", @@ -5730,13 +5730,13 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "workflowStep" - ] + ] as readonly string[] }, workflowStep: { name: "workflowStep", type: "WorkflowStep", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("workflowStepId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("workflowStepId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "workflowReminders", fields: ["workflowStepId"], references: ["id"], onDelete: "Cascade" } }, cancelled: { @@ -5753,14 +5753,14 @@ export class SchemaType implements SchemaDef { name: "isMandatoryReminder", type: "Boolean", optional: true, - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, retryCount: { name: "retryCount", type: "Int", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }], - default: 0 + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }] as readonly AttributeApplication[], + default: 0 as FieldDefault } }, attributes: [ @@ -5769,7 +5769,7 @@ export class SchemaType implements SchemaDef { { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("seatReferenceId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("WorkflowMethods", [ExpressionUtils.field("method"), ExpressionUtils.field("scheduled"), ExpressionUtils.field("scheduledDate")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Boolean", [ExpressionUtils.field("cancelled"), ExpressionUtils.field("scheduledDate")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "Int" }, @@ -5784,8 +5784,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, jobName: { name: "jobName", @@ -5807,15 +5807,15 @@ export class SchemaType implements SchemaDef { retryCount: { name: "retryCount", type: "Int", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }], - default: 0 + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }] as readonly AttributeApplication[], + default: 0 as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", optional: true, - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, appId: { name: "appId", @@ -5828,13 +5828,13 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "webhook" - ] + ] as readonly string[] }, webhook: { name: "webhook", type: "Webhook", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("webhookId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("webhookId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "scheduledTriggers", fields: ["webhookId"], references: ["id"], onDelete: "Cascade" } }, bookingId: { @@ -5843,13 +5843,13 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "booking" - ] + ] as readonly string[] }, booking: { name: "booking", type: "Booking", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("bookingId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("bookingId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "scheduledTriggers", fields: ["bookingId"], references: ["id"], onDelete: "Cascade" } } }, @@ -5865,41 +5865,41 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, referenceUid: { name: "referenceUid", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, bookingId: { name: "bookingId", type: "Int", foreignKeyFor: [ "booking" - ] + ] as readonly string[] }, booking: { name: "booking", type: "Booking", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("bookingId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("bookingId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "seatsReferences", fields: ["bookingId"], references: ["id"], onDelete: "Cascade" } }, attendeeId: { name: "attendeeId", type: "Int", unique: true, - attributes: [{ name: "@unique" }], + attributes: [{ name: "@unique" }] as readonly AttributeApplication[], foreignKeyFor: [ "attendee" - ] + ] as readonly string[] }, attendee: { name: "attendee", type: "Attendee", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("attendeeId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("attendeeId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "bookingSeat", fields: ["attendeeId"], references: ["id"], onDelete: "Cascade" } }, data: { @@ -5916,7 +5916,7 @@ export class SchemaType implements SchemaDef { attributes: [ { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("bookingId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("attendeeId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "Int" }, @@ -5931,8 +5931,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, userId: { name: "userId", @@ -5940,13 +5940,13 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "user" - ] + ] as readonly string[] }, user: { name: "user", type: "User", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "verifiedNumbers", fields: ["userId"], references: ["id"], onDelete: "Cascade" } }, teamId: { @@ -5955,13 +5955,13 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "team" - ] + ] as readonly string[] }, team: { name: "team", type: "Team", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("teamId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("teamId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "verifiedNumbers", fields: ["teamId"], references: ["id"], onDelete: "Cascade" } }, phoneNumber: { @@ -5972,7 +5972,7 @@ export class SchemaType implements SchemaDef { attributes: [ { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("teamId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "Int" } @@ -5985,8 +5985,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, userId: { name: "userId", @@ -5994,13 +5994,13 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "user" - ] + ] as readonly string[] }, user: { name: "user", type: "User", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "verifiedEmails", fields: ["userId"], references: ["id"], onDelete: "Cascade" } }, teamId: { @@ -6009,13 +6009,13 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "team" - ] + ] as readonly string[] }, team: { name: "team", type: "Team", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("teamId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("teamId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "verifiedEmails", fields: ["teamId"], references: ["id"], onDelete: "Cascade" } }, email: { @@ -6026,7 +6026,7 @@ export class SchemaType implements SchemaDef { attributes: [ { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("teamId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "Int" } @@ -6040,13 +6040,13 @@ export class SchemaType implements SchemaDef { type: "String", id: true, unique: true, - attributes: [{ name: "@id" }, { name: "@unique" }] + attributes: [{ name: "@id" }, { name: "@unique" }] as readonly AttributeApplication[] }, enabled: { name: "enabled", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, description: { name: "description", @@ -6057,15 +6057,15 @@ export class SchemaType implements SchemaDef { name: "type", type: "FeatureType", optional: true, - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("RELEASE") }] }], - default: "RELEASE" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("RELEASE") }] }] as readonly AttributeApplication[], + default: "RELEASE" as FieldDefault }, stale: { name: "stale", type: "Boolean", optional: true, - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, lastUsedAt: { name: "lastUsedAt", @@ -6076,16 +6076,16 @@ export class SchemaType implements SchemaDef { name: "createdAt", type: "DateTime", optional: true, - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", optional: true, updatedAt: true, - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@updatedAt" }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@updatedAt" }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedBy: { name: "updatedBy", @@ -6108,7 +6108,7 @@ export class SchemaType implements SchemaDef { attributes: [ { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Boolean", [ExpressionUtils.field("enabled")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Boolean", [ExpressionUtils.field("stale")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["slug"], uniqueFields: { slug: { type: "String" } @@ -6120,7 +6120,7 @@ export class SchemaType implements SchemaDef { user: { name: "user", type: "User", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "features", fields: ["userId"], references: ["id"], onDelete: "Cascade" } }, userId: { @@ -6129,12 +6129,12 @@ export class SchemaType implements SchemaDef { id: true, foreignKeyFor: [ "user" - ] + ] as readonly string[] }, feature: { name: "feature", type: "Feature", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("featureId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("slug")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("featureId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("slug")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "users", fields: ["featureId"], references: ["slug"], onDelete: "Cascade" } }, featureId: { @@ -6143,13 +6143,13 @@ export class SchemaType implements SchemaDef { id: true, foreignKeyFor: [ "feature" - ] + ] as readonly string[] }, assignedAt: { name: "assignedAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, assignedBy: { name: "assignedBy", @@ -6159,13 +6159,13 @@ export class SchemaType implements SchemaDef { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] } }, attributes: [ { name: "@@id", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId"), ExpressionUtils.field("featureId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId"), ExpressionUtils.field("featureId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["userId", "featureId"], uniqueFields: { userId_featureId: { userId: { type: "Int" }, featureId: { type: "String" } } @@ -6177,7 +6177,7 @@ export class SchemaType implements SchemaDef { team: { name: "team", type: "Team", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("teamId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("teamId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "features", fields: ["teamId"], references: ["id"], onDelete: "Cascade" } }, teamId: { @@ -6186,12 +6186,12 @@ export class SchemaType implements SchemaDef { id: true, foreignKeyFor: [ "team" - ] + ] as readonly string[] }, feature: { name: "feature", type: "Feature", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("featureId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("slug")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("featureId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("slug")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "teams", fields: ["featureId"], references: ["slug"], onDelete: "Cascade" } }, featureId: { @@ -6200,13 +6200,13 @@ export class SchemaType implements SchemaDef { id: true, foreignKeyFor: [ "feature" - ] + ] as readonly string[] }, assignedAt: { name: "assignedAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, assignedBy: { name: "assignedBy", @@ -6216,13 +6216,13 @@ export class SchemaType implements SchemaDef { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] } }, attributes: [ { name: "@@id", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("teamId"), ExpressionUtils.field("featureId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("teamId"), ExpressionUtils.field("featureId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["teamId", "featureId"], uniqueFields: { teamId_featureId: { teamId: { type: "Int" }, featureId: { type: "String" } } @@ -6235,8 +6235,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, eventTypeId: { name: "eventTypeId", @@ -6265,13 +6265,13 @@ export class SchemaType implements SchemaDef { isSeat: { name: "isSeat", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault } }, attributes: [ { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId"), ExpressionUtils.field("slotUtcStartDate"), ExpressionUtils.field("slotUtcEndDate"), ExpressionUtils.field("uid")]) }, { name: "name", value: ExpressionUtils.literal("selectedSlotUnique") }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "Int" }, @@ -6286,7 +6286,7 @@ export class SchemaType implements SchemaDef { type: "String", id: true, unique: true, - attributes: [{ name: "@id" }, { name: "@unique" }] + attributes: [{ name: "@id" }, { name: "@unique" }] as readonly AttributeApplication[] }, redirectUri: { name: "redirectUri", @@ -6324,8 +6324,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, code: { name: "code", @@ -6337,13 +6337,13 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "client" - ] + ] as readonly string[] }, client: { name: "client", type: "OAuthClient", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("clientId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("clientId")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("clientId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("clientId")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "accessCodes", fields: ["clientId"], references: ["clientId"], onDelete: "Cascade" } }, expiresAt: { @@ -6361,13 +6361,13 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "user" - ] + ] as readonly string[] }, user: { name: "user", type: "User", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "accessCodes", fields: ["userId"], references: ["id"], onDelete: "Cascade" } }, teamId: { @@ -6376,13 +6376,13 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "team" - ] + ] as readonly string[] }, team: { name: "team", type: "Team", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("teamId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("teamId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "accessCodes", fields: ["teamId"], references: ["id"], onDelete: "Cascade" } } }, @@ -6399,7 +6399,7 @@ export class SchemaType implements SchemaDef { type: "Int", id: true, unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, uid: { name: "uid", @@ -6525,7 +6525,7 @@ export class SchemaType implements SchemaDef { type: "Int", id: true, unique: true, - attributes: [{ name: "@id" }, { name: "@unique" }] + attributes: [{ name: "@id" }, { name: "@unique" }] as readonly AttributeApplication[] }, uid: { name: "uid", @@ -6646,7 +6646,7 @@ export class SchemaType implements SchemaDef { { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("BookingStatus", [ExpressionUtils.field("status")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("teamId"), ExpressionUtils.field("isTeamBooking")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId"), ExpressionUtils.field("isTeamBooking")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "Int" } @@ -6660,7 +6660,7 @@ export class SchemaType implements SchemaDef { type: "Int", id: true, unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, uid: { name: "uid", @@ -6788,8 +6788,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", optional: true, - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("uuid") }] }], - default: ExpressionUtils.call("uuid") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("uuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("uuid") as FieldDefault }, key: { name: "key", @@ -6810,7 +6810,7 @@ export class SchemaType implements SchemaDef { id: true, foreignKeyFor: [ "credential" - ] + ] as readonly string[] }, userId: { name: "userId", @@ -6821,7 +6821,7 @@ export class SchemaType implements SchemaDef { name: "credential", type: "Credential", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("credentialId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("credentialId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "CalendarCache", fields: ["credentialId"], references: ["id"], onDelete: "Cascade" } } }, @@ -6829,7 +6829,7 @@ export class SchemaType implements SchemaDef { { name: "@@id", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("credentialId"), ExpressionUtils.field("key")]) }] }, { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("credentialId"), ExpressionUtils.field("key")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId"), ExpressionUtils.field("key")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["key", "credentialId"], uniqueFields: { credentialId_key: { credentialId: { type: "Int" }, key: { type: "String" } } @@ -6842,8 +6842,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, from: { name: "from", @@ -6864,25 +6864,25 @@ export class SchemaType implements SchemaDef { enabled: { name: "enabled", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(true) }] }], - default: true + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(true) }] }] as readonly AttributeApplication[], + default: true as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] } }, attributes: [ { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("from"), ExpressionUtils.field("type"), ExpressionUtils.field("fromOrgId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "Int" }, @@ -6895,14 +6895,14 @@ export class SchemaType implements SchemaDef { teamId: { name: "teamId", type: "Int", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }], - default: 0 + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }] as readonly AttributeApplication[], + default: 0 as FieldDefault }, userId: { name: "userId", type: "Int", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }], - default: 0 + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }] as readonly AttributeApplication[], + default: 0 as FieldDefault }, data: { name: "data", @@ -6913,19 +6913,19 @@ export class SchemaType implements SchemaDef { type: "String", id: true, unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, isBanner: { name: "isBanner", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault } }, attributes: [ { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("teamId"), ExpressionUtils.field("userId"), ExpressionUtils.field("isBanner")]) }] }, { name: "@@map", args: [{ name: "name", value: ExpressionUtils.literal("avatars") }] } - ], + ] as readonly AttributeApplication[], idFields: ["objectKey"], uniqueFields: { objectKey: { type: "String" }, @@ -6939,14 +6939,14 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, uuid: { name: "uuid", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, start: { name: "start", @@ -6966,12 +6966,12 @@ export class SchemaType implements SchemaDef { type: "Int", foreignKeyFor: [ "user" - ] + ] as readonly string[] }, user: { name: "user", type: "User", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "bookingRedirects", fields: ["userId"], references: ["id"], onDelete: "Cascade" } }, toUserId: { @@ -6980,13 +6980,13 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "toUser" - ] + ] as readonly string[] }, toUser: { name: "toUser", type: "User", optional: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("toUser") }, { name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("toUserId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("toUser") }, { name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("toUserId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "bookingRedirectsTo", name: "toUser", fields: ["toUserId"], references: ["id"], onDelete: "Cascade" } }, reasonId: { @@ -6995,26 +6995,26 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "reason" - ] + ] as readonly string[] }, reason: { name: "reason", type: "OutOfOfficeReason", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("reasonId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("reasonId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }] }] as readonly AttributeApplication[], relation: { opposite: "entries", fields: ["reasonId"], references: ["id"], onDelete: "SetNull" } }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] } }, attributes: [ @@ -7022,7 +7022,7 @@ export class SchemaType implements SchemaDef { { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("toUserId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("DateTime", [ExpressionUtils.field("start"), ExpressionUtils.field("end")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "Int" }, @@ -7036,8 +7036,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, emoji: { name: "emoji", @@ -7047,13 +7047,13 @@ export class SchemaType implements SchemaDef { name: "reason", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, enabled: { name: "enabled", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(true) }] }], - default: true + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(true) }] }] as readonly AttributeApplication[], + default: true as FieldDefault }, userId: { name: "userId", @@ -7061,13 +7061,13 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "user" - ] + ] as readonly string[] }, user: { name: "user", type: "User", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "OutOfOfficeReasons", fields: ["userId"], references: ["id"], onDelete: "Cascade" } }, entries: { @@ -7090,8 +7090,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, name: { name: "name", @@ -7126,19 +7126,19 @@ export class SchemaType implements SchemaDef { type: "Int", foreignKeyFor: [ "organization" - ] + ] as readonly string[] }, organization: { name: "organization", type: "Team", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("organizationId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("organizationId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "platformOAuthClient", fields: ["organizationId"], references: ["id"], onDelete: "Cascade" } }, teams: { name: "teams", type: "Team", array: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("CreatedByOAuthClient") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("CreatedByOAuthClient") }] }] as readonly AttributeApplication[], relation: { opposite: "createdByOAuthClient", name: "CreatedByOAuthClient" } }, accessTokens: { @@ -7183,26 +7183,26 @@ export class SchemaType implements SchemaDef { areEmailsEnabled: { name: "areEmailsEnabled", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, areDefaultEventTypesEnabled: { name: "areDefaultEventTypesEnabled", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(true) }] }], - default: true + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(true) }] }] as readonly AttributeApplication[], + default: true as FieldDefault }, areCalendarEventsEnabled: { name: "areCalendarEventsEnabled", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(true) }] }], - default: true + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(true) }] }] as readonly AttributeApplication[], + default: true as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault } }, idFields: ["id"], @@ -7217,19 +7217,19 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, owner: { name: "owner", type: "User", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "PlatformAuthorizationToken", fields: ["userId"], references: ["id"], onDelete: "Cascade" } }, client: { name: "client", type: "PlatformOAuthClient", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("platformOAuthClientId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("platformOAuthClientId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "authorizationTokens", fields: ["platformOAuthClientId"], references: ["id"], onDelete: "Cascade" } }, platformOAuthClientId: { @@ -7237,25 +7237,25 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "client" - ] + ] as readonly string[] }, userId: { name: "userId", type: "Int", foreignKeyFor: [ "owner" - ] + ] as readonly string[] }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault } }, attributes: [ { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId"), ExpressionUtils.field("platformOAuthClientId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -7269,20 +7269,20 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, secret: { name: "secret", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, expiresAt: { name: "expiresAt", @@ -7291,13 +7291,13 @@ export class SchemaType implements SchemaDef { owner: { name: "owner", type: "User", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "AccessToken", fields: ["userId"], references: ["id"], onDelete: "Cascade" } }, client: { name: "client", type: "PlatformOAuthClient", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("platformOAuthClientId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("platformOAuthClientId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "accessTokens", fields: ["platformOAuthClientId"], references: ["id"], onDelete: "Cascade" } }, platformOAuthClientId: { @@ -7305,14 +7305,14 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "client" - ] + ] as readonly string[] }, userId: { name: "userId", type: "Int", foreignKeyFor: [ "owner" - ] + ] as readonly string[] } }, idFields: ["id"], @@ -7328,20 +7328,20 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, secret: { name: "secret", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, expiresAt: { name: "expiresAt", @@ -7350,13 +7350,13 @@ export class SchemaType implements SchemaDef { owner: { name: "owner", type: "User", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "RefreshToken", fields: ["userId"], references: ["id"], onDelete: "Cascade" } }, client: { name: "client", type: "PlatformOAuthClient", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("platformOAuthClientId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("platformOAuthClientId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "refreshToken", fields: ["platformOAuthClientId"], references: ["id"], onDelete: "Cascade" } }, platformOAuthClientId: { @@ -7364,14 +7364,14 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "client" - ] + ] as readonly string[] }, userId: { name: "userId", type: "Int", foreignKeyFor: [ "owner" - ] + ] as readonly string[] } }, idFields: ["id"], @@ -7387,14 +7387,14 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, directoryId: { name: "directoryId", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, tenant: { name: "tenant", @@ -7405,16 +7405,16 @@ export class SchemaType implements SchemaDef { type: "Int", unique: true, optional: true, - attributes: [{ name: "@unique" }], + attributes: [{ name: "@unique" }] as readonly AttributeApplication[], foreignKeyFor: [ "org" - ] + ] as readonly string[] }, org: { name: "org", type: "OrganizationSettings", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("organizationId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("organizationId")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("organizationId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("organizationId")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "dSyncData", fields: ["organizationId"], references: ["organizationId"], onDelete: "Cascade" } }, teamGroupMapping: { @@ -7427,14 +7427,14 @@ export class SchemaType implements SchemaDef { name: "createdAttributeToUsers", type: "AttributeToUser", array: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("createdByDSync") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("createdByDSync") }] }] as readonly AttributeApplication[], relation: { opposite: "createdByDSync", name: "createdByDSync" } }, updatedAttributeToUsers: { name: "updatedAttributeToUsers", type: "AttributeToUser", array: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("updatedByDSync") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("updatedByDSync") }] }] as readonly AttributeApplication[], relation: { opposite: "updatedByDSync", name: "updatedByDSync" } } }, @@ -7452,8 +7452,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, organizationId: { name: "organizationId", @@ -7464,12 +7464,12 @@ export class SchemaType implements SchemaDef { type: "Int", foreignKeyFor: [ "team" - ] + ] as readonly string[] }, team: { name: "team", type: "Team", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("teamId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("teamId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "dsyncTeamGroupMapping", fields: ["teamId"], references: ["id"], onDelete: "Cascade" } }, directoryId: { @@ -7477,12 +7477,12 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "directory" - ] + ] as readonly string[] }, directory: { name: "directory", type: "DSyncData", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("directoryId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("directoryId")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("directoryId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("directoryId")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "teamGroupMapping", fields: ["directoryId"], references: ["directoryId"], onDelete: "Cascade" } }, groupName: { @@ -7492,7 +7492,7 @@ export class SchemaType implements SchemaDef { }, attributes: [ { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("teamId"), ExpressionUtils.field("groupName")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "Int" }, @@ -7506,13 +7506,13 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, user: { name: "user", type: "User", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "secondaryEmails", fields: ["userId"], references: ["id"], onDelete: "Cascade" } }, userId: { @@ -7520,7 +7520,7 @@ export class SchemaType implements SchemaDef { type: "Int", foreignKeyFor: [ "user" - ] + ] as readonly string[] }, email: { name: "email", @@ -7548,7 +7548,7 @@ export class SchemaType implements SchemaDef { { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("email")]) }] }, { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId"), ExpressionUtils.field("email")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "Int" }, @@ -7564,26 +7564,26 @@ export class SchemaType implements SchemaDef { type: "String", id: true, unique: true, - attributes: [{ name: "@id" }, { name: "@unique" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("uuid") }] }], - default: ExpressionUtils.call("uuid") + attributes: [{ name: "@id" }, { name: "@unique" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("uuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("uuid") as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, scheduledAt: { name: "scheduledAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, succeededAt: { name: "succeededAt", @@ -7601,14 +7601,14 @@ export class SchemaType implements SchemaDef { attempts: { name: "attempts", type: "Int", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }], - default: 0 + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }] as readonly AttributeApplication[], + default: 0 as FieldDefault }, maxAttempts: { name: "maxAttempts", type: "Int", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(3) }] }], - default: 3 + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(3) }] }] as readonly AttributeApplication[], + default: 3 as FieldDefault }, lastError: { name: "lastError", @@ -7639,15 +7639,15 @@ export class SchemaType implements SchemaDef { type: "Int", id: true, unique: true, - attributes: [{ name: "@unique" }], + attributes: [{ name: "@unique" }] as readonly AttributeApplication[], foreignKeyFor: [ "managedOrganization" - ] + ] as readonly string[] }, managedOrganization: { name: "managedOrganization", type: "Team", - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("ManagedOrganization") }, { name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("managedOrganizationId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("ManagedOrganization") }, { name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("managedOrganizationId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "managedOrganization", name: "ManagedOrganization", fields: ["managedOrganizationId"], references: ["id"], onDelete: "Cascade" } }, managerOrganizationId: { @@ -7655,25 +7655,25 @@ export class SchemaType implements SchemaDef { type: "Int", foreignKeyFor: [ "managerOrganization" - ] + ] as readonly string[] }, managerOrganization: { name: "managerOrganization", type: "Team", - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("ManagerOrganization") }, { name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("managerOrganizationId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("ManagerOrganization") }, { name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("managerOrganizationId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "managedOrganizations", name: "ManagerOrganization", fields: ["managerOrganizationId"], references: ["id"], onDelete: "Cascade" } }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault } }, attributes: [ { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("managerOrganizationId"), ExpressionUtils.field("managedOrganizationId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("managerOrganizationId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["managedOrganizationId"], uniqueFields: { managedOrganizationId: { type: "Int" }, @@ -7688,10 +7688,10 @@ export class SchemaType implements SchemaDef { type: "Int", id: true, unique: true, - attributes: [{ name: "@id" }, { name: "@unique" }], + attributes: [{ name: "@id" }, { name: "@unique" }] as readonly AttributeApplication[], foreignKeyFor: [ "team" - ] + ] as readonly string[] }, customerId: { name: "customerId", @@ -7710,8 +7710,8 @@ export class SchemaType implements SchemaDef { plan: { name: "plan", type: "String", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("none") }] }], - default: "none" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("none") }] }] as readonly AttributeApplication[], + default: "none" as FieldDefault }, billingCycleStart: { name: "billingCycleStart", @@ -7727,8 +7727,8 @@ export class SchemaType implements SchemaDef { name: "overdue", type: "Boolean", optional: true, - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, managerBillingId: { name: "managerBillingId", @@ -7736,26 +7736,26 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "managerBilling" - ] + ] as readonly string[] }, managerBilling: { name: "managerBilling", type: "PlatformBilling", optional: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("PlatformManagedBilling") }, { name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("managerBillingId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("PlatformManagedBilling") }, { name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("managerBillingId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }] }] as readonly AttributeApplication[], relation: { opposite: "managedBillings", name: "PlatformManagedBilling", fields: ["managerBillingId"], references: ["id"] } }, managedBillings: { name: "managedBillings", type: "PlatformBilling", array: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("PlatformManagedBilling") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("PlatformManagedBilling") }] }] as readonly AttributeApplication[], relation: { opposite: "managerBilling", name: "PlatformManagedBilling" } }, team: { name: "team", type: "Team", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "platformBilling", fields: ["id"], references: ["id"], onDelete: "Cascade" } } }, @@ -7771,13 +7771,13 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("uuid") }] }], - default: ExpressionUtils.call("uuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("uuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("uuid") as FieldDefault }, attribute: { name: "attribute", type: "Attribute", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("attributeId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("attributeId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "options", fields: ["attributeId"], references: ["id"], onDelete: "Cascade" } }, attributeId: { @@ -7785,7 +7785,7 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "attribute" - ] + ] as readonly string[] }, value: { name: "value", @@ -7798,8 +7798,8 @@ export class SchemaType implements SchemaDef { isGroup: { name: "isGroup", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, contains: { name: "contains", @@ -7825,13 +7825,13 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("uuid") }] }], - default: ExpressionUtils.call("uuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("uuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("uuid") as FieldDefault }, team: { name: "team", type: "Team", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("teamId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("teamId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "attributes", fields: ["teamId"], references: ["id"], onDelete: "Cascade" } }, teamId: { @@ -7839,7 +7839,7 @@ export class SchemaType implements SchemaDef { type: "Int", foreignKeyFor: [ "team" - ] + ] as readonly string[] }, type: { name: "type", @@ -7853,31 +7853,31 @@ export class SchemaType implements SchemaDef { name: "slug", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, enabled: { name: "enabled", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(true) }] }], - default: true + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(true) }] }] as readonly AttributeApplication[], + default: true as FieldDefault }, usersCanEditRelation: { name: "usersCanEditRelation", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, options: { name: "options", @@ -7888,19 +7888,19 @@ export class SchemaType implements SchemaDef { isWeightsEnabled: { name: "isWeightsEnabled", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, isLocked: { name: "isLocked", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault } }, attributes: [ { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("teamId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -7914,13 +7914,13 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("uuid") }] }], - default: ExpressionUtils.call("uuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("uuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("uuid") as FieldDefault }, member: { name: "member", type: "Membership", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("memberId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("memberId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "AttributeToUser", fields: ["memberId"], references: ["id"], onDelete: "Cascade" } }, memberId: { @@ -7928,12 +7928,12 @@ export class SchemaType implements SchemaDef { type: "Int", foreignKeyFor: [ "member" - ] + ] as readonly string[] }, attributeOption: { name: "attributeOption", type: "AttributeOption", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("attributeOptionId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("attributeOptionId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "assignedUsers", fields: ["attributeOptionId"], references: ["id"], onDelete: "Cascade" } }, attributeOptionId: { @@ -7941,7 +7941,7 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "attributeOption" - ] + ] as readonly string[] }, weight: { name: "weight", @@ -7951,8 +7951,8 @@ export class SchemaType implements SchemaDef { createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, createdById: { name: "createdById", @@ -7960,13 +7960,13 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "createdBy" - ] + ] as readonly string[] }, createdBy: { name: "createdBy", type: "User", optional: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("createdBy") }, { name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("createdById")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("createdBy") }, { name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("createdById")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }] }] as readonly AttributeApplication[], relation: { opposite: "createdAttributeToUsers", name: "createdBy", fields: ["createdById"], references: ["id"], onDelete: "SetNull" } }, createdByDSyncId: { @@ -7975,13 +7975,13 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "createdByDSync" - ] + ] as readonly string[] }, createdByDSync: { name: "createdByDSync", type: "DSyncData", optional: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("createdByDSync") }, { name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("createdByDSyncId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("directoryId")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("createdByDSync") }, { name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("createdByDSyncId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("directoryId")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }] }] as readonly AttributeApplication[], relation: { opposite: "createdAttributeToUsers", name: "createdByDSync", fields: ["createdByDSyncId"], references: ["directoryId"], onDelete: "SetNull" } }, updatedAt: { @@ -7989,13 +7989,13 @@ export class SchemaType implements SchemaDef { type: "DateTime", optional: true, updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, updatedBy: { name: "updatedBy", type: "User", optional: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("updatedBy") }, { name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("updatedById")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("updatedBy") }, { name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("updatedById")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }] }] as readonly AttributeApplication[], relation: { opposite: "updatedAttributeToUsers", name: "updatedBy", fields: ["updatedById"], references: ["id"], onDelete: "SetNull" } }, updatedById: { @@ -8004,7 +8004,7 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "updatedBy" - ] + ] as readonly string[] }, updatedByDSyncId: { name: "updatedByDSyncId", @@ -8012,19 +8012,19 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "updatedByDSync" - ] + ] as readonly string[] }, updatedByDSync: { name: "updatedByDSync", type: "DSyncData", optional: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("updatedByDSync") }, { name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("updatedByDSyncId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("directoryId")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("updatedByDSync") }, { name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("updatedByDSyncId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("directoryId")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }] }] as readonly AttributeApplication[], relation: { opposite: "updatedAttributeToUsers", name: "updatedByDSync", fields: ["updatedByDSyncId"], references: ["directoryId"], onDelete: "SetNull" } } }, attributes: [ { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("memberId"), ExpressionUtils.field("attributeOptionId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -8039,26 +8039,26 @@ export class SchemaType implements SchemaDef { type: "Int", id: true, unique: true, - attributes: [{ name: "@id" }, { name: "@unique" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@unique" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, bookingId: { name: "bookingId", type: "Int", foreignKeyFor: [ "booking" - ] + ] as readonly string[] }, booking: { name: "booking", type: "Booking", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("bookingId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("bookingId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "assignmentReason", fields: ["bookingId"], references: ["id"], onDelete: "Cascade" } }, reasonEnum: { @@ -8072,7 +8072,7 @@ export class SchemaType implements SchemaDef { }, attributes: [ { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("bookingId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "Int" } @@ -8085,13 +8085,13 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("uuid") }] }], - default: ExpressionUtils.call("uuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("uuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("uuid") as FieldDefault }, workspacePlatform: { name: "workspacePlatform", type: "WorkspacePlatform", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("workspacePlatformId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("workspacePlatformId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "delegationCredentials", fields: ["workspacePlatformId"], references: ["id"], onDelete: "Cascade" } }, workspacePlatformId: { @@ -8099,7 +8099,7 @@ export class SchemaType implements SchemaDef { type: "Int", foreignKeyFor: [ "workspacePlatform" - ] + ] as readonly string[] }, serviceAccountKey: { name: "serviceAccountKey", @@ -8108,8 +8108,8 @@ export class SchemaType implements SchemaDef { enabled: { name: "enabled", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, lastEnabledAt: { name: "lastEnabledAt", @@ -8126,12 +8126,12 @@ export class SchemaType implements SchemaDef { type: "Int", foreignKeyFor: [ "organization" - ] + ] as readonly string[] }, organization: { name: "organization", type: "Team", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("organizationId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("organizationId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "delegationCredentials", fields: ["organizationId"], references: ["id"], onDelete: "Cascade" } }, domain: { @@ -8159,14 +8159,14 @@ export class SchemaType implements SchemaDef { createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, credentials: { name: "credentials", @@ -8178,7 +8178,7 @@ export class SchemaType implements SchemaDef { attributes: [ { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("organizationId"), ExpressionUtils.field("domain")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Boolean", [ExpressionUtils.field("enabled")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -8192,13 +8192,13 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("uuid") }] }], - default: ExpressionUtils.call("uuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("uuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("uuid") as FieldDefault }, workspacePlatform: { name: "workspacePlatform", type: "WorkspacePlatform", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("workspacePlatformId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("workspacePlatformId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "domainWideDelegations", fields: ["workspacePlatformId"], references: ["id"], onDelete: "Cascade" } }, workspacePlatformId: { @@ -8206,7 +8206,7 @@ export class SchemaType implements SchemaDef { type: "Int", foreignKeyFor: [ "workspacePlatform" - ] + ] as readonly string[] }, serviceAccountKey: { name: "serviceAccountKey", @@ -8215,20 +8215,20 @@ export class SchemaType implements SchemaDef { enabled: { name: "enabled", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, organizationId: { name: "organizationId", type: "Int", foreignKeyFor: [ "organization" - ] + ] as readonly string[] }, organization: { name: "organization", type: "Team", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("organizationId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("organizationId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "domainWideDelegations", fields: ["organizationId"], references: ["id"], onDelete: "Cascade" } }, domain: { @@ -8256,19 +8256,19 @@ export class SchemaType implements SchemaDef { createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] } }, attributes: [ { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("organizationId"), ExpressionUtils.field("domain")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -8282,8 +8282,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, slug: { name: "slug", @@ -8304,20 +8304,20 @@ export class SchemaType implements SchemaDef { createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, enabled: { name: "enabled", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, delegationCredentials: { name: "delegationCredentials", @@ -8334,7 +8334,7 @@ export class SchemaType implements SchemaDef { }, attributes: [ { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("slug")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "Int" }, @@ -8348,13 +8348,13 @@ export class SchemaType implements SchemaDef { name: "uid", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, eventType: { name: "eventType", type: "EventType", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("eventTypeId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("eventTypeId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "fieldTranslations", fields: ["eventTypeId"], references: ["id"], onDelete: "Cascade" } }, eventTypeId: { @@ -8362,7 +8362,7 @@ export class SchemaType implements SchemaDef { type: "Int", foreignKeyFor: [ "eventType" - ] + ] as readonly string[] }, field: { name: "field", @@ -8379,26 +8379,26 @@ export class SchemaType implements SchemaDef { translatedText: { name: "translatedText", type: "String", - attributes: [{ name: "@db.Text" }] + attributes: [{ name: "@db.Text" }] as readonly AttributeApplication[] }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, createdBy: { name: "createdBy", type: "Int", foreignKeyFor: [ "creator" - ] + ] as readonly string[] }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, updatedBy: { name: "updatedBy", @@ -8406,26 +8406,26 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "updater" - ] + ] as readonly string[] }, creator: { name: "creator", type: "User", - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("CreatedEventTypeTranslations") }, { name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("createdBy")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("CreatedEventTypeTranslations") }, { name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("createdBy")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }] }] as readonly AttributeApplication[], relation: { opposite: "createdTranslations", name: "CreatedEventTypeTranslations", fields: ["createdBy"], references: ["id"] } }, updater: { name: "updater", type: "User", optional: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("UpdatedEventTypeTranslations") }, { name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("updatedBy")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("UpdatedEventTypeTranslations") }, { name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("updatedBy")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }] }] as readonly AttributeApplication[], relation: { opposite: "updatedTranslations", name: "UpdatedEventTypeTranslations", fields: ["updatedBy"], references: ["id"], onDelete: "SetNull" } } }, attributes: [ { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("eventTypeId"), ExpressionUtils.field("field"), ExpressionUtils.field("targetLocale")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("eventTypeId"), ExpressionUtils.field("field"), ExpressionUtils.field("targetLocale")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["uid"], uniqueFields: { uid: { type: "String" }, @@ -8440,8 +8440,8 @@ export class SchemaType implements SchemaDef { type: "String", id: true, unique: true, - attributes: [{ name: "@id" }, { name: "@unique" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@unique" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, type: { name: "type", @@ -8459,13 +8459,13 @@ export class SchemaType implements SchemaDef { createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, createdBy: { name: "createdBy", type: "User", - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("CreatedWatchlists") }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("createdById")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("CreatedWatchlists") }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("createdById")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }] }] as readonly AttributeApplication[], relation: { opposite: "createdWatchlists", name: "CreatedWatchlists", onDelete: "Cascade", fields: ["createdById"], references: ["id"] } }, createdById: { @@ -8473,19 +8473,19 @@ export class SchemaType implements SchemaDef { type: "Int", foreignKeyFor: [ "createdBy" - ] + ] as readonly string[] }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, updatedBy: { name: "updatedBy", type: "User", optional: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("UpdatedWatchlists") }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }, { name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("updatedById")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("UpdatedWatchlists") }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }, { name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("updatedById")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }] }] as readonly AttributeApplication[], relation: { opposite: "updatedWatchlists", name: "UpdatedWatchlists", onDelete: "SetNull", fields: ["updatedById"], references: ["id"] } }, updatedById: { @@ -8494,19 +8494,19 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "updatedBy" - ] + ] as readonly string[] }, severity: { name: "severity", type: "WatchlistSeverity", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("LOW") }] }], - default: "LOW" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("LOW") }] }] as readonly AttributeApplication[], + default: "LOW" as FieldDefault } }, attributes: [ { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("WatchlistType", [ExpressionUtils.field("type"), ExpressionUtils.field("value")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("WatchlistType", [ExpressionUtils.field("type"), ExpressionUtils.field("value")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -8520,13 +8520,13 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("uuid") }] }], - default: ExpressionUtils.call("uuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("uuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("uuid") as FieldDefault }, createdBy: { name: "createdBy", type: "User", - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("CreatedOrganizationOnboardings") }, { name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("createdById")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("CreatedOrganizationOnboardings") }, { name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("createdById")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "createdOrganizationOnboardings", name: "CreatedOrganizationOnboardings", fields: ["createdById"], references: ["id"], onDelete: "Cascade" } }, createdById: { @@ -8534,19 +8534,19 @@ export class SchemaType implements SchemaDef { type: "Int", foreignKeyFor: [ "createdBy" - ] + ] as readonly string[] }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, orgOwnerEmail: { name: "orgOwnerEmail", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, error: { name: "error", @@ -8557,23 +8557,23 @@ export class SchemaType implements SchemaDef { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, organizationId: { name: "organizationId", type: "Int", unique: true, optional: true, - attributes: [{ name: "@unique" }], + attributes: [{ name: "@unique" }] as readonly AttributeApplication[], foreignKeyFor: [ "organization" - ] + ] as readonly string[] }, organization: { name: "organization", type: "Team", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("organizationId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("organizationId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "organizationOnboarding", fields: ["organizationId"], references: ["id"], onDelete: "Cascade" } }, billingPeriod: { @@ -8591,8 +8591,8 @@ export class SchemaType implements SchemaDef { isPlatform: { name: "isPlatform", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, name: { name: "name", @@ -8615,15 +8615,15 @@ export class SchemaType implements SchemaDef { isDomainConfigured: { name: "isDomainConfigured", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, stripeCustomerId: { name: "stripeCustomerId", type: "String", unique: true, optional: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, stripeSubscriptionId: { name: "stripeSubscriptionId", @@ -8638,26 +8638,26 @@ export class SchemaType implements SchemaDef { invitedMembers: { name: "invitedMembers", type: "Json", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("[]") }] }], - default: "[]" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("[]") }] }] as readonly AttributeApplication[], + default: "[]" as FieldDefault }, teams: { name: "teams", type: "Json", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("[]") }] }], - default: "[]" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("[]") }] }] as readonly AttributeApplication[], + default: "[]" as FieldDefault }, isComplete: { name: "isComplete", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault } }, attributes: [ { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("orgOwnerEmail")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("stripeCustomerId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -8673,13 +8673,13 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, form: { name: "form", type: "App_RoutingForms_Form", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("formId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("formId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "incompleteBookingActions", fields: ["formId"], references: ["id"], onDelete: "Cascade" } }, formId: { @@ -8687,7 +8687,7 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "form" - ] + ] as readonly string[] }, actionType: { name: "actionType", @@ -8700,8 +8700,8 @@ export class SchemaType implements SchemaDef { enabled: { name: "enabled", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(true) }] }], - default: true + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(true) }] }] as readonly AttributeApplication[], + default: true as FieldDefault }, credentialId: { name: "credentialId", @@ -8721,8 +8721,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, name: { name: "name", @@ -8736,7 +8736,7 @@ export class SchemaType implements SchemaDef { team: { name: "team", type: "Team", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("teamId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("teamId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }] }] as readonly AttributeApplication[], relation: { opposite: "internalNotePresets", fields: ["teamId"], references: ["id"] } }, teamId: { @@ -8744,13 +8744,13 @@ export class SchemaType implements SchemaDef { type: "Int", foreignKeyFor: [ "team" - ] + ] as readonly string[] }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, BookingInternalNote: { name: "BookingInternalNote", @@ -8762,7 +8762,7 @@ export class SchemaType implements SchemaDef { attributes: [ { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("teamId"), ExpressionUtils.field("name")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("teamId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "Int" }, @@ -8776,8 +8776,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, name: { name: "name", @@ -8819,24 +8819,24 @@ export class SchemaType implements SchemaDef { name: "searchTerm", type: "String", optional: true, - attributes: [{ name: "@db.Text" }] + attributes: [{ name: "@db.Text" }] as readonly AttributeApplication[] }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, user: { name: "user", type: "User", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "filterSegments", fields: ["userId"], references: ["id"], onDelete: "Cascade" } }, userId: { @@ -8844,13 +8844,13 @@ export class SchemaType implements SchemaDef { type: "Int", foreignKeyFor: [ "user" - ] + ] as readonly string[] }, team: { name: "team", type: "Team", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("teamId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("teamId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "filterSegments", fields: ["teamId"], references: ["id"], onDelete: "Cascade" } }, teamId: { @@ -8859,7 +8859,7 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "team" - ] + ] as readonly string[] }, userPreferences: { name: "userPreferences", @@ -8871,7 +8871,7 @@ export class SchemaType implements SchemaDef { attributes: [ { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("FilterSegmentScope", [ExpressionUtils.field("scope"), ExpressionUtils.field("userId"), ExpressionUtils.field("tableIdentifier")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("FilterSegmentScope", [ExpressionUtils.field("scope"), ExpressionUtils.field("teamId"), ExpressionUtils.field("tableIdentifier")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "Int" } @@ -8884,15 +8884,15 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, userId: { name: "userId", type: "Int", foreignKeyFor: [ "user" - ] + ] as readonly string[] }, tableIdentifier: { name: "tableIdentifier", @@ -8903,30 +8903,30 @@ export class SchemaType implements SchemaDef { type: "Int", foreignKeyFor: [ "segment" - ] + ] as readonly string[] }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, user: { name: "user", type: "User", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "filterSegmentPreferences", fields: ["userId"], references: ["id"], onDelete: "Cascade" } }, segment: { name: "segment", type: "FilterSegment", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("segmentId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("segmentId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "userPreferences", fields: ["segmentId"], references: ["id"], onDelete: "Cascade" } } }, @@ -8934,7 +8934,7 @@ export class SchemaType implements SchemaDef { { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId"), ExpressionUtils.field("tableIdentifier")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("segmentId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "Int" }, @@ -8948,14 +8948,14 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, notePreset: { name: "notePreset", type: "InternalNotePreset", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("notePresetId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("notePresetId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "BookingInternalNote", fields: ["notePresetId"], references: ["id"], onDelete: "Cascade" } }, notePresetId: { @@ -8964,7 +8964,7 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "notePreset" - ] + ] as readonly string[] }, text: { name: "text", @@ -8974,7 +8974,7 @@ export class SchemaType implements SchemaDef { booking: { name: "booking", type: "Booking", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("bookingId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("bookingId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "internalNote", fields: ["bookingId"], references: ["id"], onDelete: "Cascade" } }, bookingId: { @@ -8982,12 +8982,12 @@ export class SchemaType implements SchemaDef { type: "Int", foreignKeyFor: [ "booking" - ] + ] as readonly string[] }, createdBy: { name: "createdBy", type: "User", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("createdById")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("createdById")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }] }] as readonly AttributeApplication[], relation: { opposite: "BookingInternalNote", fields: ["createdById"], references: ["id"] } }, createdById: { @@ -8995,19 +8995,19 @@ export class SchemaType implements SchemaDef { type: "Int", foreignKeyFor: [ "createdBy" - ] + ] as readonly string[] }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault } }, attributes: [ { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("bookingId"), ExpressionUtils.field("notePresetId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("bookingId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "Int" }, @@ -9021,8 +9021,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, type: { name: "type", @@ -9039,19 +9039,19 @@ export class SchemaType implements SchemaDef { createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] } }, attributes: [ { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("WorkflowContactType", [ExpressionUtils.field("type"), ExpressionUtils.field("value")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "Int" }, @@ -9065,8 +9065,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, name: { name: "name", @@ -9083,13 +9083,13 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "team" - ] + ] as readonly string[] }, team: { name: "team", type: "Team", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("teamId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("teamId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "roles", fields: ["teamId"], references: ["id"], onDelete: "Cascade" } }, permissions: { @@ -9107,26 +9107,26 @@ export class SchemaType implements SchemaDef { createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, type: { name: "type", type: "RoleType", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("CUSTOM") }] }], - default: "CUSTOM" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("CUSTOM") }] }] as readonly AttributeApplication[], + default: "CUSTOM" as FieldDefault } }, attributes: [ { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("name"), ExpressionUtils.field("teamId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("teamId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -9140,20 +9140,20 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, roleId: { name: "roleId", type: "String", foreignKeyFor: [ "role" - ] + ] as readonly string[] }, role: { name: "role", type: "Role", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("roleId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("roleId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "permissions", fields: ["roleId"], references: ["id"], onDelete: "Cascade" } }, resource: { @@ -9167,15 +9167,15 @@ export class SchemaType implements SchemaDef { createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault } }, attributes: [ { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("roleId"), ExpressionUtils.field("resource"), ExpressionUtils.field("action")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("roleId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("action")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -9196,19 +9196,19 @@ export class SchemaType implements SchemaDef { name: "ROUND_ROBIN", attributes: [ { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("roundRobin") }] } - ] + ] as readonly AttributeApplication[] }, COLLECTIVE: { name: "COLLECTIVE", attributes: [ { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("collective") }] } - ] + ] as readonly AttributeApplication[] }, MANAGED: { name: "MANAGED", attributes: [ { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("managed") }] } - ] + ] as readonly AttributeApplication[] } } }, @@ -9225,25 +9225,25 @@ export class SchemaType implements SchemaDef { name: "UNLIMITED", attributes: [ { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("unlimited") }] } - ] + ] as readonly AttributeApplication[] }, ROLLING: { name: "ROLLING", attributes: [ { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("rolling") }] } - ] + ] as readonly AttributeApplication[] }, ROLLING_WINDOW: { name: "ROLLING_WINDOW", attributes: [ { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("rolling_window") }] } - ] + ] as readonly AttributeApplication[] }, RANGE: { name: "RANGE", attributes: [ { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("range") }] } - ] + ] as readonly AttributeApplication[] } } }, @@ -9259,19 +9259,19 @@ export class SchemaType implements SchemaDef { name: "API_V1", attributes: [ { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("api_v1") }] } - ] + ] as readonly AttributeApplication[] }, API_V2: { name: "API_V2", attributes: [ { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("api_v2") }] } - ] + ] as readonly AttributeApplication[] }, WEBAPP: { name: "WEBAPP", attributes: [ { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("webapp") }] } - ] + ] as readonly AttributeApplication[] } } }, @@ -9319,31 +9319,31 @@ export class SchemaType implements SchemaDef { name: "CANCELLED", attributes: [ { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("cancelled") }] } - ] + ] as readonly AttributeApplication[] }, ACCEPTED: { name: "ACCEPTED", attributes: [ { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("accepted") }] } - ] + ] as readonly AttributeApplication[] }, REJECTED: { name: "REJECTED", attributes: [ { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("rejected") }] } - ] + ] as readonly AttributeApplication[] }, PENDING: { name: "PENDING", attributes: [ { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("pending") }] } - ] + ] as readonly AttributeApplication[] }, AWAITING_HOST: { name: "AWAITING_HOST", attributes: [ { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("awaiting_host") }] } - ] + ] as readonly AttributeApplication[] } } }, @@ -9362,37 +9362,37 @@ export class SchemaType implements SchemaDef { name: "TEXT", attributes: [ { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("text") }] } - ] + ] as readonly AttributeApplication[] }, TEXTLONG: { name: "TEXTLONG", attributes: [ { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("textLong") }] } - ] + ] as readonly AttributeApplication[] }, NUMBER: { name: "NUMBER", attributes: [ { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("number") }] } - ] + ] as readonly AttributeApplication[] }, BOOL: { name: "BOOL", attributes: [ { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("bool") }] } - ] + ] as readonly AttributeApplication[] }, RADIO: { name: "RADIO", attributes: [ { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("radio") }] } - ] + ] as readonly AttributeApplication[] }, PHONE: { name: "PHONE", attributes: [ { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("phone") }] } - ] + ] as readonly AttributeApplication[] } } }, @@ -9483,19 +9483,19 @@ export class SchemaType implements SchemaDef { name: "DAY", attributes: [ { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("day") }] } - ] + ] as readonly AttributeApplication[] }, HOUR: { name: "HOUR", attributes: [ { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("hour") }] } - ] + ] as readonly AttributeApplication[] }, MINUTE: { name: "MINUTE", attributes: [ { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("minute") }] } - ] + ] as readonly AttributeApplication[] } } }, @@ -9562,25 +9562,25 @@ export class SchemaType implements SchemaDef { name: "UserEventType", attributes: [ { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("user-event-type") }] } - ] + ] as readonly AttributeApplication[] }, TeamEventType: { name: "TeamEventType", attributes: [ { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("team-event-type") }] } - ] + ] as readonly AttributeApplication[] }, User: { name: "User", attributes: [ { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("user") }] } - ] + ] as readonly AttributeApplication[] }, Team: { name: "Team", attributes: [ { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("team") }] } - ] + ] as readonly AttributeApplication[] } } }, diff --git a/tests/e2e/github-repos/formbricks/schema.ts b/tests/e2e/github-repos/formbricks/schema.ts index 825df4e9d..265fad364 100644 --- a/tests/e2e/github-repos/formbricks/schema.ts +++ b/tests/e2e/github-repos/formbricks/schema.ts @@ -5,7 +5,7 @@ /* eslint-disable */ -import { type SchemaDef, ExpressionUtils } from "@zenstackhq/schema"; +import { type SchemaDef, type AttributeApplication, type FieldDefault, ExpressionUtils } from "@zenstackhq/schema"; export class SchemaType implements SchemaDef { provider = { type: "postgresql" @@ -18,8 +18,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, name: { name: "name", @@ -29,15 +29,15 @@ export class SchemaType implements SchemaDef { createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, url: { name: "url", @@ -46,13 +46,13 @@ export class SchemaType implements SchemaDef { source: { name: "source", type: "WebhookSource", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("user") }] }], - default: "user" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("user") }] }] as readonly AttributeApplication[], + default: "user" as FieldDefault }, environment: { name: "environment", type: "Environment", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("environmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("environmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "webhooks", fields: ["environmentId"], references: ["id"], onDelete: "Cascade" } }, environmentId: { @@ -60,7 +60,7 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "environment" - ] + ] as readonly string[] }, triggers: { name: "triggers", @@ -75,7 +75,7 @@ export class SchemaType implements SchemaDef { }, attributes: [ { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("environmentId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" } @@ -88,25 +88,25 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] + attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] as readonly AttributeApplication[] }, attributeKey: { name: "attributeKey", type: "ContactAttributeKey", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("attributeKeyId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("attributeKeyId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "attributes", fields: ["attributeKeyId"], references: ["id"], onDelete: "Cascade" } }, attributeKeyId: { @@ -114,12 +114,12 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "attributeKey" - ] + ] as readonly string[] }, contact: { name: "contact", type: "Contact", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("contactId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("contactId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "attributes", fields: ["contactId"], references: ["id"], onDelete: "Cascade" } }, contactId: { @@ -127,7 +127,7 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "contact" - ] + ] as readonly string[] }, value: { name: "value", @@ -137,7 +137,7 @@ export class SchemaType implements SchemaDef { attributes: [ { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("contactId"), ExpressionUtils.field("attributeKeyId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("attributeKeyId"), ExpressionUtils.field("value")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -151,26 +151,26 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] + attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] as readonly AttributeApplication[] }, isUnique: { name: "isUnique", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, key: { name: "key", @@ -189,13 +189,13 @@ export class SchemaType implements SchemaDef { type: { name: "type", type: "ContactAttributeType", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("custom") }] }], - default: "custom" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("custom") }] }] as readonly AttributeApplication[], + default: "custom" as FieldDefault }, environment: { name: "environment", type: "Environment", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("environmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("environmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "attributeKeys", fields: ["environmentId"], references: ["id"], onDelete: "Cascade" } }, environmentId: { @@ -203,7 +203,7 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "environment" - ] + ] as readonly string[] }, attributes: { name: "attributes", @@ -221,7 +221,7 @@ export class SchemaType implements SchemaDef { attributes: [ { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("key"), ExpressionUtils.field("environmentId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("environmentId"), ExpressionUtils.field("createdAt")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -235,8 +235,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, userId: { name: "userId", @@ -246,19 +246,19 @@ export class SchemaType implements SchemaDef { createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] + attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] as readonly AttributeApplication[] }, environment: { name: "environment", type: "Environment", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("environmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("environmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "contacts", fields: ["environmentId"], references: ["id"], onDelete: "Cascade" } }, environmentId: { @@ -266,7 +266,7 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "environment" - ] + ] as readonly string[] }, responses: { name: "responses", @@ -289,7 +289,7 @@ export class SchemaType implements SchemaDef { }, attributes: [ { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("environmentId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" } @@ -302,32 +302,32 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, finished: { name: "finished", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, survey: { name: "survey", type: "Survey", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("surveyId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("surveyId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "responses", fields: ["surveyId"], references: ["id"], onDelete: "Cascade" } }, surveyId: { @@ -335,13 +335,13 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "survey" - ] + ] as readonly string[] }, contact: { name: "contact", type: "Contact", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("contactId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("contactId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "responses", fields: ["contactId"], references: ["id"], onDelete: "Cascade" } }, contactId: { @@ -350,7 +350,7 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "contact" - ] + ] as readonly string[] }, endingId: { name: "endingId", @@ -366,26 +366,26 @@ export class SchemaType implements SchemaDef { data: { name: "data", type: "Json", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("{}") }] }], - default: "{}" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("{}") }] }] as readonly AttributeApplication[], + default: "{}" as FieldDefault }, variables: { name: "variables", type: "Json", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("{}") }] }], - default: "{}" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("{}") }] }] as readonly AttributeApplication[], + default: "{}" as FieldDefault }, ttc: { name: "ttc", type: "Json", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("{}") }] }], - default: "{}" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("{}") }] }] as readonly AttributeApplication[], + default: "{}" as FieldDefault }, meta: { name: "meta", type: "Json", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("{}") }] }], - default: "{}" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("{}") }] }] as readonly AttributeApplication[], + default: "{}" as FieldDefault }, tags: { name: "tags", @@ -419,16 +419,16 @@ export class SchemaType implements SchemaDef { type: "String", unique: true, optional: true, - attributes: [{ name: "@unique" }], + attributes: [{ name: "@unique" }] as readonly AttributeApplication[], foreignKeyFor: [ "display" - ] + ] as readonly string[] }, display: { name: "display", type: "Display", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("displayId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("displayId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }] }] as readonly AttributeApplication[], relation: { opposite: "response", fields: ["displayId"], references: ["id"] } } }, @@ -438,7 +438,7 @@ export class SchemaType implements SchemaDef { { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("surveyId"), ExpressionUtils.field("createdAt")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("contactId"), ExpressionUtils.field("createdAt")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("surveyId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -453,25 +453,25 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] + attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] as readonly AttributeApplication[] }, response: { name: "response", type: "Response", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("responseId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("responseId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "notes", fields: ["responseId"], references: ["id"], onDelete: "Cascade" } }, responseId: { @@ -479,12 +479,12 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "response" - ] + ] as readonly string[] }, user: { name: "user", type: "User", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "responseNotes", fields: ["userId"], references: ["id"], onDelete: "Cascade" } }, userId: { @@ -492,7 +492,7 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "user" - ] + ] as readonly string[] }, text: { name: "text", @@ -501,19 +501,19 @@ export class SchemaType implements SchemaDef { isResolved: { name: "isResolved", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, isEdited: { name: "isEdited", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault } }, attributes: [ { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("responseId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" } @@ -526,20 +526,20 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] + attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] as readonly AttributeApplication[] }, name: { name: "name", @@ -556,19 +556,19 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "environment" - ] + ] as readonly string[] }, environment: { name: "environment", type: "Environment", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("environmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("environmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "tags", fields: ["environmentId"], references: ["id"], onDelete: "Cascade" } } }, attributes: [ { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("environmentId"), ExpressionUtils.field("name")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("environmentId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -584,12 +584,12 @@ export class SchemaType implements SchemaDef { id: true, foreignKeyFor: [ "response" - ] + ] as readonly string[] }, response: { name: "response", type: "Response", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("responseId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("responseId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "tags", fields: ["responseId"], references: ["id"], onDelete: "Cascade" } }, tagId: { @@ -598,19 +598,19 @@ export class SchemaType implements SchemaDef { id: true, foreignKeyFor: [ "tag" - ] + ] as readonly string[] }, tag: { name: "tag", type: "Tag", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("tagId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("tagId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "responses", fields: ["tagId"], references: ["id"], onDelete: "Cascade" } } }, attributes: [ { name: "@@id", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("responseId"), ExpressionUtils.field("tagId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("responseId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["responseId", "tagId"], uniqueFields: { responseId_tagId: { responseId: { type: "String" }, tagId: { type: "String" } } @@ -623,25 +623,25 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] + attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] as readonly AttributeApplication[] }, survey: { name: "survey", type: "Survey", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("surveyId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("surveyId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "displays", fields: ["surveyId"], references: ["id"], onDelete: "Cascade" } }, surveyId: { @@ -649,13 +649,13 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "survey" - ] + ] as readonly string[] }, contact: { name: "contact", type: "Contact", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("contactId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("contactId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "displays", fields: ["contactId"], references: ["id"], onDelete: "Cascade" } }, contactId: { @@ -664,14 +664,14 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "contact" - ] + ] as readonly string[] }, responseId: { name: "responseId", type: "String", unique: true, optional: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, status: { name: "status", @@ -688,7 +688,7 @@ export class SchemaType implements SchemaDef { attributes: [ { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("surveyId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("contactId"), ExpressionUtils.field("createdAt")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -702,25 +702,25 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] + attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] as readonly AttributeApplication[] }, survey: { name: "survey", type: "Survey", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("surveyId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("surveyId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "triggers", fields: ["surveyId"], references: ["id"], onDelete: "Cascade" } }, surveyId: { @@ -728,12 +728,12 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "survey" - ] + ] as readonly string[] }, actionClass: { name: "actionClass", type: "ActionClass", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("actionClassId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("actionClassId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "surveyTriggers", fields: ["actionClassId"], references: ["id"], onDelete: "Cascade" } }, actionClassId: { @@ -741,13 +741,13 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "actionClass" - ] + ] as readonly string[] } }, attributes: [ { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("surveyId"), ExpressionUtils.field("actionClassId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("surveyId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -761,25 +761,25 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] + attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] as readonly AttributeApplication[] }, attributeKey: { name: "attributeKey", type: "ContactAttributeKey", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("attributeKeyId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("attributeKeyId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "attributeFilters", fields: ["attributeKeyId"], references: ["id"], onDelete: "Cascade" } }, attributeKeyId: { @@ -787,12 +787,12 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "attributeKey" - ] + ] as readonly string[] }, survey: { name: "survey", type: "Survey", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("surveyId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("surveyId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "attributeFilters", fields: ["surveyId"], references: ["id"], onDelete: "Cascade" } }, surveyId: { @@ -800,7 +800,7 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "survey" - ] + ] as readonly string[] }, condition: { name: "condition", @@ -815,7 +815,7 @@ export class SchemaType implements SchemaDef { { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("surveyId"), ExpressionUtils.field("attributeKeyId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("surveyId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("attributeKeyId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -829,20 +829,20 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] + attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] as readonly AttributeApplication[] }, name: { name: "name", @@ -856,13 +856,13 @@ export class SchemaType implements SchemaDef { type: { name: "type", type: "SurveyType", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("web") }] }], - default: "web" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("web") }] }] as readonly AttributeApplication[], + default: "web" as FieldDefault }, environment: { name: "environment", type: "Environment", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("environmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("environmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "surveys", fields: ["environmentId"], references: ["id"], onDelete: "Cascade" } }, environmentId: { @@ -870,13 +870,13 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "environment" - ] + ] as readonly string[] }, creator: { name: "creator", type: "User", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("createdBy")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("createdBy")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }] }] as readonly AttributeApplication[], relation: { opposite: "surveys", fields: ["createdBy"], references: ["id"] } }, createdBy: { @@ -885,32 +885,32 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "creator" - ] + ] as readonly string[] }, status: { name: "status", type: "SurveyStatus", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("draft") }] }], - default: "draft" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("draft") }] }] as readonly AttributeApplication[], + default: "draft" as FieldDefault }, welcomeCard: { name: "welcomeCard", type: "Json", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("{\"enabled\": false}") }] }], - default: "{\"enabled\": false}" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("{\"enabled\": false}") }] }] as readonly AttributeApplication[], + default: "{\"enabled\": false}" as FieldDefault }, questions: { name: "questions", type: "Json", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("[]") }] }], - default: "[]" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("[]") }] }] as readonly AttributeApplication[], + default: "[]" as FieldDefault }, endings: { name: "endings", type: "Json", array: true, - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.array("Any", []) }] }], - default: [] + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.array("Any", []) }] }] as readonly AttributeApplication[], + default: [] as FieldDefault }, thankYouCard: { name: "thankYouCard", @@ -920,14 +920,14 @@ export class SchemaType implements SchemaDef { hiddenFields: { name: "hiddenFields", type: "Json", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("{\"enabled\": false}") }] }], - default: "{\"enabled\": false}" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("{\"enabled\": false}") }] }] as readonly AttributeApplication[], + default: "{\"enabled\": false}" as FieldDefault }, variables: { name: "variables", type: "Json", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("[]") }] }], - default: "[]" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("[]") }] }] as readonly AttributeApplication[], + default: "[]" as FieldDefault }, responses: { name: "responses", @@ -938,8 +938,8 @@ export class SchemaType implements SchemaDef { displayOption: { name: "displayOption", type: "displayOptions", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("displayOnce") }] }], - default: "displayOnce" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("displayOnce") }] }] as readonly AttributeApplication[], + default: "displayOnce" as FieldDefault }, recontactDays: { name: "recontactDays", @@ -987,8 +987,8 @@ export class SchemaType implements SchemaDef { delay: { name: "delay", type: "Int", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }], - default: 0 + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }] as readonly AttributeApplication[], + default: 0 as FieldDefault }, runOnDate: { name: "runOnDate", @@ -1011,13 +1011,13 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "segment" - ] + ] as readonly string[] }, segment: { name: "segment", type: "Segment", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("segmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("segmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }] }] as readonly AttributeApplication[], relation: { opposite: "surveys", fields: ["segmentId"], references: ["id"] } }, projectOverwrites: { @@ -1034,8 +1034,8 @@ export class SchemaType implements SchemaDef { name: "singleUse", type: "Json", optional: true, - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("{\"enabled\": false, \"isEncrypted\": true}") }] }], - default: "{\"enabled\": false, \"isEncrypted\": true}" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("{\"enabled\": false, \"isEncrypted\": true}") }] }] as readonly AttributeApplication[], + default: "{\"enabled\": false, \"isEncrypted\": true}" as FieldDefault }, verifyEmail: { name: "verifyEmail", @@ -1045,20 +1045,20 @@ export class SchemaType implements SchemaDef { isVerifyEmailEnabled: { name: "isVerifyEmailEnabled", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, isSingleResponsePerEmailEnabled: { name: "isSingleResponsePerEmailEnabled", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, isBackButtonHidden: { name: "isBackButtonHidden", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, pin: { name: "pin", @@ -1070,7 +1070,7 @@ export class SchemaType implements SchemaDef { type: "String", unique: true, optional: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, displayPercentage: { name: "displayPercentage", @@ -1104,14 +1104,14 @@ export class SchemaType implements SchemaDef { name: "recaptcha", type: "Json", optional: true, - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("{\"enabled\": false, \"threshold\":0.1}") }] }], - default: "{\"enabled\": false, \"threshold\":0.1}" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("{\"enabled\": false, \"threshold\":0.1}") }] }] as readonly AttributeApplication[], + default: "{\"enabled\": false, \"threshold\":0.1}" as FieldDefault } }, attributes: [ { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("environmentId"), ExpressionUtils.field("updatedAt")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("segmentId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -1125,25 +1125,25 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] + attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] as readonly AttributeApplication[] }, survey: { name: "survey", type: "Survey", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("surveyId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("surveyId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "followUps", fields: ["surveyId"], references: ["id"], onDelete: "Cascade" } }, surveyId: { @@ -1151,7 +1151,7 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "survey" - ] + ] as readonly string[] }, name: { name: "name", @@ -1178,20 +1178,20 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] + attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] as readonly AttributeApplication[] }, name: { name: "name", @@ -1219,7 +1219,7 @@ export class SchemaType implements SchemaDef { environment: { name: "environment", type: "Environment", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("environmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("environmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "actionClasses", fields: ["environmentId"], references: ["id"], onDelete: "Cascade" } }, environmentId: { @@ -1227,7 +1227,7 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "environment" - ] + ] as readonly string[] }, surveyTriggers: { name: "surveyTriggers", @@ -1240,7 +1240,7 @@ export class SchemaType implements SchemaDef { { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("key"), ExpressionUtils.field("environmentId")]) }] }, { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("name"), ExpressionUtils.field("environmentId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("environmentId"), ExpressionUtils.field("createdAt")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -1255,8 +1255,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, type: { name: "type", @@ -1267,7 +1267,7 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "environment" - ] + ] as readonly string[] }, config: { name: "config", @@ -1276,14 +1276,14 @@ export class SchemaType implements SchemaDef { environment: { name: "environment", type: "Environment", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("environmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("environmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "integration", fields: ["environmentId"], references: ["id"], onDelete: "Cascade" } } }, attributes: [ { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("IntegrationType", [ExpressionUtils.field("type"), ExpressionUtils.field("environmentId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("environmentId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -1297,26 +1297,26 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, startedAt: { name: "startedAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("started_at") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("started_at") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, finishedAt: { name: "finishedAt", type: "DateTime", optional: true, - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("finished_at") }] }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("finished_at") }] }] as readonly AttributeApplication[] }, name: { name: "name", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, status: { name: "status", @@ -1336,20 +1336,20 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] + attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] as readonly AttributeApplication[] }, type: { name: "type", @@ -1358,7 +1358,7 @@ export class SchemaType implements SchemaDef { project: { name: "project", type: "Project", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "environments", fields: ["projectId"], references: ["id"], onDelete: "Cascade" } }, projectId: { @@ -1366,19 +1366,19 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "project" - ] + ] as readonly string[] }, widgetSetupCompleted: { name: "widgetSetupCompleted", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, appSetupCompleted: { name: "appSetupCompleted", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, surveys: { name: "surveys", @@ -1449,7 +1449,7 @@ export class SchemaType implements SchemaDef { }, attributes: [ { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" } @@ -1462,20 +1462,20 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] + attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] as readonly AttributeApplication[] }, name: { name: "name", @@ -1484,7 +1484,7 @@ export class SchemaType implements SchemaDef { organization: { name: "organization", type: "Organization", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("organizationId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("organizationId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "projects", fields: ["organizationId"], references: ["id"], onDelete: "Cascade" } }, organizationId: { @@ -1492,7 +1492,7 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "organization" - ] + ] as readonly string[] }, environments: { name: "environments", @@ -1513,50 +1513,50 @@ export class SchemaType implements SchemaDef { styling: { name: "styling", type: "Json", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("{\"allowStyleOverwrite\":true}") }] }], - default: "{\"allowStyleOverwrite\":true}" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("{\"allowStyleOverwrite\":true}") }] }] as readonly AttributeApplication[], + default: "{\"allowStyleOverwrite\":true}" as FieldDefault }, config: { name: "config", type: "Json", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("{}") }] }], - default: "{}" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("{}") }] }] as readonly AttributeApplication[], + default: "{}" as FieldDefault }, recontactDays: { name: "recontactDays", type: "Int", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(7) }] }], - default: 7 + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(7) }] }] as readonly AttributeApplication[], + default: 7 as FieldDefault }, linkSurveyBranding: { name: "linkSurveyBranding", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(true) }] }], - default: true + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(true) }] }] as readonly AttributeApplication[], + default: true as FieldDefault }, inAppSurveyBranding: { name: "inAppSurveyBranding", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(true) }] }], - default: true + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(true) }] }] as readonly AttributeApplication[], + default: true as FieldDefault }, placement: { name: "placement", type: "WidgetPlacement", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("bottomRight") }] }], - default: "bottomRight" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("bottomRight") }] }] as readonly AttributeApplication[], + default: "bottomRight" as FieldDefault }, clickOutsideClose: { name: "clickOutsideClose", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(true) }] }], - default: true + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(true) }] }] as readonly AttributeApplication[], + default: true as FieldDefault }, darkOverlay: { name: "darkOverlay", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, languages: { name: "languages", @@ -1579,7 +1579,7 @@ export class SchemaType implements SchemaDef { attributes: [ { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("organizationId"), ExpressionUtils.field("name")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("organizationId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -1593,20 +1593,20 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] + attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] as readonly AttributeApplication[] }, name: { name: "name", @@ -1631,8 +1631,8 @@ export class SchemaType implements SchemaDef { whitelabel: { name: "whitelabel", type: "Json", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("{}") }] }], - default: "{}" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("{}") }] }] as readonly AttributeApplication[], + default: "{}" as FieldDefault }, invites: { name: "invites", @@ -1643,8 +1643,8 @@ export class SchemaType implements SchemaDef { isAIEnabled: { name: "isAIEnabled", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, teams: { name: "teams", @@ -1670,7 +1670,7 @@ export class SchemaType implements SchemaDef { organization: { name: "organization", type: "Organization", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("organizationId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("organizationId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "memberships", fields: ["organizationId"], references: ["id"], onDelete: "Cascade" } }, organizationId: { @@ -1679,12 +1679,12 @@ export class SchemaType implements SchemaDef { id: true, foreignKeyFor: [ "organization" - ] + ] as readonly string[] }, user: { name: "user", type: "User", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "memberships", fields: ["userId"], references: ["id"], onDelete: "Cascade" } }, userId: { @@ -1693,13 +1693,13 @@ export class SchemaType implements SchemaDef { id: true, foreignKeyFor: [ "user" - ] + ] as readonly string[] }, accepted: { name: "accepted", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, deprecatedRole: { name: "deprecatedRole", @@ -1709,15 +1709,15 @@ export class SchemaType implements SchemaDef { role: { name: "role", type: "OrganizationRole", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("member") }] }], - default: "member" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("member") }] }] as readonly AttributeApplication[], + default: "member" as FieldDefault } }, attributes: [ { name: "@@id", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("userId"), ExpressionUtils.field("organizationId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("userId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("organizationId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["organizationId", "userId"], uniqueFields: { userId_organizationId: { userId: { type: "String" }, organizationId: { type: "String" } } @@ -1730,8 +1730,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("uuid") }] }], - default: ExpressionUtils.call("uuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("uuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("uuid") as FieldDefault }, email: { name: "email", @@ -1745,7 +1745,7 @@ export class SchemaType implements SchemaDef { organization: { name: "organization", type: "Organization", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("organizationId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("organizationId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "invites", fields: ["organizationId"], references: ["id"], onDelete: "Cascade" } }, organizationId: { @@ -1753,12 +1753,12 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "organization" - ] + ] as readonly string[] }, creator: { name: "creator", type: "User", - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("inviteCreatedBy") }, { name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("creatorId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("inviteCreatedBy") }, { name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("creatorId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }] }] as readonly AttributeApplication[], relation: { opposite: "invitesCreated", name: "inviteCreatedBy", fields: ["creatorId"], references: ["id"] } }, creatorId: { @@ -1766,13 +1766,13 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "creator" - ] + ] as readonly string[] }, acceptor: { name: "acceptor", type: "User", optional: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("inviteAcceptedBy") }, { name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("acceptorId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("inviteAcceptedBy") }, { name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("acceptorId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "invitesAccepted", name: "inviteAcceptedBy", fields: ["acceptorId"], references: ["id"], onDelete: "Cascade" } }, acceptorId: { @@ -1781,13 +1781,13 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "acceptor" - ] + ] as readonly string[] }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, expiresAt: { name: "expiresAt", @@ -1801,21 +1801,21 @@ export class SchemaType implements SchemaDef { role: { name: "role", type: "OrganizationRole", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("member") }] }], - default: "member" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("member") }] }] as readonly AttributeApplication[], + default: "member" as FieldDefault }, teamIds: { name: "teamIds", type: "String", array: true, - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.array("Any", []) }] }], - default: [] + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.array("Any", []) }] }] as readonly AttributeApplication[], + default: [] as FieldDefault } }, attributes: [ { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("email"), ExpressionUtils.field("organizationId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("organizationId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" } @@ -1828,14 +1828,14 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, createdBy: { name: "createdBy", @@ -1855,19 +1855,19 @@ export class SchemaType implements SchemaDef { name: "hashedKey", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, organizationId: { name: "organizationId", type: "String", foreignKeyFor: [ "organization" - ] + ] as readonly string[] }, organization: { name: "organization", type: "Organization", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("organizationId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("organizationId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "apiKeys", fields: ["organizationId"], references: ["id"], onDelete: "Cascade" } }, apiKeyEnvironments: { @@ -1879,13 +1879,13 @@ export class SchemaType implements SchemaDef { organizationAccess: { name: "organizationAccess", type: "Json", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("{}") }] }], - default: "{}" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("{}") }] }] as readonly AttributeApplication[], + default: "{}" as FieldDefault } }, attributes: [ { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("organizationId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -1899,32 +1899,32 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, apiKeyId: { name: "apiKeyId", type: "String", foreignKeyFor: [ "apiKey" - ] + ] as readonly string[] }, apiKey: { name: "apiKey", type: "ApiKey", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("apiKeyId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("apiKeyId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "apiKeyEnvironments", fields: ["apiKeyId"], references: ["id"], onDelete: "Cascade" } }, environmentId: { @@ -1932,12 +1932,12 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "environment" - ] + ] as readonly string[] }, environment: { name: "environment", type: "Environment", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("environmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("environmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "ApiKeyEnvironment", fields: ["environmentId"], references: ["id"], onDelete: "Cascade" } }, permission: { @@ -1948,7 +1948,7 @@ export class SchemaType implements SchemaDef { attributes: [ { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("apiKeyId"), ExpressionUtils.field("environmentId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("environmentId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -1962,26 +1962,26 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] + attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] as readonly AttributeApplication[] }, user: { name: "user", type: "User", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "accounts", fields: ["userId"], references: ["id"], onDelete: "Cascade" } }, userId: { @@ -1989,7 +1989,7 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "user" - ] + ] as readonly string[] }, type: { name: "type", @@ -2007,13 +2007,13 @@ export class SchemaType implements SchemaDef { name: "access_token", type: "String", optional: true, - attributes: [{ name: "@db.Text" }] + attributes: [{ name: "@db.Text" }] as readonly AttributeApplication[] }, refresh_token: { name: "refresh_token", type: "String", optional: true, - attributes: [{ name: "@db.Text" }] + attributes: [{ name: "@db.Text" }] as readonly AttributeApplication[] }, expires_at: { name: "expires_at", @@ -2039,7 +2039,7 @@ export class SchemaType implements SchemaDef { name: "id_token", type: "String", optional: true, - attributes: [{ name: "@db.Text" }] + attributes: [{ name: "@db.Text" }] as readonly AttributeApplication[] }, session_state: { name: "session_state", @@ -2050,7 +2050,7 @@ export class SchemaType implements SchemaDef { attributes: [ { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("provider"), ExpressionUtils.field("providerAccountId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("userId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -2064,20 +2064,20 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] + attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] as readonly AttributeApplication[] }, name: { name: "name", @@ -2087,13 +2087,13 @@ export class SchemaType implements SchemaDef { name: "email", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, emailVerified: { name: "emailVerified", type: "DateTime", optional: true, - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("email_verified") }] }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("email_verified") }] }] as readonly AttributeApplication[] }, imageUrl: { name: "imageUrl", @@ -2108,8 +2108,8 @@ export class SchemaType implements SchemaDef { twoFactorEnabled: { name: "twoFactorEnabled", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, backupCodes: { name: "backupCodes", @@ -2124,8 +2124,8 @@ export class SchemaType implements SchemaDef { identityProvider: { name: "identityProvider", type: "IdentityProvider", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("email") }] }], - default: "email" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("email") }] }] as readonly AttributeApplication[], + default: "email" as FieldDefault }, identityProviderAccountId: { name: "identityProviderAccountId", @@ -2159,14 +2159,14 @@ export class SchemaType implements SchemaDef { name: "invitesCreated", type: "Invite", array: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("inviteCreatedBy") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("inviteCreatedBy") }] }] as readonly AttributeApplication[], relation: { opposite: "creator", name: "inviteCreatedBy" } }, invitesAccepted: { name: "invitesAccepted", type: "Invite", array: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("inviteAcceptedBy") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("inviteAcceptedBy") }] }] as readonly AttributeApplication[], relation: { opposite: "acceptor", name: "inviteAcceptedBy" } }, role: { @@ -2182,14 +2182,14 @@ export class SchemaType implements SchemaDef { notificationSettings: { name: "notificationSettings", type: "Json", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("{}") }] }], - default: "{}" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("{}") }] }] as readonly AttributeApplication[], + default: "{}" as FieldDefault }, locale: { name: "locale", type: "String", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("en-US") }] }], - default: "en-US" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("en-US") }] }] as readonly AttributeApplication[], + default: "en-US" as FieldDefault }, surveys: { name: "surveys", @@ -2211,13 +2211,13 @@ export class SchemaType implements SchemaDef { isActive: { name: "isActive", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(true) }] }], - default: true + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(true) }] }] as readonly AttributeApplication[], + default: true as FieldDefault } }, attributes: [ { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("email")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -2231,25 +2231,25 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }] + attributes: [{ name: "@id" }] as readonly AttributeApplication[] }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] + attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] as readonly AttributeApplication[] }, url: { name: "url", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] } }, idFields: ["id"], @@ -2265,20 +2265,20 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] + attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] as readonly AttributeApplication[] }, title: { name: "title", @@ -2292,26 +2292,26 @@ export class SchemaType implements SchemaDef { isPrivate: { name: "isPrivate", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(true) }] }], - default: true + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(true) }] }] as readonly AttributeApplication[], + default: true as FieldDefault }, filters: { name: "filters", type: "Json", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("[]") }] }], - default: "[]" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("[]") }] }] as readonly AttributeApplication[], + default: "[]" as FieldDefault }, environmentId: { name: "environmentId", type: "String", foreignKeyFor: [ "environment" - ] + ] as readonly string[] }, environment: { name: "environment", type: "Environment", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("environmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("environmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "segments", fields: ["environmentId"], references: ["id"], onDelete: "Cascade" } }, surveys: { @@ -2324,7 +2324,7 @@ export class SchemaType implements SchemaDef { attributes: [ { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("environmentId"), ExpressionUtils.field("title")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("environmentId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -2338,20 +2338,20 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] + attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] as readonly AttributeApplication[] }, code: { name: "code", @@ -2365,7 +2365,7 @@ export class SchemaType implements SchemaDef { project: { name: "project", type: "Project", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "languages", fields: ["projectId"], references: ["id"], onDelete: "Cascade" } }, projectId: { @@ -2373,7 +2373,7 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "project" - ] + ] as readonly string[] }, surveyLanguages: { name: "surveyLanguages", @@ -2384,7 +2384,7 @@ export class SchemaType implements SchemaDef { }, attributes: [ { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId"), ExpressionUtils.field("code")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -2397,7 +2397,7 @@ export class SchemaType implements SchemaDef { language: { name: "language", type: "Language", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("languageId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("languageId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "surveyLanguages", fields: ["languageId"], references: ["id"], onDelete: "Cascade" } }, languageId: { @@ -2406,7 +2406,7 @@ export class SchemaType implements SchemaDef { id: true, foreignKeyFor: [ "language" - ] + ] as readonly string[] }, surveyId: { name: "surveyId", @@ -2414,32 +2414,32 @@ export class SchemaType implements SchemaDef { id: true, foreignKeyFor: [ "survey" - ] + ] as readonly string[] }, survey: { name: "survey", type: "Survey", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("surveyId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("surveyId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "languages", fields: ["surveyId"], references: ["id"], onDelete: "Cascade" } }, default: { name: "default", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, enabled: { name: "enabled", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(true) }] }], - default: true + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(true) }] }] as readonly AttributeApplication[], + default: true as FieldDefault } }, attributes: [ { name: "@@id", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("languageId"), ExpressionUtils.field("surveyId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("surveyId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("languageId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["languageId", "surveyId"], uniqueFields: { languageId_surveyId: { languageId: { type: "String" }, surveyId: { type: "String" } } @@ -2452,32 +2452,32 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] + attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] as readonly AttributeApplication[] }, environmentId: { name: "environmentId", type: "String", foreignKeyFor: [ "environment" - ] + ] as readonly string[] }, environment: { name: "environment", type: "Environment", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("environmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("environmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "insights", fields: ["environmentId"], references: ["id"], onDelete: "Cascade" } }, category: { @@ -2518,12 +2518,12 @@ export class SchemaType implements SchemaDef { id: true, foreignKeyFor: [ "document" - ] + ] as readonly string[] }, document: { name: "document", type: "Document", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("documentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("documentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "documentInsights", fields: ["documentId"], references: ["id"], onDelete: "Cascade" } }, insightId: { @@ -2532,19 +2532,19 @@ export class SchemaType implements SchemaDef { id: true, foreignKeyFor: [ "insight" - ] + ] as readonly string[] }, insight: { name: "insight", type: "Insight", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("insightId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("insightId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "documentInsights", fields: ["insightId"], references: ["id"], onDelete: "Cascade" } } }, attributes: [ { name: "@@id", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("documentId"), ExpressionUtils.field("insightId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("insightId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["documentId", "insightId"], uniqueFields: { documentId_insightId: { documentId: { type: "String" }, insightId: { type: "String" } } @@ -2557,32 +2557,32 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] + attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] as readonly AttributeApplication[] }, environmentId: { name: "environmentId", type: "String", foreignKeyFor: [ "environment" - ] + ] as readonly string[] }, environment: { name: "environment", type: "Environment", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("environmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("environmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "documents", fields: ["environmentId"], references: ["id"], onDelete: "Cascade" } }, surveyId: { @@ -2591,13 +2591,13 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "survey" - ] + ] as readonly string[] }, survey: { name: "survey", type: "Survey", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("surveyId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("surveyId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "documents", fields: ["surveyId"], references: ["id"], onDelete: "Cascade" } }, responseId: { @@ -2606,13 +2606,13 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "response" - ] + ] as readonly string[] }, response: { name: "response", type: "Response", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("responseId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("responseId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "documents", fields: ["responseId"], references: ["id"], onDelete: "Cascade" } }, questionId: { @@ -2647,7 +2647,7 @@ export class SchemaType implements SchemaDef { attributes: [ { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("responseId"), ExpressionUtils.field("questionId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("DateTime", [ExpressionUtils.field("createdAt")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -2661,20 +2661,20 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] + attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] as readonly AttributeApplication[] }, name: { name: "name", @@ -2685,12 +2685,12 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "organization" - ] + ] as readonly string[] }, organization: { name: "organization", type: "Organization", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("organizationId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("organizationId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "teams", fields: ["organizationId"], references: ["id"], onDelete: "Cascade" } }, teamUsers: { @@ -2708,7 +2708,7 @@ export class SchemaType implements SchemaDef { }, attributes: [ { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("organizationId"), ExpressionUtils.field("name")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -2721,14 +2721,14 @@ export class SchemaType implements SchemaDef { createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] + attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] as readonly AttributeApplication[] }, teamId: { name: "teamId", @@ -2736,12 +2736,12 @@ export class SchemaType implements SchemaDef { id: true, foreignKeyFor: [ "team" - ] + ] as readonly string[] }, team: { name: "team", type: "Team", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("teamId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("teamId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "teamUsers", fields: ["teamId"], references: ["id"], onDelete: "Cascade" } }, userId: { @@ -2750,12 +2750,12 @@ export class SchemaType implements SchemaDef { id: true, foreignKeyFor: [ "user" - ] + ] as readonly string[] }, user: { name: "user", type: "User", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "teamUsers", fields: ["userId"], references: ["id"], onDelete: "Cascade" } }, role: { @@ -2766,7 +2766,7 @@ export class SchemaType implements SchemaDef { attributes: [ { name: "@@id", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("teamId"), ExpressionUtils.field("userId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("userId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["teamId", "userId"], uniqueFields: { teamId_userId: { teamId: { type: "String" }, userId: { type: "String" } } @@ -2778,14 +2778,14 @@ export class SchemaType implements SchemaDef { createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("created_at") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] + attributes: [{ name: "@updatedAt" }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("updated_at") }] }] as readonly AttributeApplication[] }, projectId: { name: "projectId", @@ -2793,12 +2793,12 @@ export class SchemaType implements SchemaDef { id: true, foreignKeyFor: [ "project" - ] + ] as readonly string[] }, project: { name: "project", type: "Project", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "projectTeams", fields: ["projectId"], references: ["id"], onDelete: "Cascade" } }, teamId: { @@ -2807,25 +2807,25 @@ export class SchemaType implements SchemaDef { id: true, foreignKeyFor: [ "team" - ] + ] as readonly string[] }, team: { name: "team", type: "Team", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("teamId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("teamId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "projectTeams", fields: ["teamId"], references: ["id"], onDelete: "Cascade" } }, permission: { name: "permission", type: "ProjectTeamPermission", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("read") }] }], - default: "read" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("read") }] }] as readonly AttributeApplication[], + default: "read" as FieldDefault } }, attributes: [ { name: "@@id", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId"), ExpressionUtils.field("teamId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("teamId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["projectId", "teamId"], uniqueFields: { projectId_teamId: { projectId: { type: "String" }, teamId: { type: "String" } } diff --git a/tests/e2e/github-repos/trigger.dev/schema.ts b/tests/e2e/github-repos/trigger.dev/schema.ts index 4e4156b9f..547121089 100644 --- a/tests/e2e/github-repos/trigger.dev/schema.ts +++ b/tests/e2e/github-repos/trigger.dev/schema.ts @@ -5,7 +5,7 @@ /* eslint-disable */ -import { type SchemaDef, ExpressionUtils } from "@zenstackhq/schema"; +import { type SchemaDef, type AttributeApplication, type FieldDefault, ExpressionUtils } from "@zenstackhq/schema"; export class SchemaType implements SchemaDef { provider = { type: "postgresql" @@ -18,14 +18,14 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, email: { name: "email", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, authenticationMethod: { name: "authenticationMethod", @@ -46,7 +46,7 @@ export class SchemaType implements SchemaDef { type: "String", unique: true, optional: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, displayName: { name: "displayName", @@ -66,8 +66,8 @@ export class SchemaType implements SchemaDef { admin: { name: "admin", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, dashboardPreferences: { name: "dashboardPreferences", @@ -77,44 +77,44 @@ export class SchemaType implements SchemaDef { createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, isOnCloudWaitlist: { name: "isOnCloudWaitlist", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, featureCloud: { name: "featureCloud", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, isOnHostedRepoWaitlist: { name: "isOnHostedRepoWaitlist", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, marketingEmails: { name: "marketingEmails", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(true) }] }], - default: true + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(true) }] }] as readonly AttributeApplication[], + default: true as FieldDefault }, confirmedBasicDetails: { name: "confirmedBasicDetails", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, referralSource: { name: "referralSource", @@ -137,7 +137,7 @@ export class SchemaType implements SchemaDef { name: "invitationCode", type: "InvitationCode", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("invitationCodeId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("invitationCodeId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }] }] as readonly AttributeApplication[], relation: { opposite: "users", fields: ["invitationCodeId"], references: ["id"] } }, invitationCodeId: { @@ -146,7 +146,7 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "invitationCode" - ] + ] as readonly string[] }, personalAccessTokens: { name: "personalAccessTokens", @@ -175,14 +175,14 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, code: { name: "code", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, users: { name: "users", @@ -193,8 +193,8 @@ export class SchemaType implements SchemaDef { createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault } }, idFields: ["id"], @@ -210,20 +210,20 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, code: { name: "code", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, personalAccessToken: { name: "personalAccessToken", type: "PersonalAccessToken", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("personalAccessTokenId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("personalAccessTokenId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "authorizationCodes", fields: ["personalAccessTokenId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, personalAccessTokenId: { @@ -232,19 +232,19 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "personalAccessToken" - ] + ] as readonly string[] }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] } }, idFields: ["id"], @@ -260,8 +260,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, name: { name: "name", @@ -279,12 +279,12 @@ export class SchemaType implements SchemaDef { name: "hashedToken", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, user: { name: "user", type: "User", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }] }] as readonly AttributeApplication[], relation: { opposite: "personalAccessTokens", fields: ["userId"], references: ["id"] } }, userId: { @@ -292,7 +292,7 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "user" - ] + ] as readonly string[] }, revokedAt: { name: "revokedAt", @@ -307,14 +307,14 @@ export class SchemaType implements SchemaDef { createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, authorizationCodes: { name: "authorizationCodes", @@ -336,14 +336,14 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, slug: { name: "slug", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, title: { name: "title", @@ -352,20 +352,20 @@ export class SchemaType implements SchemaDef { maximumExecutionTimePerRunInMs: { name: "maximumExecutionTimePerRunInMs", type: "Int", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(900000) }] }], - default: 900000 + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(900000) }] }] as readonly AttributeApplication[], + default: 900000 as FieldDefault }, maximumConcurrencyLimit: { name: "maximumConcurrencyLimit", type: "Int", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(10) }] }], - default: 10 + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(10) }] }] as readonly AttributeApplication[], + default: 10 as FieldDefault }, maximumSchedulesLimit: { name: "maximumSchedulesLimit", type: "Int", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(5) }] }], - default: 5 + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(5) }] }] as readonly AttributeApplication[], + default: 5 as FieldDefault }, maximumDevQueueSize: { name: "maximumDevQueueSize", @@ -380,14 +380,14 @@ export class SchemaType implements SchemaDef { createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, deletedAt: { name: "deletedAt", @@ -407,32 +407,32 @@ export class SchemaType implements SchemaDef { runsEnabled: { name: "runsEnabled", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(true) }] }], - default: true + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(true) }] }] as readonly AttributeApplication[], + default: true as FieldDefault }, v3Enabled: { name: "v3Enabled", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, v2Enabled: { name: "v2Enabled", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, v2MarqsEnabled: { name: "v2MarqsEnabled", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, hasRequestedV3: { name: "hasRequestedV3", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, environments: { name: "environments", @@ -506,13 +506,13 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, organization: { name: "organization", type: "Organization", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("organizationId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("organizationId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "members", fields: ["organizationId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, organizationId: { @@ -520,12 +520,12 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "organization" - ] + ] as readonly string[] }, user: { name: "user", type: "User", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "orgMemberships", fields: ["userId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, userId: { @@ -533,25 +533,25 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "user" - ] + ] as readonly string[] }, role: { name: "role", type: "OrgMemberRole", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("MEMBER") }] }], - default: "MEMBER" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("MEMBER") }] }] as readonly AttributeApplication[], + default: "MEMBER" as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, environments: { name: "environments", @@ -562,7 +562,7 @@ export class SchemaType implements SchemaDef { }, attributes: [ { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("organizationId"), ExpressionUtils.field("userId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -576,15 +576,15 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, token: { name: "token", type: "String", unique: true, - attributes: [{ name: "@unique" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@unique" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, email: { name: "email", @@ -593,13 +593,13 @@ export class SchemaType implements SchemaDef { role: { name: "role", type: "OrgMemberRole", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("MEMBER") }] }], - default: "MEMBER" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("MEMBER") }] }] as readonly AttributeApplication[], + default: "MEMBER" as FieldDefault }, organization: { name: "organization", type: "Organization", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("organizationId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("organizationId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "invites", fields: ["organizationId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, organizationId: { @@ -607,12 +607,12 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "organization" - ] + ] as readonly string[] }, inviter: { name: "inviter", type: "User", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("inviterId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("inviterId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "sentInvites", fields: ["inviterId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, inviterId: { @@ -620,24 +620,24 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "inviter" - ] + ] as readonly string[] }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] } }, attributes: [ { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("organizationId"), ExpressionUtils.field("email")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -652,8 +652,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, slug: { name: "slug", @@ -663,25 +663,25 @@ export class SchemaType implements SchemaDef { name: "apiKey", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, pkApiKey: { name: "pkApiKey", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, type: { name: "type", type: "RuntimeEnvironmentType", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("DEVELOPMENT") }] }], - default: "DEVELOPMENT" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("DEVELOPMENT") }] }] as readonly AttributeApplication[], + default: "DEVELOPMENT" as FieldDefault }, isBranchableEnvironment: { name: "isBranchableEnvironment", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, branchName: { name: "branchName", @@ -692,7 +692,7 @@ export class SchemaType implements SchemaDef { name: "parentEnvironment", type: "RuntimeEnvironment", optional: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("parentEnvironment") }, { name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("parentEnvironmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("parentEnvironment") }, { name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("parentEnvironmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "childEnvironments", name: "parentEnvironment", fields: ["parentEnvironmentId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, parentEnvironmentId: { @@ -701,13 +701,13 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "parentEnvironment" - ] + ] as readonly string[] }, childEnvironments: { name: "childEnvironments", type: "RuntimeEnvironment", array: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("parentEnvironment") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("parentEnvironment") }] }] as readonly AttributeApplication[], relation: { opposite: "parentEnvironment", name: "parentEnvironment" } }, git: { @@ -727,25 +727,25 @@ export class SchemaType implements SchemaDef { maximumConcurrencyLimit: { name: "maximumConcurrencyLimit", type: "Int", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(5) }] }], - default: 5 + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(5) }] }] as readonly AttributeApplication[], + default: 5 as FieldDefault }, paused: { name: "paused", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, autoEnableInternalSources: { name: "autoEnableInternalSources", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(true) }] }], - default: true + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(true) }] }] as readonly AttributeApplication[], + default: true as FieldDefault }, organization: { name: "organization", type: "Organization", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("organizationId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("organizationId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "environments", fields: ["organizationId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, organizationId: { @@ -753,12 +753,12 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "organization" - ] + ] as readonly string[] }, project: { name: "project", type: "Project", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "environments", fields: ["projectId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, projectId: { @@ -766,13 +766,13 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "project" - ] + ] as readonly string[] }, orgMember: { name: "orgMember", type: "OrgMember", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("orgMemberId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("orgMemberId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "environments", fields: ["orgMemberId"], references: ["id"], onDelete: "SetNull", onUpdate: "Cascade" } }, orgMemberId: { @@ -781,19 +781,19 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "orgMember" - ] + ] as readonly string[] }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, tunnelId: { name: "tunnelId", @@ -888,7 +888,7 @@ export class SchemaType implements SchemaDef { name: "currentSession", type: "RuntimeEnvironmentSession", optional: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("currentSession") }, { name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("currentSessionId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("currentSession") }, { name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("currentSessionId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "currentEnvironments", name: "currentSession", fields: ["currentSessionId"], references: ["id"], onDelete: "SetNull", onUpdate: "Cascade" } }, currentSessionId: { @@ -897,7 +897,7 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "currentSession" - ] + ] as readonly string[] }, taskRunNumberCounter: { name: "taskRunNumberCounter", @@ -941,7 +941,7 @@ export class SchemaType implements SchemaDef { { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId"), ExpressionUtils.field("shortcode")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("parentEnvironmentId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -958,14 +958,14 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, slug: { name: "slug", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, name: { name: "name", @@ -975,12 +975,12 @@ export class SchemaType implements SchemaDef { name: "externalRef", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, organization: { name: "organization", type: "Organization", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("organizationId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("organizationId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "projects", fields: ["organizationId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, organizationId: { @@ -988,19 +988,19 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "organization" - ] + ] as readonly string[] }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, deletedAt: { name: "deletedAt", @@ -1010,14 +1010,14 @@ export class SchemaType implements SchemaDef { version: { name: "version", type: "ProjectVersion", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("V2") }] }], - default: "V2" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("V2") }] }] as readonly AttributeApplication[], + default: "V2" as FieldDefault }, engine: { name: "engine", type: "RunEngineVersion", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("V1") }] }], - default: "V1" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("V1") }] }] as readonly AttributeApplication[], + default: "V1" as FieldDefault }, builderProjectId: { name: "builderProjectId", @@ -1040,7 +1040,7 @@ export class SchemaType implements SchemaDef { name: "defaultWorkerGroup", type: "WorkerInstanceGroup", optional: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("ProjectDefaultWorkerGroup") }, { name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("defaultWorkerGroupId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("ProjectDefaultWorkerGroup") }, { name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("defaultWorkerGroupId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }] }] as readonly AttributeApplication[], relation: { opposite: "defaultForProjects", name: "ProjectDefaultWorkerGroup", fields: ["defaultWorkerGroupId"], references: ["id"] } }, defaultWorkerGroupId: { @@ -1049,7 +1049,7 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "defaultWorkerGroup" - ] + ] as readonly string[] }, environments: { name: "environments", @@ -1192,20 +1192,20 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, key: { name: "key", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, provider: { name: "provider", type: "SecretStoreProvider", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("DATABASE") }] }], - default: "DATABASE" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("DATABASE") }] }] as readonly AttributeApplication[], + default: "DATABASE" as FieldDefault }, environmentVariableValues: { name: "environmentVariableValues", @@ -1216,14 +1216,14 @@ export class SchemaType implements SchemaDef { createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, OrganizationIntegration: { name: "OrganizationIntegration", @@ -1246,7 +1246,7 @@ export class SchemaType implements SchemaDef { type: "String", id: true, unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, value: { name: "value", @@ -1255,25 +1255,25 @@ export class SchemaType implements SchemaDef { version: { name: "version", type: "String", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("1") }] }], - default: "1" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("1") }] }] as readonly AttributeApplication[], + default: "1" as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] } }, attributes: [ { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("key")]) }, { name: "type", value: ExpressionUtils.literal("BTree") }] } - ], + ] as readonly AttributeApplication[], idFields: ["key"], uniqueFields: { key: { type: "String" } @@ -1286,26 +1286,26 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, name: { name: "name", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, completedAt: { name: "completedAt", @@ -1326,20 +1326,20 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, friendlyId: { name: "friendlyId", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, engine: { name: "engine", type: "RunEngineVersion", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("V1") }] }], - default: "V1" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("V1") }] }] as readonly AttributeApplication[], + default: "V1" as FieldDefault }, contentHash: { name: "contentHash", @@ -1348,19 +1348,19 @@ export class SchemaType implements SchemaDef { sdkVersion: { name: "sdkVersion", type: "String", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("unknown") }] }], - default: "unknown" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("unknown") }] }] as readonly AttributeApplication[], + default: "unknown" as FieldDefault }, cliVersion: { name: "cliVersion", type: "String", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("unknown") }] }], - default: "unknown" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("unknown") }] }] as readonly AttributeApplication[], + default: "unknown" as FieldDefault }, project: { name: "project", type: "Project", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "backgroundWorkers", fields: ["projectId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, projectId: { @@ -1368,12 +1368,12 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "project" - ] + ] as readonly string[] }, runtimeEnvironment: { name: "runtimeEnvironment", type: "RuntimeEnvironment", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("runtimeEnvironmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("runtimeEnvironmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "backgroundWorkers", fields: ["runtimeEnvironmentId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, runtimeEnvironmentId: { @@ -1381,7 +1381,7 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "runtimeEnvironment" - ] + ] as readonly string[] }, version: { name: "version", @@ -1394,14 +1394,14 @@ export class SchemaType implements SchemaDef { createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, tasks: { name: "tasks", @@ -1443,7 +1443,7 @@ export class SchemaType implements SchemaDef { name: "workerGroup", type: "WorkerInstanceGroup", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("workerGroupId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("workerGroupId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "backgroundWorkers", fields: ["workerGroupId"], references: ["id"], onDelete: "SetNull", onUpdate: "Cascade" } }, workerGroupId: { @@ -1452,20 +1452,20 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "workerGroup" - ] + ] as readonly string[] }, supportsLazyAttempts: { name: "supportsLazyAttempts", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault } }, attributes: [ { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId"), ExpressionUtils.field("runtimeEnvironmentId"), ExpressionUtils.field("version")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("runtimeEnvironmentId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("runtimeEnvironmentId"), ExpressionUtils.field("createdAt")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -1480,14 +1480,14 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, friendlyId: { name: "friendlyId", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, filePath: { name: "filePath", @@ -1504,7 +1504,7 @@ export class SchemaType implements SchemaDef { project: { name: "project", type: "Project", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "BackgroundWorkerFile", fields: ["projectId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, projectId: { @@ -1512,7 +1512,7 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "project" - ] + ] as readonly string[] }, backgroundWorkers: { name: "backgroundWorkers", @@ -1529,13 +1529,13 @@ export class SchemaType implements SchemaDef { createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault } }, attributes: [ { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId"), ExpressionUtils.field("contentHash")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -1550,8 +1550,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, slug: { name: "slug", @@ -1566,7 +1566,7 @@ export class SchemaType implements SchemaDef { name: "friendlyId", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, filePath: { name: "filePath", @@ -1580,7 +1580,7 @@ export class SchemaType implements SchemaDef { worker: { name: "worker", type: "BackgroundWorker", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("workerId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("workerId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "tasks", fields: ["workerId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, workerId: { @@ -1588,12 +1588,12 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "worker" - ] + ] as readonly string[] }, project: { name: "project", type: "Project", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "backgroundWorkerTasks", fields: ["projectId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, projectId: { @@ -1601,13 +1601,13 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "project" - ] + ] as readonly string[] }, file: { name: "file", type: "BackgroundWorkerFile", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("fileId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("fileId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "tasks", fields: ["fileId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, fileId: { @@ -1616,12 +1616,12 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "file" - ] + ] as readonly string[] }, runtimeEnvironment: { name: "runtimeEnvironment", type: "RuntimeEnvironment", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("runtimeEnvironmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("runtimeEnvironmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "backgroundWorkerTasks", fields: ["runtimeEnvironmentId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, runtimeEnvironmentId: { @@ -1629,19 +1629,19 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "runtimeEnvironment" - ] + ] as readonly string[] }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, attempts: { name: "attempts", @@ -1676,13 +1676,13 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "queue" - ] + ] as readonly string[] }, queue: { name: "queue", type: "TaskQueue", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("queueId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("queueId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "tasks", fields: ["queueId"], references: ["id"], onDelete: "SetNull", onUpdate: "Cascade" } }, maxDurationInSeconds: { @@ -1693,15 +1693,15 @@ export class SchemaType implements SchemaDef { triggerSource: { name: "triggerSource", type: "TaskTriggerSource", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("STANDARD") }] }], - default: "STANDARD" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("STANDARD") }] }] as readonly AttributeApplication[], + default: "STANDARD" as FieldDefault } }, attributes: [ { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("workerId"), ExpressionUtils.field("slug")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId"), ExpressionUtils.field("slug")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("runtimeEnvironmentId"), ExpressionUtils.field("projectId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -1716,32 +1716,32 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, number: { name: "number", type: "Int", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }], - default: 0 + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }] as readonly AttributeApplication[], + default: 0 as FieldDefault }, friendlyId: { name: "friendlyId", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, engine: { name: "engine", type: "RunEngineVersion", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("V1") }] }], - default: "V1" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("V1") }] }] as readonly AttributeApplication[], + default: "V1" as FieldDefault }, status: { name: "status", type: "TaskRunStatus", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("PENDING") }] }], - default: "PENDING" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("PENDING") }] }] as readonly AttributeApplication[], + default: "PENDING" as FieldDefault }, statusReason: { name: "statusReason", @@ -1765,8 +1765,8 @@ export class SchemaType implements SchemaDef { isTest: { name: "isTest", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, payload: { name: "payload", @@ -1775,8 +1775,8 @@ export class SchemaType implements SchemaDef { payloadType: { name: "payloadType", type: "String", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("application/json") }] }], - default: "application/json" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("application/json") }] }] as readonly AttributeApplication[], + default: "application/json" as FieldDefault }, context: { name: "context", @@ -1799,7 +1799,7 @@ export class SchemaType implements SchemaDef { runtimeEnvironment: { name: "runtimeEnvironment", type: "RuntimeEnvironment", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("runtimeEnvironmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("runtimeEnvironmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "taskRuns", fields: ["runtimeEnvironmentId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, runtimeEnvironmentId: { @@ -1807,7 +1807,7 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "runtimeEnvironment" - ] + ] as readonly string[] }, environmentType: { name: "environmentType", @@ -1817,7 +1817,7 @@ export class SchemaType implements SchemaDef { project: { name: "project", type: "Project", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "taskRuns", fields: ["projectId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, projectId: { @@ -1825,7 +1825,7 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "project" - ] + ] as readonly string[] }, organizationId: { name: "organizationId", @@ -1844,8 +1844,8 @@ export class SchemaType implements SchemaDef { workerQueue: { name: "workerQueue", type: "String", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("main") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("masterQueue") }] }], - default: "main" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("main") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("masterQueue") }] }] as readonly AttributeApplication[], + default: "main" as FieldDefault }, secondaryMasterQueue: { name: "secondaryMasterQueue", @@ -1860,20 +1860,20 @@ export class SchemaType implements SchemaDef { createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, attempts: { name: "attempts", type: "TaskRunAttempt", array: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("attempts") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("attempts") }] }] as readonly AttributeApplication[], relation: { opposite: "taskRun", name: "attempts" } }, tags: { @@ -1931,20 +1931,20 @@ export class SchemaType implements SchemaDef { usageDurationMs: { name: "usageDurationMs", type: "Int", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }], - default: 0 + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }] as readonly AttributeApplication[], + default: 0 as FieldDefault }, costInCents: { name: "costInCents", type: "Float", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }], - default: 0 + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }] as readonly AttributeApplication[], + default: 0 as FieldDefault }, baseCostInCents: { name: "baseCostInCents", type: "Float", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }], - default: 0 + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }] as readonly AttributeApplication[], + default: 0 as FieldDefault }, lockedAt: { name: "lockedAt", @@ -1955,7 +1955,7 @@ export class SchemaType implements SchemaDef { name: "lockedBy", type: "BackgroundWorkerTask", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("lockedById")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("lockedById")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }] }] as readonly AttributeApplication[], relation: { opposite: "runs", fields: ["lockedById"], references: ["id"] } }, lockedById: { @@ -1964,13 +1964,13 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "lockedBy" - ] + ] as readonly string[] }, lockedToVersion: { name: "lockedToVersion", type: "BackgroundWorker", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("lockedToVersionId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("lockedToVersionId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }] }] as readonly AttributeApplication[], relation: { opposite: "lockedRuns", fields: ["lockedToVersionId"], references: ["id"] } }, lockedToVersionId: { @@ -1979,13 +1979,13 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "lockedToVersion" - ] + ] as readonly string[] }, priorityMs: { name: "priorityMs", type: "Int", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }], - default: 0 + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }] as readonly AttributeApplication[], + default: 0 as FieldDefault }, concurrencyKey: { name: "concurrencyKey", @@ -2026,7 +2026,7 @@ export class SchemaType implements SchemaDef { name: "associatedWaitpoint", type: "Waitpoint", optional: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("CompletingRun") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("CompletingRun") }] }] as readonly AttributeApplication[], relation: { opposite: "completedByTaskRun", name: "CompletingRun" } }, blockedByWaitpoints: { @@ -2039,14 +2039,14 @@ export class SchemaType implements SchemaDef { name: "connectedWaitpoints", type: "Waitpoint", array: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("WaitpointRunConnections") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("WaitpointRunConnections") }] }] as readonly AttributeApplication[], relation: { opposite: "connectedRuns", name: "WaitpointRunConnections" } }, taskEventStore: { name: "taskEventStore", type: "String", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("taskEvent") }] }], - default: "taskEvent" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("taskEvent") }] }] as readonly AttributeApplication[], + default: "taskEvent" as FieldDefault }, queueTimestamp: { name: "queueTimestamp", @@ -2097,14 +2097,14 @@ export class SchemaType implements SchemaDef { name: "sourceBulkActionItems", type: "BulkActionItem", array: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("SourceActionItemRun") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("SourceActionItemRun") }] }] as readonly AttributeApplication[], relation: { opposite: "sourceRun", name: "SourceActionItemRun" } }, destinationBulkActionItems: { name: "destinationBulkActionItems", type: "BulkActionItem", array: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("DestinationActionItemRun") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("DestinationActionItemRun") }] }] as readonly AttributeApplication[], relation: { opposite: "destinationRun", name: "DestinationActionItemRun" } }, logsDeletedAt: { @@ -2116,7 +2116,7 @@ export class SchemaType implements SchemaDef { name: "rootTaskRun", type: "TaskRun", optional: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("TaskRootRun") }, { name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("rootTaskRunId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }, { name: "onUpdate", value: ExpressionUtils.literal("NoAction") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("TaskRootRun") }, { name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("rootTaskRunId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }, { name: "onUpdate", value: ExpressionUtils.literal("NoAction") }] }] as readonly AttributeApplication[], relation: { opposite: "descendantRuns", name: "TaskRootRun", fields: ["rootTaskRunId"], references: ["id"], onDelete: "SetNull", onUpdate: "NoAction" } }, rootTaskRunId: { @@ -2125,20 +2125,20 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "rootTaskRun" - ] + ] as readonly string[] }, descendantRuns: { name: "descendantRuns", type: "TaskRun", array: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("TaskRootRun") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("TaskRootRun") }] }] as readonly AttributeApplication[], relation: { opposite: "rootTaskRun", name: "TaskRootRun" } }, parentTaskRun: { name: "parentTaskRun", type: "TaskRun", optional: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("TaskParentRun") }, { name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("parentTaskRunId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }, { name: "onUpdate", value: ExpressionUtils.literal("NoAction") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("TaskParentRun") }, { name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("parentTaskRunId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }, { name: "onUpdate", value: ExpressionUtils.literal("NoAction") }] }] as readonly AttributeApplication[], relation: { opposite: "childRuns", name: "TaskParentRun", fields: ["parentTaskRunId"], references: ["id"], onDelete: "SetNull", onUpdate: "NoAction" } }, parentTaskRunId: { @@ -2147,20 +2147,20 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "parentTaskRun" - ] + ] as readonly string[] }, childRuns: { name: "childRuns", type: "TaskRun", array: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("TaskParentRun") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("TaskParentRun") }] }] as readonly AttributeApplication[], relation: { opposite: "parentTaskRun", name: "TaskParentRun" } }, parentTaskRunAttempt: { name: "parentTaskRunAttempt", type: "TaskRunAttempt", optional: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("TaskParentRunAttempt") }, { name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("parentTaskRunAttemptId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }, { name: "onUpdate", value: ExpressionUtils.literal("NoAction") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("TaskParentRunAttempt") }, { name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("parentTaskRunAttemptId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }, { name: "onUpdate", value: ExpressionUtils.literal("NoAction") }] }] as readonly AttributeApplication[], relation: { opposite: "childRuns", name: "TaskParentRunAttempt", fields: ["parentTaskRunAttemptId"], references: ["id"], onDelete: "SetNull", onUpdate: "NoAction" } }, parentTaskRunAttemptId: { @@ -2169,13 +2169,13 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "parentTaskRunAttempt" - ] + ] as readonly string[] }, batch: { name: "batch", type: "BatchTaskRun", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("batchId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }, { name: "onUpdate", value: ExpressionUtils.literal("NoAction") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("batchId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }, { name: "onUpdate", value: ExpressionUtils.literal("NoAction") }] }] as readonly AttributeApplication[], relation: { opposite: "runs", fields: ["batchId"], references: ["id"], onDelete: "SetNull", onUpdate: "NoAction" } }, batchId: { @@ -2184,19 +2184,19 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "batch" - ] + ] as readonly string[] }, resumeParentOnCompletion: { name: "resumeParentOnCompletion", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, depth: { name: "depth", type: "Int", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }], - default: 0 + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }] as readonly AttributeApplication[], + default: 0 as FieldDefault }, parentSpanId: { name: "parentSpanId", @@ -2216,8 +2216,8 @@ export class SchemaType implements SchemaDef { seedMetadataType: { name: "seedMetadataType", type: "String", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("application/json") }] }], - default: "application/json" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("application/json") }] }] as readonly AttributeApplication[], + default: "application/json" as FieldDefault }, metadata: { name: "metadata", @@ -2227,14 +2227,14 @@ export class SchemaType implements SchemaDef { metadataType: { name: "metadataType", type: "String", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("application/json") }] }], - default: "application/json" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("application/json") }] }] as readonly AttributeApplication[], + default: "application/json" as FieldDefault }, metadataVersion: { name: "metadataVersion", type: "Int", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(1) }] }], - default: 1 + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(1) }] }] as readonly AttributeApplication[], + default: 1 as FieldDefault }, output: { name: "output", @@ -2244,8 +2244,8 @@ export class SchemaType implements SchemaDef { outputType: { name: "outputType", type: "String", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("application/json") }] }], - default: "application/json" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("application/json") }] }] as readonly AttributeApplication[], + default: "application/json" as FieldDefault }, error: { name: "error", @@ -2273,7 +2273,7 @@ export class SchemaType implements SchemaDef { { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("runtimeEnvironmentId"), ExpressionUtils.field("createdAt")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("DateTime", [ExpressionUtils.field("createdAt")]) }, { name: "type", value: ExpressionUtils.literal("Brin") }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("TaskRunStatus", [ExpressionUtils.field("status"), ExpressionUtils.field("runtimeEnvironmentId"), ExpressionUtils.field("createdAt"), ExpressionUtils.field("id")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -2289,14 +2289,14 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, engine: { name: "engine", type: "RunEngineVersion", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("V2") }] }], - default: "V2" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("V2") }] }] as readonly AttributeApplication[], + default: "V2" as FieldDefault }, executionStatus: { name: "executionStatus", @@ -2309,8 +2309,8 @@ export class SchemaType implements SchemaDef { isValid: { name: "isValid", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(true) }] }], - default: true + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(true) }] }] as readonly AttributeApplication[], + default: true as FieldDefault }, error: { name: "error", @@ -2327,12 +2327,12 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "run" - ] + ] as readonly string[] }, run: { name: "run", type: "TaskRun", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("runId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("runId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }] }] as readonly AttributeApplication[], relation: { opposite: "executionSnapshots", fields: ["runId"], references: ["id"] } }, runStatus: { @@ -2345,13 +2345,13 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "batch" - ] + ] as readonly string[] }, batch: { name: "batch", type: "BatchTaskRun", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("batchId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("batchId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }] }] as readonly AttributeApplication[], relation: { opposite: "executionSnapshots", fields: ["batchId"], references: ["id"] } }, attemptNumber: { @@ -2364,12 +2364,12 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "environment" - ] + ] as readonly string[] }, environment: { name: "environment", type: "RuntimeEnvironment", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("environmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("environmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }] }] as readonly AttributeApplication[], relation: { opposite: "executionSnapshots", fields: ["environmentId"], references: ["id"] } }, environmentType: { @@ -2381,12 +2381,12 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "project" - ] + ] as readonly string[] }, project: { name: "project", type: "Project", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }] }] as readonly AttributeApplication[], relation: { opposite: "executionSnapshots", fields: ["projectId"], references: ["id"] } }, organizationId: { @@ -2394,19 +2394,19 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "organization" - ] + ] as readonly string[] }, organization: { name: "organization", type: "Organization", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("organizationId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("organizationId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }] }] as readonly AttributeApplication[], relation: { opposite: "executionSnapshots", fields: ["organizationId"], references: ["id"] } }, completedWaitpoints: { name: "completedWaitpoints", type: "Waitpoint", array: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("completedWaitpoints") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("completedWaitpoints") }] }] as readonly AttributeApplication[], relation: { opposite: "completedExecutionSnapshots", name: "completedWaitpoints" } }, completedWaitpointOrder: { @@ -2420,13 +2420,13 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "checkpoint" - ] + ] as readonly string[] }, checkpoint: { name: "checkpoint", type: "TaskRunCheckpoint", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("checkpointId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("checkpointId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }] }] as readonly AttributeApplication[], relation: { opposite: "executionSnapshot", fields: ["checkpointId"], references: ["id"] } }, workerId: { @@ -2435,13 +2435,13 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "worker" - ] + ] as readonly string[] }, worker: { name: "worker", type: "WorkerInstance", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("workerId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("workerId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }] }] as readonly AttributeApplication[], relation: { opposite: "TaskRunExecutionSnapshot", fields: ["workerId"], references: ["id"] } }, runnerId: { @@ -2452,14 +2452,14 @@ export class SchemaType implements SchemaDef { createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, lastHeartbeatAt: { name: "lastHeartbeatAt", @@ -2474,7 +2474,7 @@ export class SchemaType implements SchemaDef { }, attributes: [ { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("runId"), ExpressionUtils.field("isValid"), ExpressionUtils.field("createdAt")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" } @@ -2487,14 +2487,14 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, friendlyId: { name: "friendlyId", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, type: { name: "type", @@ -2522,7 +2522,7 @@ export class SchemaType implements SchemaDef { project: { name: "project", type: "Project", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "taskRunCheckpoints", fields: ["projectId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, projectId: { @@ -2530,12 +2530,12 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "project" - ] + ] as readonly string[] }, runtimeEnvironment: { name: "runtimeEnvironment", type: "RuntimeEnvironment", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("runtimeEnvironmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("runtimeEnvironmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "taskRunCheckpoints", fields: ["runtimeEnvironmentId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, runtimeEnvironmentId: { @@ -2543,7 +2543,7 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "runtimeEnvironment" - ] + ] as readonly string[] }, executionSnapshot: { name: "executionSnapshot", @@ -2554,14 +2554,14 @@ export class SchemaType implements SchemaDef { createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] } }, idFields: ["id"], @@ -2577,14 +2577,14 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, friendlyId: { name: "friendlyId", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, type: { name: "type", @@ -2593,8 +2593,8 @@ export class SchemaType implements SchemaDef { status: { name: "status", type: "WaitpointStatus", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("PENDING") }] }], - default: "PENDING" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("PENDING") }] }] as readonly AttributeApplication[], + default: "PENDING" as FieldDefault }, completedAt: { name: "completedAt", @@ -2624,16 +2624,16 @@ export class SchemaType implements SchemaDef { type: "String", unique: true, optional: true, - attributes: [{ name: "@unique" }], + attributes: [{ name: "@unique" }] as readonly AttributeApplication[], foreignKeyFor: [ "completedByTaskRun" - ] + ] as readonly string[] }, completedByTaskRun: { name: "completedByTaskRun", type: "TaskRun", optional: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("CompletingRun") }, { name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("completedByTaskRunId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("CompletingRun") }, { name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("completedByTaskRunId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }] }] as readonly AttributeApplication[], relation: { opposite: "associatedWaitpoint", name: "CompletingRun", fields: ["completedByTaskRunId"], references: ["id"], onDelete: "SetNull" } }, completedAfter: { @@ -2647,13 +2647,13 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "completedByBatch" - ] + ] as readonly string[] }, completedByBatch: { name: "completedByBatch", type: "BatchTaskRun", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("completedByBatchId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("completedByBatchId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }] }] as readonly AttributeApplication[], relation: { opposite: "waitpoints", fields: ["completedByBatchId"], references: ["id"], onDelete: "SetNull" } }, blockingTaskRuns: { @@ -2666,14 +2666,14 @@ export class SchemaType implements SchemaDef { name: "connectedRuns", type: "TaskRun", array: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("WaitpointRunConnections") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("WaitpointRunConnections") }] }] as readonly AttributeApplication[], relation: { opposite: "connectedWaitpoints", name: "WaitpointRunConnections" } }, completedExecutionSnapshots: { name: "completedExecutionSnapshots", type: "TaskRunExecutionSnapshot", array: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("completedWaitpoints") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("completedWaitpoints") }] }] as readonly AttributeApplication[], relation: { opposite: "completedWaitpoints", name: "completedWaitpoints" } }, output: { @@ -2684,19 +2684,19 @@ export class SchemaType implements SchemaDef { outputType: { name: "outputType", type: "String", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("application/json") }] }], - default: "application/json" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("application/json") }] }] as readonly AttributeApplication[], + default: "application/json" as FieldDefault }, outputIsError: { name: "outputIsError", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, project: { name: "project", type: "Project", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "waitpoints", fields: ["projectId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, projectId: { @@ -2704,12 +2704,12 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "project" - ] + ] as readonly string[] }, environment: { name: "environment", type: "RuntimeEnvironment", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("environmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("environmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "waitpoints", fields: ["environmentId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, environmentId: { @@ -2717,19 +2717,19 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "environment" - ] + ] as readonly string[] }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, tags: { name: "tags", @@ -2742,7 +2742,7 @@ export class SchemaType implements SchemaDef { { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("completedByBatchId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("environmentId"), ExpressionUtils.field("type"), ExpressionUtils.field("createdAt")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("environmentId"), ExpressionUtils.field("type"), ExpressionUtils.field("status")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -2758,13 +2758,13 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, taskRun: { name: "taskRun", type: "TaskRun", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("taskRunId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("taskRunId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }] }] as readonly AttributeApplication[], relation: { opposite: "blockedByWaitpoints", fields: ["taskRunId"], references: ["id"] } }, taskRunId: { @@ -2772,12 +2772,12 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "taskRun" - ] + ] as readonly string[] }, waitpoint: { name: "waitpoint", type: "Waitpoint", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("waitpointId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("waitpointId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }] }] as readonly AttributeApplication[], relation: { opposite: "blockingTaskRuns", fields: ["waitpointId"], references: ["id"] } }, waitpointId: { @@ -2785,12 +2785,12 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "waitpoint" - ] + ] as readonly string[] }, project: { name: "project", type: "Project", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "taskRunWaitpoints", fields: ["projectId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, projectId: { @@ -2798,7 +2798,7 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "project" - ] + ] as readonly string[] }, spanIdToComplete: { name: "spanIdToComplete", @@ -2811,13 +2811,13 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "batch" - ] + ] as readonly string[] }, batch: { name: "batch", type: "BatchTaskRun", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("batchId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("batchId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }] }] as readonly AttributeApplication[], relation: { opposite: "runsBlocked", fields: ["batchId"], references: ["id"] } }, batchIndex: { @@ -2828,21 +2828,21 @@ export class SchemaType implements SchemaDef { createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] } }, attributes: [ { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("taskRunId"), ExpressionUtils.field("waitpointId"), ExpressionUtils.field("batchIndex")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("taskRunId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("waitpointId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -2856,8 +2856,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, name: { name: "name", @@ -2866,7 +2866,7 @@ export class SchemaType implements SchemaDef { environment: { name: "environment", type: "RuntimeEnvironment", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("environmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("environmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "waitpointTags", fields: ["environmentId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, environmentId: { @@ -2874,12 +2874,12 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "environment" - ] + ] as readonly string[] }, project: { name: "project", type: "Project", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "waitpointTags", fields: ["projectId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, projectId: { @@ -2887,18 +2887,18 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "project" - ] + ] as readonly string[] }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault } }, attributes: [ { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("environmentId"), ExpressionUtils.field("name")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -2912,14 +2912,14 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, key: { name: "key", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, value: { name: "value", @@ -2940,8 +2940,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, name: { name: "name", @@ -2959,7 +2959,7 @@ export class SchemaType implements SchemaDef { workerGroup: { name: "workerGroup", type: "WorkerInstanceGroup", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("workerGroupId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("workerGroupId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }] }] as readonly AttributeApplication[], relation: { opposite: "workers", fields: ["workerGroupId"], references: ["id"] } }, workerGroupId: { @@ -2967,7 +2967,7 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "workerGroup" - ] + ] as readonly string[] }, TaskRunExecutionSnapshot: { name: "TaskRunExecutionSnapshot", @@ -2979,7 +2979,7 @@ export class SchemaType implements SchemaDef { name: "organization", type: "Organization", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("organizationId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("organizationId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "workerInstances", fields: ["organizationId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, organizationId: { @@ -2988,13 +2988,13 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "organization" - ] + ] as readonly string[] }, project: { name: "project", type: "Project", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "workers", fields: ["projectId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, projectId: { @@ -3003,13 +3003,13 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "project" - ] + ] as readonly string[] }, environment: { name: "environment", type: "RuntimeEnvironment", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("environmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("environmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "workerInstances", fields: ["environmentId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, environmentId: { @@ -3018,13 +3018,13 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "environment" - ] + ] as readonly string[] }, deployment: { name: "deployment", type: "WorkerDeployment", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("deploymentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("deploymentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "workerInstance", fields: ["deploymentId"], references: ["id"], onDelete: "SetNull", onUpdate: "Cascade" } }, deploymentId: { @@ -3033,19 +3033,19 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "deployment" - ] + ] as readonly string[] }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, lastDequeueAt: { name: "lastDequeueAt", @@ -3060,7 +3060,7 @@ export class SchemaType implements SchemaDef { }, attributes: [ { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("workerGroupId"), ExpressionUtils.field("resourceIdentifier")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -3074,8 +3074,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, type: { name: "type", @@ -3089,7 +3089,7 @@ export class SchemaType implements SchemaDef { name: "masterQueue", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, description: { name: "description", @@ -3099,23 +3099,23 @@ export class SchemaType implements SchemaDef { hidden: { name: "hidden", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, token: { name: "token", type: "WorkerGroupToken", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("tokenId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("tokenId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "workerGroup", fields: ["tokenId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, tokenId: { name: "tokenId", type: "String", unique: true, - attributes: [{ name: "@unique" }], + attributes: [{ name: "@unique" }] as readonly AttributeApplication[], foreignKeyFor: [ "token" - ] + ] as readonly string[] }, workers: { name: "workers", @@ -3133,14 +3133,14 @@ export class SchemaType implements SchemaDef { name: "defaultForProjects", type: "Project", array: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("ProjectDefaultWorkerGroup") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("ProjectDefaultWorkerGroup") }] }] as readonly AttributeApplication[], relation: { opposite: "defaultWorkerGroup", name: "ProjectDefaultWorkerGroup" } }, organization: { name: "organization", type: "Organization", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("organizationId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("organizationId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "workerGroups", fields: ["organizationId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, organizationId: { @@ -3149,13 +3149,13 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "organization" - ] + ] as readonly string[] }, project: { name: "project", type: "Project", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "workerGroups", fields: ["projectId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, projectId: { @@ -3164,19 +3164,19 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "project" - ] + ] as readonly string[] }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] } }, idFields: ["id"], @@ -3193,26 +3193,26 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, tokenHash: { name: "tokenHash", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, workerGroup: { name: "workerGroup", @@ -3234,8 +3234,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, name: { name: "name", @@ -3245,7 +3245,7 @@ export class SchemaType implements SchemaDef { name: "friendlyId", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, runs: { name: "runs", @@ -3256,7 +3256,7 @@ export class SchemaType implements SchemaDef { project: { name: "project", type: "Project", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "runTags", fields: ["projectId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, projectId: { @@ -3264,19 +3264,19 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "project" - ] + ] as readonly string[] }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault } }, attributes: [ { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId"), ExpressionUtils.field("name")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("name"), ExpressionUtils.field("id")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -3291,29 +3291,29 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, taskRun: { name: "taskRun", type: "TaskRun", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("taskRunId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("taskRunId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "dependency", fields: ["taskRunId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, taskRunId: { name: "taskRunId", type: "String", unique: true, - attributes: [{ name: "@unique" }], + attributes: [{ name: "@unique" }] as readonly AttributeApplication[], foreignKeyFor: [ "taskRun" - ] + ] as readonly string[] }, checkpointEvent: { name: "checkpointEvent", type: "CheckpointRestoreEvent", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("checkpointEventId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("checkpointEventId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "taskRunDependency", fields: ["checkpointEventId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, checkpointEventId: { @@ -3321,16 +3321,16 @@ export class SchemaType implements SchemaDef { type: "String", unique: true, optional: true, - attributes: [{ name: "@unique" }], + attributes: [{ name: "@unique" }] as readonly AttributeApplication[], foreignKeyFor: [ "checkpointEvent" - ] + ] as readonly string[] }, dependentAttempt: { name: "dependentAttempt", type: "TaskRunAttempt", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("dependentAttemptId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("dependentAttemptId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }] }] as readonly AttributeApplication[], relation: { opposite: "dependencies", fields: ["dependentAttemptId"], references: ["id"] } }, dependentAttemptId: { @@ -3339,13 +3339,13 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "dependentAttempt" - ] + ] as readonly string[] }, dependentBatchRun: { name: "dependentBatchRun", type: "BatchTaskRun", optional: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("dependentBatchRun") }, { name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("dependentBatchRunId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("dependentBatchRun") }, { name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("dependentBatchRunId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }] }] as readonly AttributeApplication[], relation: { opposite: "runDependencies", name: "dependentBatchRun", fields: ["dependentBatchRunId"], references: ["id"] } }, dependentBatchRunId: { @@ -3354,19 +3354,19 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "dependentBatchRun" - ] + ] as readonly string[] }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, resumedAt: { name: "resumedAt", @@ -3377,7 +3377,7 @@ export class SchemaType implements SchemaDef { attributes: [ { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("dependentAttemptId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("dependentBatchRunId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -3392,13 +3392,13 @@ export class SchemaType implements SchemaDef { name: "taskIdentifier", type: "String", id: true, - attributes: [{ name: "@id" }] + attributes: [{ name: "@id" }] as readonly AttributeApplication[] }, lastNumber: { name: "lastNumber", type: "Int", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }], - default: 0 + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }] as readonly AttributeApplication[], + default: 0 as FieldDefault } }, idFields: ["taskIdentifier"], @@ -3413,8 +3413,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, taskIdentifier: { name: "taskIdentifier", @@ -3423,7 +3423,7 @@ export class SchemaType implements SchemaDef { environment: { name: "environment", type: "RuntimeEnvironment", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("environmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("environmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "taskRunNumberCounter", fields: ["environmentId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, environmentId: { @@ -3431,18 +3431,18 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "environment" - ] + ] as readonly string[] }, lastNumber: { name: "lastNumber", type: "Int", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }], - default: 0 + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }] as readonly AttributeApplication[], + default: 0 as FieldDefault } }, attributes: [ { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("taskIdentifier"), ExpressionUtils.field("environmentId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -3456,25 +3456,25 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, number: { name: "number", type: "Int", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }], - default: 0 + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }] as readonly AttributeApplication[], + default: 0 as FieldDefault }, friendlyId: { name: "friendlyId", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, taskRun: { name: "taskRun", type: "TaskRun", - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("attempts") }, { name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("taskRunId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("attempts") }, { name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("taskRunId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "attempts", name: "attempts", fields: ["taskRunId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, taskRunId: { @@ -3482,12 +3482,12 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "taskRun" - ] + ] as readonly string[] }, backgroundWorker: { name: "backgroundWorker", type: "BackgroundWorker", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("backgroundWorkerId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("backgroundWorkerId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "attempts", fields: ["backgroundWorkerId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, backgroundWorkerId: { @@ -3495,12 +3495,12 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "backgroundWorker" - ] + ] as readonly string[] }, backgroundWorkerTask: { name: "backgroundWorkerTask", type: "BackgroundWorkerTask", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("backgroundWorkerTaskId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("backgroundWorkerTaskId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "attempts", fields: ["backgroundWorkerTaskId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, backgroundWorkerTaskId: { @@ -3508,12 +3508,12 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "backgroundWorkerTask" - ] + ] as readonly string[] }, runtimeEnvironment: { name: "runtimeEnvironment", type: "RuntimeEnvironment", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("runtimeEnvironmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("runtimeEnvironmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "taskRunAttempts", fields: ["runtimeEnvironmentId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, runtimeEnvironmentId: { @@ -3521,12 +3521,12 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "runtimeEnvironment" - ] + ] as readonly string[] }, queue: { name: "queue", type: "TaskQueue", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("queueId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("queueId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "attempts", fields: ["queueId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, queueId: { @@ -3534,25 +3534,25 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "queue" - ] + ] as readonly string[] }, status: { name: "status", type: "TaskRunAttemptStatus", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("PENDING") }] }], - default: "PENDING" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("PENDING") }] }] as readonly AttributeApplication[], + default: "PENDING" as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, startedAt: { name: "startedAt", @@ -3567,8 +3567,8 @@ export class SchemaType implements SchemaDef { usageDurationMs: { name: "usageDurationMs", type: "Int", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }], - default: 0 + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }] as readonly AttributeApplication[], + default: 0 as FieldDefault }, error: { name: "error", @@ -3583,8 +3583,8 @@ export class SchemaType implements SchemaDef { outputType: { name: "outputType", type: "String", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("application/json") }] }], - default: "application/json" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("application/json") }] }] as readonly AttributeApplication[], + default: "application/json" as FieldDefault }, dependencies: { name: "dependencies", @@ -3626,14 +3626,14 @@ export class SchemaType implements SchemaDef { name: "childRuns", type: "TaskRun", array: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("TaskParentRunAttempt") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("TaskParentRunAttempt") }] }] as readonly AttributeApplication[], relation: { opposite: "parentTaskRunAttempt", name: "TaskParentRunAttempt" } } }, attributes: [ { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("taskRunId"), ExpressionUtils.field("number")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("taskRunId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -3648,8 +3648,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, message: { name: "message", @@ -3676,26 +3676,26 @@ export class SchemaType implements SchemaDef { isError: { name: "isError", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, isPartial: { name: "isPartial", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, isCancelled: { name: "isCancelled", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, isDebug: { name: "isDebug", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, serviceName: { name: "serviceName", @@ -3708,20 +3708,20 @@ export class SchemaType implements SchemaDef { level: { name: "level", type: "TaskEventLevel", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("TRACE") }] }], - default: "TRACE" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("TRACE") }] }] as readonly AttributeApplication[], + default: "TRACE" as FieldDefault }, kind: { name: "kind", type: "TaskEventKind", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("INTERNAL") }] }], - default: "INTERNAL" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("INTERNAL") }] }] as readonly AttributeApplication[], + default: "INTERNAL" as FieldDefault }, status: { name: "status", type: "TaskEventStatus", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("UNSET") }] }], - default: "UNSET" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("UNSET") }] }] as readonly AttributeApplication[], + default: "UNSET" as FieldDefault }, links: { name: "links", @@ -3740,8 +3740,8 @@ export class SchemaType implements SchemaDef { duration: { name: "duration", type: "BigInt", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }], - default: 0 + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }] as readonly AttributeApplication[], + default: 0 as FieldDefault }, attemptId: { name: "attemptId", @@ -3780,8 +3780,8 @@ export class SchemaType implements SchemaDef { runIsTest: { name: "runIsTest", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, idempotencyKey: { name: "idempotencyKey", @@ -3864,20 +3864,20 @@ export class SchemaType implements SchemaDef { createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, usageDurationMs: { name: "usageDurationMs", type: "Int", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }], - default: 0 + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }] as readonly AttributeApplication[], + default: 0 as FieldDefault }, usageCostInCents: { name: "usageCostInCents", type: "Float", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }], - default: 0 + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }] as readonly AttributeApplication[], + default: 0 as FieldDefault }, machinePreset: { name: "machinePreset", @@ -3904,7 +3904,7 @@ export class SchemaType implements SchemaDef { { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("traceId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("spanId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("runId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" } @@ -3917,14 +3917,14 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, friendlyId: { name: "friendlyId", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, name: { name: "name", @@ -3933,14 +3933,14 @@ export class SchemaType implements SchemaDef { type: { name: "type", type: "TaskQueueType", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("VIRTUAL") }] }], - default: "VIRTUAL" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("VIRTUAL") }] }] as readonly AttributeApplication[], + default: "VIRTUAL" as FieldDefault }, version: { name: "version", type: "TaskQueueVersion", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("V1") }] }], - default: "V1" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("V1") }] }] as readonly AttributeApplication[], + default: "V1" as FieldDefault }, orderableName: { name: "orderableName", @@ -3950,7 +3950,7 @@ export class SchemaType implements SchemaDef { project: { name: "project", type: "Project", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "taskQueues", fields: ["projectId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, projectId: { @@ -3958,12 +3958,12 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "project" - ] + ] as readonly string[] }, runtimeEnvironment: { name: "runtimeEnvironment", type: "RuntimeEnvironment", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("runtimeEnvironmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("runtimeEnvironmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "taskQueues", fields: ["runtimeEnvironmentId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, runtimeEnvironmentId: { @@ -3971,7 +3971,7 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "runtimeEnvironment" - ] + ] as readonly string[] }, concurrencyLimit: { name: "concurrencyLimit", @@ -3986,26 +3986,26 @@ export class SchemaType implements SchemaDef { paused: { name: "paused", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, releaseConcurrencyOnWaitpoint: { name: "releaseConcurrencyOnWaitpoint", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, attempts: { name: "attempts", @@ -4028,7 +4028,7 @@ export class SchemaType implements SchemaDef { }, attributes: [ { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("runtimeEnvironmentId"), ExpressionUtils.field("name")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -4043,14 +4043,14 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, friendlyId: { name: "friendlyId", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, idempotencyKey: { name: "idempotencyKey", @@ -4065,21 +4065,21 @@ export class SchemaType implements SchemaDef { runtimeEnvironment: { name: "runtimeEnvironment", type: "RuntimeEnvironment", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("runtimeEnvironmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("runtimeEnvironmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "batchTaskRuns", fields: ["runtimeEnvironmentId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, status: { name: "status", type: "BatchTaskRunStatus", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("PENDING") }] }], - default: "PENDING" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("PENDING") }] }] as readonly AttributeApplication[], + default: "PENDING" as FieldDefault }, runtimeEnvironmentId: { name: "runtimeEnvironmentId", type: "String", foreignKeyFor: [ "runtimeEnvironment" - ] + ] as readonly string[] }, runs: { name: "runs", @@ -4090,27 +4090,27 @@ export class SchemaType implements SchemaDef { createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, runIds: { name: "runIds", type: "String", array: true, - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.array("Any", []) }] }], - default: [] + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.array("Any", []) }] }] as readonly AttributeApplication[], + default: [] as FieldDefault }, runCount: { name: "runCount", type: "Int", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }], - default: 0 + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }] as readonly AttributeApplication[], + default: 0 as FieldDefault }, payload: { name: "payload", @@ -4120,8 +4120,8 @@ export class SchemaType implements SchemaDef { payloadType: { name: "payloadType", type: "String", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("application/json") }] }], - default: "application/json" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("application/json") }] }] as readonly AttributeApplication[], + default: "application/json" as FieldDefault }, options: { name: "options", @@ -4131,8 +4131,8 @@ export class SchemaType implements SchemaDef { batchVersion: { name: "batchVersion", type: "String", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("v1") }] }], - default: "v1" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("v1") }] }] as readonly AttributeApplication[], + default: "v1" as FieldDefault }, executionSnapshots: { name: "executionSnapshots", @@ -4155,8 +4155,8 @@ export class SchemaType implements SchemaDef { sealed: { name: "sealed", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, sealedAt: { name: "sealedAt", @@ -4166,14 +4166,14 @@ export class SchemaType implements SchemaDef { expectedCount: { name: "expectedCount", type: "Int", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }], - default: 0 + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }] as readonly AttributeApplication[], + default: 0 as FieldDefault }, completedCount: { name: "completedCount", type: "Int", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }], - default: 0 + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }] as readonly AttributeApplication[], + default: 0 as FieldDefault }, completedAt: { name: "completedAt", @@ -4188,14 +4188,14 @@ export class SchemaType implements SchemaDef { processingJobsCount: { name: "processingJobsCount", type: "Int", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }], - default: 0 + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }] as readonly AttributeApplication[], + default: 0 as FieldDefault }, processingJobsExpectedCount: { name: "processingJobsExpectedCount", type: "Int", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }], - default: 0 + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }] as readonly AttributeApplication[], + default: 0 as FieldDefault }, oneTimeUseToken: { name: "oneTimeUseToken", @@ -4217,7 +4217,7 @@ export class SchemaType implements SchemaDef { name: "checkpointEvent", type: "CheckpointRestoreEvent", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("checkpointEventId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("checkpointEventId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "batchTaskRunDependency", fields: ["checkpointEventId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, checkpointEventId: { @@ -4225,16 +4225,16 @@ export class SchemaType implements SchemaDef { type: "String", unique: true, optional: true, - attributes: [{ name: "@unique" }], + attributes: [{ name: "@unique" }] as readonly AttributeApplication[], foreignKeyFor: [ "checkpointEvent" - ] + ] as readonly string[] }, dependentTaskAttempt: { name: "dependentTaskAttempt", type: "TaskRunAttempt", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("dependentTaskAttemptId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("dependentTaskAttemptId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "batchDependencies", fields: ["dependentTaskAttemptId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, dependentTaskAttemptId: { @@ -4243,13 +4243,13 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "dependentTaskAttempt" - ] + ] as readonly string[] }, runDependencies: { name: "runDependencies", type: "TaskRunDependency", array: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("dependentBatchRun") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("dependentBatchRun") }] }] as readonly AttributeApplication[], relation: { opposite: "dependentBatchRun", name: "dependentBatchRun" } } }, @@ -4257,7 +4257,7 @@ export class SchemaType implements SchemaDef { { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("oneTimeUseToken")]) }] }, { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("runtimeEnvironmentId"), ExpressionUtils.field("idempotencyKey")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("dependentTaskAttemptId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -4274,19 +4274,19 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, status: { name: "status", type: "BatchTaskRunItemStatus", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("PENDING") }] }], - default: "PENDING" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("PENDING") }] }] as readonly AttributeApplication[], + default: "PENDING" as FieldDefault }, batchTaskRun: { name: "batchTaskRun", type: "BatchTaskRun", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("batchTaskRunId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("batchTaskRunId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "items", fields: ["batchTaskRunId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, batchTaskRunId: { @@ -4294,12 +4294,12 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "batchTaskRun" - ] + ] as readonly string[] }, taskRun: { name: "taskRun", type: "TaskRun", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("taskRunId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("taskRunId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "batchItems", fields: ["taskRunId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, taskRunId: { @@ -4307,13 +4307,13 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "taskRun" - ] + ] as readonly string[] }, taskRunAttempt: { name: "taskRunAttempt", type: "TaskRunAttempt", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("taskRunAttemptId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("taskRunAttemptId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "batchTaskRunItems", fields: ["taskRunAttemptId"], references: ["id"], onDelete: "SetNull", onUpdate: "Cascade" } }, taskRunAttemptId: { @@ -4322,19 +4322,19 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "taskRunAttempt" - ] + ] as readonly string[] }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, completedAt: { name: "completedAt", @@ -4346,7 +4346,7 @@ export class SchemaType implements SchemaDef { { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("batchTaskRunId"), ExpressionUtils.field("taskRunId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("taskRunAttemptId")]) }, { name: "map", value: ExpressionUtils.literal("idx_batchtaskrunitem_taskrunattempt") }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("taskRunId")]) }, { name: "map", value: ExpressionUtils.literal("idx_batchtaskrunitem_taskrun") }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -4360,14 +4360,14 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, friendlyId: { name: "friendlyId", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, key: { name: "key", @@ -4376,7 +4376,7 @@ export class SchemaType implements SchemaDef { project: { name: "project", type: "Project", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "environmentVariables", fields: ["projectId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, projectId: { @@ -4384,19 +4384,19 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "project" - ] + ] as readonly string[] }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, values: { name: "values", @@ -4407,7 +4407,7 @@ export class SchemaType implements SchemaDef { }, attributes: [ { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId"), ExpressionUtils.field("key")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -4422,14 +4422,14 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, valueReference: { name: "valueReference", type: "SecretReference", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("valueReferenceId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("valueReferenceId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "environmentVariableValues", fields: ["valueReferenceId"], references: ["id"], onDelete: "SetNull", onUpdate: "Cascade" } }, valueReferenceId: { @@ -4438,12 +4438,12 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "valueReference" - ] + ] as readonly string[] }, variable: { name: "variable", type: "EnvironmentVariable", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("variableId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("variableId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "values", fields: ["variableId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, variableId: { @@ -4451,12 +4451,12 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "variable" - ] + ] as readonly string[] }, environment: { name: "environment", type: "RuntimeEnvironment", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("environmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("environmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "environmentVariableValues", fields: ["environmentId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, environmentId: { @@ -4464,30 +4464,30 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "environment" - ] + ] as readonly string[] }, isSecret: { name: "isSecret", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] } }, attributes: [ { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("variableId"), ExpressionUtils.field("environmentId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -4501,14 +4501,14 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, friendlyId: { name: "friendlyId", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, type: { name: "type", @@ -4541,7 +4541,7 @@ export class SchemaType implements SchemaDef { run: { name: "run", type: "TaskRun", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("runId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("runId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "checkpoints", fields: ["runId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, runId: { @@ -4549,12 +4549,12 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "run" - ] + ] as readonly string[] }, attempt: { name: "attempt", type: "TaskRunAttempt", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("attemptId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("attemptId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "checkpoints", fields: ["attemptId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, attemptId: { @@ -4562,7 +4562,7 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "attempt" - ] + ] as readonly string[] }, attemptNumber: { name: "attemptNumber", @@ -4572,7 +4572,7 @@ export class SchemaType implements SchemaDef { project: { name: "project", type: "Project", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "checkpoints", fields: ["projectId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, projectId: { @@ -4580,12 +4580,12 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "project" - ] + ] as readonly string[] }, runtimeEnvironment: { name: "runtimeEnvironment", type: "RuntimeEnvironment", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("runtimeEnvironmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("runtimeEnvironmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "checkpoints", fields: ["runtimeEnvironmentId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, runtimeEnvironmentId: { @@ -4593,25 +4593,25 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "runtimeEnvironment" - ] + ] as readonly string[] }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] } }, attributes: [ { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("attemptId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("runId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -4625,8 +4625,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, type: { name: "type", @@ -4645,7 +4645,7 @@ export class SchemaType implements SchemaDef { checkpoint: { name: "checkpoint", type: "Checkpoint", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("checkpointId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("checkpointId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "events", fields: ["checkpointId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, checkpointId: { @@ -4653,12 +4653,12 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "checkpoint" - ] + ] as readonly string[] }, run: { name: "run", type: "TaskRun", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("runId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("runId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "CheckpointRestoreEvent", fields: ["runId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, runId: { @@ -4666,12 +4666,12 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "run" - ] + ] as readonly string[] }, attempt: { name: "attempt", type: "TaskRunAttempt", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("attemptId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("attemptId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "CheckpointRestoreEvent", fields: ["attemptId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, attemptId: { @@ -4679,12 +4679,12 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "attempt" - ] + ] as readonly string[] }, project: { name: "project", type: "Project", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "CheckpointRestoreEvent", fields: ["projectId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, projectId: { @@ -4692,12 +4692,12 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "project" - ] + ] as readonly string[] }, runtimeEnvironment: { name: "runtimeEnvironment", type: "RuntimeEnvironment", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("runtimeEnvironmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("runtimeEnvironmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "CheckpointRestoreEvent", fields: ["runtimeEnvironmentId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, runtimeEnvironmentId: { @@ -4705,7 +4705,7 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "runtimeEnvironment" - ] + ] as readonly string[] }, taskRunDependency: { name: "taskRunDependency", @@ -4722,20 +4722,20 @@ export class SchemaType implements SchemaDef { createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] } }, attributes: [ { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("checkpointId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("runId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" } @@ -4748,8 +4748,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, contentHash: { name: "contentHash", @@ -4759,7 +4759,7 @@ export class SchemaType implements SchemaDef { name: "friendlyId", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, shortCode: { name: "shortCode", @@ -4777,8 +4777,8 @@ export class SchemaType implements SchemaDef { imagePlatform: { name: "imagePlatform", type: "String", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("linux/amd64") }] }], - default: "linux/amd64" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("linux/amd64") }] }] as readonly AttributeApplication[], + default: "linux/amd64" as FieldDefault }, externalBuildData: { name: "externalBuildData", @@ -4788,19 +4788,19 @@ export class SchemaType implements SchemaDef { status: { name: "status", type: "WorkerDeploymentStatus", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("PENDING") }] }], - default: "PENDING" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("PENDING") }] }] as readonly AttributeApplication[], + default: "PENDING" as FieldDefault }, type: { name: "type", type: "WorkerDeploymentType", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("V1") }] }], - default: "V1" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("V1") }] }] as readonly AttributeApplication[], + default: "V1" as FieldDefault }, project: { name: "project", type: "Project", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "WorkerDeployment", fields: ["projectId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, projectId: { @@ -4808,12 +4808,12 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "project" - ] + ] as readonly string[] }, environment: { name: "environment", type: "RuntimeEnvironment", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("environmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("environmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "workerDeployments", fields: ["environmentId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, environmentId: { @@ -4821,13 +4821,13 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "environment" - ] + ] as readonly string[] }, worker: { name: "worker", type: "BackgroundWorker", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("workerId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("workerId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "deployment", fields: ["workerId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, workerId: { @@ -4835,16 +4835,16 @@ export class SchemaType implements SchemaDef { type: "String", unique: true, optional: true, - attributes: [{ name: "@unique" }], + attributes: [{ name: "@unique" }] as readonly AttributeApplication[], foreignKeyFor: [ "worker" - ] + ] as readonly string[] }, triggeredBy: { name: "triggeredBy", type: "User", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("triggeredById")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("triggeredById")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "deployments", fields: ["triggeredById"], references: ["id"], onDelete: "SetNull", onUpdate: "Cascade" } }, triggeredById: { @@ -4853,7 +4853,7 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "triggeredBy" - ] + ] as readonly string[] }, builtAt: { name: "builtAt", @@ -4883,14 +4883,14 @@ export class SchemaType implements SchemaDef { createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, promotions: { name: "promotions", @@ -4914,7 +4914,7 @@ export class SchemaType implements SchemaDef { attributes: [ { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId"), ExpressionUtils.field("shortCode")]) }] }, { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("environmentId"), ExpressionUtils.field("version")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -4931,8 +4931,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, label: { name: "label", @@ -4941,7 +4941,7 @@ export class SchemaType implements SchemaDef { deployment: { name: "deployment", type: "WorkerDeployment", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("deploymentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("deploymentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "promotions", fields: ["deploymentId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, deploymentId: { @@ -4949,12 +4949,12 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "deployment" - ] + ] as readonly string[] }, environment: { name: "environment", type: "RuntimeEnvironment", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("environmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("environmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "workerDeploymentPromotions", fields: ["environmentId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, environmentId: { @@ -4962,12 +4962,12 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "environment" - ] + ] as readonly string[] } }, attributes: [ { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("environmentId"), ExpressionUtils.field("label")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -4981,20 +4981,20 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, type: { name: "type", type: "ScheduleType", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("IMPERATIVE") }] }], - default: "IMPERATIVE" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("IMPERATIVE") }] }] as readonly AttributeApplication[], + default: "IMPERATIVE" as FieldDefault }, friendlyId: { name: "friendlyId", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, taskIdentifier: { name: "taskIdentifier", @@ -5003,14 +5003,14 @@ export class SchemaType implements SchemaDef { deduplicationKey: { name: "deduplicationKey", type: "String", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, userProvidedDeduplicationKey: { name: "userProvidedDeduplicationKey", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, generatorExpression: { name: "generatorExpression", @@ -5019,20 +5019,20 @@ export class SchemaType implements SchemaDef { generatorDescription: { name: "generatorDescription", type: "String", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("") }] }], - default: "" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("") }] }] as readonly AttributeApplication[], + default: "" as FieldDefault }, generatorType: { name: "generatorType", type: "ScheduleGeneratorType", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("CRON") }] }], - default: "CRON" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("CRON") }] }] as readonly AttributeApplication[], + default: "CRON" as FieldDefault }, timezone: { name: "timezone", type: "String", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("UTC") }] }], - default: "UTC" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("UTC") }] }] as readonly AttributeApplication[], + default: "UTC" as FieldDefault }, externalId: { name: "externalId", @@ -5053,7 +5053,7 @@ export class SchemaType implements SchemaDef { project: { name: "project", type: "Project", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "taskSchedules", fields: ["projectId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, projectId: { @@ -5061,32 +5061,32 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "project" - ] + ] as readonly string[] }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, active: { name: "active", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(true) }] }], - default: true + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(true) }] }] as readonly AttributeApplication[], + default: true as FieldDefault } }, attributes: [ { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId"), ExpressionUtils.field("deduplicationKey")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId"), ExpressionUtils.field("createdAt")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -5101,13 +5101,13 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, taskSchedule: { name: "taskSchedule", type: "TaskSchedule", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("taskScheduleId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("taskScheduleId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "instances", fields: ["taskScheduleId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, taskScheduleId: { @@ -5115,12 +5115,12 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "taskSchedule" - ] + ] as readonly string[] }, environment: { name: "environment", type: "RuntimeEnvironment", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("environmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("environmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "taskScheduleInstances", fields: ["environmentId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, environmentId: { @@ -5128,25 +5128,25 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "environment" - ] + ] as readonly string[] }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, active: { name: "active", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(true) }] }], - default: true + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(true) }] }] as readonly AttributeApplication[], + default: true as FieldDefault }, lastScheduledTimestamp: { name: "lastScheduledTimestamp", @@ -5161,7 +5161,7 @@ export class SchemaType implements SchemaDef { }, attributes: [ { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("taskScheduleId"), ExpressionUtils.field("environmentId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -5175,8 +5175,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, ipAddress: { name: "ipAddress", @@ -5185,7 +5185,7 @@ export class SchemaType implements SchemaDef { environment: { name: "environment", type: "RuntimeEnvironment", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("environmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("environmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "sessions", fields: ["environmentId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, environmentId: { @@ -5193,19 +5193,19 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "environment" - ] + ] as readonly string[] }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, disconnectedAt: { name: "disconnectedAt", @@ -5216,7 +5216,7 @@ export class SchemaType implements SchemaDef { name: "currentEnvironments", type: "RuntimeEnvironment", array: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("currentSession") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("currentSession") }] }] as readonly AttributeApplication[], relation: { opposite: "currentSession", name: "currentSession" } } }, @@ -5232,32 +5232,32 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, friendlyId: { name: "friendlyId", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, deduplicationKey: { name: "deduplicationKey", type: "String", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, userProvidedDeduplicationKey: { name: "userProvidedDeduplicationKey", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, integration: { name: "integration", type: "OrganizationIntegration", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("integrationId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("integrationId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("SetNull") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "alertChannels", fields: ["integrationId"], references: ["id"], onDelete: "SetNull", onUpdate: "Cascade" } }, integrationId: { @@ -5266,13 +5266,13 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "integration" - ] + ] as readonly string[] }, enabled: { name: "enabled", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(true) }] }], - default: true + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(true) }] }] as readonly AttributeApplication[], + default: true as FieldDefault }, type: { name: "type", @@ -5295,13 +5295,13 @@ export class SchemaType implements SchemaDef { name: "environmentTypes", type: "RuntimeEnvironmentType", array: true, - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.array("RuntimeEnvironmentType", [ExpressionUtils.literal("STAGING"), ExpressionUtils.literal("PRODUCTION")]) }] }], - default: ["STAGING", "PRODUCTION"] + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.array("RuntimeEnvironmentType", [ExpressionUtils.literal("STAGING"), ExpressionUtils.literal("PRODUCTION")]) }] }] as readonly AttributeApplication[], + default: ["STAGING", "PRODUCTION"] as FieldDefault }, project: { name: "project", type: "Project", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "alertChannels", fields: ["projectId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, projectId: { @@ -5309,19 +5309,19 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "project" - ] + ] as readonly string[] }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, alerts: { name: "alerts", @@ -5338,7 +5338,7 @@ export class SchemaType implements SchemaDef { }, attributes: [ { name: "@@unique", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId"), ExpressionUtils.field("deduplicationKey")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -5353,19 +5353,19 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, friendlyId: { name: "friendlyId", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, project: { name: "project", type: "Project", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "alerts", fields: ["projectId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, projectId: { @@ -5373,12 +5373,12 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "project" - ] + ] as readonly string[] }, environment: { name: "environment", type: "RuntimeEnvironment", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("environmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("environmentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "alerts", fields: ["environmentId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, environmentId: { @@ -5386,12 +5386,12 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "environment" - ] + ] as readonly string[] }, channel: { name: "channel", type: "ProjectAlertChannel", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("channelId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("channelId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "alerts", fields: ["channelId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, channelId: { @@ -5399,13 +5399,13 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "channel" - ] + ] as readonly string[] }, status: { name: "status", type: "ProjectAlertStatus", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("PENDING") }] }], - default: "PENDING" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("PENDING") }] }] as readonly AttributeApplication[], + default: "PENDING" as FieldDefault }, type: { name: "type", @@ -5415,7 +5415,7 @@ export class SchemaType implements SchemaDef { name: "taskRunAttempt", type: "TaskRunAttempt", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("taskRunAttemptId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("taskRunAttemptId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "alerts", fields: ["taskRunAttemptId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, taskRunAttemptId: { @@ -5424,13 +5424,13 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "taskRunAttempt" - ] + ] as readonly string[] }, taskRun: { name: "taskRun", type: "TaskRun", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("taskRunId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("taskRunId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "alerts", fields: ["taskRunId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, taskRunId: { @@ -5439,13 +5439,13 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "taskRun" - ] + ] as readonly string[] }, workerDeployment: { name: "workerDeployment", type: "WorkerDeployment", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("workerDeploymentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("workerDeploymentId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "alerts", fields: ["workerDeploymentId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, workerDeploymentId: { @@ -5454,19 +5454,19 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "workerDeployment" - ] + ] as readonly string[] }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] } }, idFields: ["id"], @@ -5482,13 +5482,13 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, project: { name: "project", type: "Project", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "alertStorages", fields: ["projectId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, projectId: { @@ -5496,12 +5496,12 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "project" - ] + ] as readonly string[] }, alertChannel: { name: "alertChannel", type: "ProjectAlertChannel", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("alertChannelId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("alertChannelId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "alertStorages", fields: ["alertChannelId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, alertChannelId: { @@ -5509,7 +5509,7 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "alertChannel" - ] + ] as readonly string[] }, alertType: { name: "alertType", @@ -5526,14 +5526,14 @@ export class SchemaType implements SchemaDef { createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] } }, idFields: ["id"], @@ -5548,14 +5548,14 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, friendlyId: { name: "friendlyId", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, service: { name: "service", @@ -5568,7 +5568,7 @@ export class SchemaType implements SchemaDef { tokenReference: { name: "tokenReference", type: "SecretReference", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("tokenReferenceId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("tokenReferenceId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "OrganizationIntegration", fields: ["tokenReferenceId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, tokenReferenceId: { @@ -5576,12 +5576,12 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "tokenReference" - ] + ] as readonly string[] }, organization: { name: "organization", type: "Organization", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("organizationId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("organizationId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "organizationIntegrations", fields: ["organizationId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, organizationId: { @@ -5589,19 +5589,19 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "organization" - ] + ] as readonly string[] }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, alertChannels: { name: "alertChannels", @@ -5623,19 +5623,19 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, friendlyId: { name: "friendlyId", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, project: { name: "project", type: "Project", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("projectId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "bulkActionGroups", fields: ["projectId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, projectId: { @@ -5643,7 +5643,7 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "project" - ] + ] as readonly string[] }, type: { name: "type", @@ -5658,20 +5658,20 @@ export class SchemaType implements SchemaDef { status: { name: "status", type: "BulkActionStatus", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("PENDING") }] }], - default: "PENDING" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("PENDING") }] }] as readonly AttributeApplication[], + default: "PENDING" as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] } }, idFields: ["id"], @@ -5687,19 +5687,19 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, friendlyId: { name: "friendlyId", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, group: { name: "group", type: "BulkActionGroup", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("groupId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("groupId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "items", fields: ["groupId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, groupId: { @@ -5707,7 +5707,7 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "group" - ] + ] as readonly string[] }, type: { name: "type", @@ -5716,13 +5716,13 @@ export class SchemaType implements SchemaDef { status: { name: "status", type: "BulkActionItemStatus", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("PENDING") }] }], - default: "PENDING" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("PENDING") }] }] as readonly AttributeApplication[], + default: "PENDING" as FieldDefault }, sourceRun: { name: "sourceRun", type: "TaskRun", - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("SourceActionItemRun") }, { name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("sourceRunId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("SourceActionItemRun") }, { name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("sourceRunId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "sourceBulkActionItems", name: "SourceActionItemRun", fields: ["sourceRunId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, sourceRunId: { @@ -5730,13 +5730,13 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "sourceRun" - ] + ] as readonly string[] }, destinationRun: { name: "destinationRun", type: "TaskRun", optional: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("DestinationActionItemRun") }, { name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("destinationRunId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("DestinationActionItemRun") }, { name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("destinationRunId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "destinationBulkActionItems", name: "DestinationActionItemRun", fields: ["destinationRunId"], references: ["id"], onDelete: "Cascade", onUpdate: "Cascade" } }, destinationRunId: { @@ -5745,7 +5745,7 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "destinationRun" - ] + ] as readonly string[] }, error: { name: "error", @@ -5755,14 +5755,14 @@ export class SchemaType implements SchemaDef { createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] } }, idFields: ["id"], @@ -5778,8 +5778,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, key: { name: "key", @@ -5800,14 +5800,14 @@ export class SchemaType implements SchemaDef { createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault } }, attributes: [ { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("runId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("DateTime", [ExpressionUtils.field("createdAt")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" } @@ -5820,8 +5820,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, message: { name: "message", @@ -5848,20 +5848,20 @@ export class SchemaType implements SchemaDef { isError: { name: "isError", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, isPartial: { name: "isPartial", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, isCancelled: { name: "isCancelled", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, serviceName: { name: "serviceName", @@ -5874,20 +5874,20 @@ export class SchemaType implements SchemaDef { level: { name: "level", type: "TaskEventLevel", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("TRACE") }] }], - default: "TRACE" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("TRACE") }] }] as readonly AttributeApplication[], + default: "TRACE" as FieldDefault }, kind: { name: "kind", type: "TaskEventKind", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("INTERNAL") }] }], - default: "INTERNAL" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("INTERNAL") }] }] as readonly AttributeApplication[], + default: "INTERNAL" as FieldDefault }, status: { name: "status", type: "TaskEventStatus", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("UNSET") }] }], - default: "UNSET" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("UNSET") }] }] as readonly AttributeApplication[], + default: "UNSET" as FieldDefault }, links: { name: "links", @@ -5906,8 +5906,8 @@ export class SchemaType implements SchemaDef { duration: { name: "duration", type: "BigInt", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }], - default: 0 + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }] as readonly AttributeApplication[], + default: 0 as FieldDefault }, attemptId: { name: "attemptId", @@ -5946,8 +5946,8 @@ export class SchemaType implements SchemaDef { runIsTest: { name: "runIsTest", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, idempotencyKey: { name: "idempotencyKey", @@ -6031,20 +6031,20 @@ export class SchemaType implements SchemaDef { name: "createdAt", type: "DateTime", id: true, - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, usageDurationMs: { name: "usageDurationMs", type: "Int", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }], - default: 0 + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }] as readonly AttributeApplication[], + default: 0 as FieldDefault }, usageCostInCents: { name: "usageCostInCents", type: "Float", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }], - default: 0 + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }] as readonly AttributeApplication[], + default: 0 as FieldDefault }, machinePreset: { name: "machinePreset", @@ -6072,7 +6072,7 @@ export class SchemaType implements SchemaDef { { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("traceId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("spanId")]) }] }, { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("runId")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id", "createdAt"], uniqueFields: { id_createdAt: { id: { type: "String" }, createdAt: { type: "DateTime" } } diff --git a/tests/e2e/orm/plugin-infra/ext-query-args/schema.ts b/tests/e2e/orm/plugin-infra/ext-query-args/schema.ts index 57d0d946f..df4de3859 100644 --- a/tests/e2e/orm/plugin-infra/ext-query-args/schema.ts +++ b/tests/e2e/orm/plugin-infra/ext-query-args/schema.ts @@ -5,7 +5,7 @@ /* eslint-disable */ -import { type SchemaDef, ExpressionUtils } from "@zenstackhq/schema"; +import { type SchemaDef, type AttributeApplication, type FieldDefault, ExpressionUtils } from "@zenstackhq/schema"; export class SchemaType implements SchemaDef { provider = { type: "sqlite" @@ -18,8 +18,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, name: { name: "name", diff --git a/tests/e2e/orm/schemas/auth-type/schema.ts b/tests/e2e/orm/schemas/auth-type/schema.ts index b4e3b472e..2730775ed 100644 --- a/tests/e2e/orm/schemas/auth-type/schema.ts +++ b/tests/e2e/orm/schemas/auth-type/schema.ts @@ -5,7 +5,7 @@ /* eslint-disable */ -import { type SchemaDef } from "@zenstackhq/schema"; +import { type SchemaDef, type AttributeApplication } from "@zenstackhq/schema"; export class SchemaType implements SchemaDef { provider = { type: "sqlite" @@ -18,7 +18,7 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }] + attributes: [{ name: "@id" }] as readonly AttributeApplication[] } }, idFields: ["id"], @@ -43,7 +43,7 @@ export class SchemaType implements SchemaDef { id: { name: "id", type: "Int", - attributes: [{ name: "@id" }] + attributes: [{ name: "@id" }] as readonly AttributeApplication[] }, name: { name: "name", @@ -61,7 +61,7 @@ export class SchemaType implements SchemaDef { }, attributes: [ { name: "@@auth" } - ] + ] as readonly AttributeApplication[] } } as const; authType = "Auth" as const; diff --git a/tests/e2e/orm/schemas/basic/schema.ts b/tests/e2e/orm/schemas/basic/schema.ts index 15591490c..39f85eef7 100644 --- a/tests/e2e/orm/schemas/basic/schema.ts +++ b/tests/e2e/orm/schemas/basic/schema.ts @@ -5,7 +5,7 @@ /* eslint-disable */ -import { type SchemaDef, ExpressionUtils } from "@zenstackhq/schema"; +import { type SchemaDef, type AttributeApplication, type FieldDefault, ExpressionUtils } from "@zenstackhq/schema"; export class SchemaType implements SchemaDef { provider = { type: "sqlite" @@ -18,26 +18,26 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: { ignore: ["id", "createdAt"] }, - attributes: [{ name: "@updatedAt", args: [{ name: "ignore", value: ExpressionUtils.array("String", [ExpressionUtils.field("id"), ExpressionUtils.field("createdAt")]) }] }] + attributes: [{ name: "@updatedAt", args: [{ name: "ignore", value: ExpressionUtils.array("String", [ExpressionUtils.field("id"), ExpressionUtils.field("createdAt")]) }] }] as readonly AttributeApplication[] }, email: { name: "email", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, name: { name: "name", @@ -52,8 +52,8 @@ export class SchemaType implements SchemaDef { role: { name: "role", type: "Role", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("USER") }] }], - default: "USER" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("USER") }] }] as readonly AttributeApplication[], + default: "USER" as FieldDefault }, posts: { name: "posts", @@ -76,7 +76,7 @@ export class SchemaType implements SchemaDef { attributes: [ { name: "@@allow", args: [{ name: "operation", value: ExpressionUtils.literal("all") }, { name: "condition", value: ExpressionUtils.binary(ExpressionUtils.member(ExpressionUtils.call("auth"), ["id"]), "==", ExpressionUtils.field("id")) }] }, { name: "@@allow", args: [{ name: "operation", value: ExpressionUtils.literal("read") }, { name: "condition", value: ExpressionUtils.binary(ExpressionUtils.call("auth"), "!=", ExpressionUtils._null()) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -90,20 +90,20 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: { ignore: ["id", "createdAt"] }, - attributes: [{ name: "@updatedAt", args: [{ name: "ignore", value: ExpressionUtils.array("String", [ExpressionUtils.field("id"), ExpressionUtils.field("createdAt")]) }] }] + attributes: [{ name: "@updatedAt", args: [{ name: "ignore", value: ExpressionUtils.array("String", [ExpressionUtils.field("id"), ExpressionUtils.field("createdAt")]) }] }] as readonly AttributeApplication[] }, title: { name: "title", @@ -117,13 +117,13 @@ export class SchemaType implements SchemaDef { published: { name: "published", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, author: { name: "author", type: "User", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("authorId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("authorId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "posts", fields: ["authorId"], references: ["id"], onUpdate: "Cascade", onDelete: "Cascade" } }, authorId: { @@ -131,7 +131,7 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "author" - ] + ] as readonly string[] }, comments: { name: "comments", @@ -144,7 +144,7 @@ export class SchemaType implements SchemaDef { { name: "@@deny", args: [{ name: "operation", value: ExpressionUtils.literal("all") }, { name: "condition", value: ExpressionUtils.binary(ExpressionUtils.call("auth"), "==", ExpressionUtils._null()) }] }, { name: "@@allow", args: [{ name: "operation", value: ExpressionUtils.literal("all") }, { name: "condition", value: ExpressionUtils.binary(ExpressionUtils.member(ExpressionUtils.call("auth"), ["id"]), "==", ExpressionUtils.field("authorId")) }] }, { name: "@@allow", args: [{ name: "operation", value: ExpressionUtils.literal("read") }, { name: "condition", value: ExpressionUtils.field("published") }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" } @@ -157,20 +157,20 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: { ignore: ["id", "createdAt"] }, - attributes: [{ name: "@updatedAt", args: [{ name: "ignore", value: ExpressionUtils.array("String", [ExpressionUtils.field("id"), ExpressionUtils.field("createdAt")]) }] }] + attributes: [{ name: "@updatedAt", args: [{ name: "ignore", value: ExpressionUtils.array("String", [ExpressionUtils.field("id"), ExpressionUtils.field("createdAt")]) }] }] as readonly AttributeApplication[] }, content: { name: "content", @@ -180,7 +180,7 @@ export class SchemaType implements SchemaDef { name: "post", type: "Post", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("postId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("postId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "comments", fields: ["postId"], references: ["id"], onUpdate: "Cascade", onDelete: "Cascade" } }, postId: { @@ -189,7 +189,7 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "post" - ] + ] as readonly string[] } }, idFields: ["id"], @@ -204,20 +204,20 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: { ignore: ["id", "createdAt"] }, - attributes: [{ name: "@updatedAt", args: [{ name: "ignore", value: ExpressionUtils.array("String", [ExpressionUtils.field("id"), ExpressionUtils.field("createdAt")]) }] }] + attributes: [{ name: "@updatedAt", args: [{ name: "ignore", value: ExpressionUtils.array("String", [ExpressionUtils.field("id"), ExpressionUtils.field("createdAt")]) }] }] as readonly AttributeApplication[] }, bio: { name: "bio", @@ -232,7 +232,7 @@ export class SchemaType implements SchemaDef { name: "user", type: "User", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "profile", fields: ["userId"], references: ["id"], onUpdate: "Cascade", onDelete: "Cascade" } }, userId: { @@ -240,10 +240,10 @@ export class SchemaType implements SchemaDef { type: "String", unique: true, optional: true, - attributes: [{ name: "@unique" }], + attributes: [{ name: "@unique" }] as readonly AttributeApplication[], foreignKeyFor: [ "user" - ] + ] as readonly string[] } }, idFields: ["id"], @@ -259,8 +259,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, value: { name: "value", @@ -280,20 +280,20 @@ export class SchemaType implements SchemaDef { id: { name: "id", type: "String", - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: { ignore: ["id", "createdAt"] }, - attributes: [{ name: "@updatedAt", args: [{ name: "ignore", value: ExpressionUtils.array("String", [ExpressionUtils.field("id"), ExpressionUtils.field("createdAt")]) }] }] + attributes: [{ name: "@updatedAt", args: [{ name: "ignore", value: ExpressionUtils.array("String", [ExpressionUtils.field("id"), ExpressionUtils.field("createdAt")]) }] }] as readonly AttributeApplication[] } } } diff --git a/tests/e2e/orm/schemas/default-auth/schema.ts b/tests/e2e/orm/schemas/default-auth/schema.ts index ff265850a..1deba2463 100644 --- a/tests/e2e/orm/schemas/default-auth/schema.ts +++ b/tests/e2e/orm/schemas/default-auth/schema.ts @@ -5,7 +5,7 @@ /* eslint-disable */ -import { type SchemaDef, ExpressionUtils } from "@zenstackhq/schema"; +import { type SchemaDef, type AttributeApplication, type FieldDefault, ExpressionUtils } from "@zenstackhq/schema"; export class SchemaType implements SchemaDef { provider = { type: "sqlite" @@ -18,8 +18,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, profile: { name: "profile", @@ -40,8 +40,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, bio: { name: "bio", @@ -52,23 +52,23 @@ export class SchemaType implements SchemaDef { name: "userId", type: "Int", unique: true, - attributes: [{ name: "@unique" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.member(ExpressionUtils.call("auth"), ["id"]) }] }], - default: ExpressionUtils.member(ExpressionUtils.call("auth"), ["id"]), + attributes: [{ name: "@unique" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.member(ExpressionUtils.call("auth"), ["id"]) }] }] as readonly AttributeApplication[], + default: ExpressionUtils.member(ExpressionUtils.call("auth"), ["id"]) as FieldDefault, foreignKeyFor: [ "user" - ] + ] as readonly string[] }, user: { name: "user", type: "User", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }] }] as readonly AttributeApplication[], relation: { opposite: "profile", fields: ["userId"], references: ["id"], hasDefault: true } }, address: { name: "address", type: "Address", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("addressId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("addressId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }] }] as readonly AttributeApplication[], relation: { opposite: "profile", fields: ["addressId"], references: ["id"] } }, addressId: { @@ -76,10 +76,10 @@ export class SchemaType implements SchemaDef { type: "Int", unique: true, optional: true, - attributes: [{ name: "@unique" }], + attributes: [{ name: "@unique" }] as readonly AttributeApplication[], foreignKeyFor: [ "address" - ] + ] as readonly string[] } }, idFields: ["id"], @@ -96,8 +96,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, city: { name: "city", diff --git a/tests/e2e/orm/schemas/delegate/schema.ts b/tests/e2e/orm/schemas/delegate/schema.ts index d5488db19..65caeff8b 100644 --- a/tests/e2e/orm/schemas/delegate/schema.ts +++ b/tests/e2e/orm/schemas/delegate/schema.ts @@ -5,7 +5,7 @@ /* eslint-disable */ -import { type SchemaDef, ExpressionUtils } from "@zenstackhq/schema"; +import { type SchemaDef, type AttributeApplication, type FieldDefault, ExpressionUtils } from "@zenstackhq/schema"; export class SchemaType implements SchemaDef { provider = { type: "sqlite" @@ -18,21 +18,21 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, email: { name: "email", type: "String", unique: true, optional: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, level: { name: "level", type: "Int", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }], - default: 0 + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }] as readonly AttributeApplication[], + default: 0 as FieldDefault }, assets: { name: "assets", @@ -44,7 +44,7 @@ export class SchemaType implements SchemaDef { name: "ratedVideos", type: "RatedVideo", array: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("direct") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("direct") }] }] as readonly AttributeApplication[], relation: { opposite: "user", name: "direct" } } }, @@ -61,8 +61,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, content: { name: "content", @@ -72,7 +72,7 @@ export class SchemaType implements SchemaDef { name: "asset", type: "Asset", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("assetId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("assetId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "comments", fields: ["assetId"], references: ["id"], onDelete: "Cascade" } }, assetId: { @@ -81,7 +81,7 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "asset" - ] + ] as readonly string[] } }, idFields: ["id"], @@ -96,32 +96,32 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, viewCount: { name: "viewCount", type: "Int", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }], - default: 0 + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }] as readonly AttributeApplication[], + default: 0 as FieldDefault }, owner: { name: "owner", type: "User", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("ownerId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("ownerId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "assets", fields: ["ownerId"], references: ["id"], onDelete: "Cascade" } }, ownerId: { @@ -130,7 +130,7 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "owner" - ] + ] as readonly string[] }, comments: { name: "comments", @@ -147,7 +147,7 @@ export class SchemaType implements SchemaDef { attributes: [ { name: "@@index", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("ownerId")]) }] }, { name: "@@delegate", args: [{ name: "discriminator", value: ExpressionUtils.field("assetType") }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "Int" } @@ -163,36 +163,36 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", originModel: "Asset", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, originModel: "Asset", - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, viewCount: { name: "viewCount", type: "Int", originModel: "Asset", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }], - default: 0 + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }] as readonly AttributeApplication[], + default: 0 as FieldDefault }, owner: { name: "owner", type: "User", optional: true, originModel: "Asset", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("ownerId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("ownerId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "assets", fields: ["ownerId"], references: ["id"], onDelete: "Cascade" } }, ownerId: { @@ -202,7 +202,7 @@ export class SchemaType implements SchemaDef { originModel: "Asset", foreignKeyFor: [ "owner" - ] + ] as readonly string[] }, comments: { name: "comments", @@ -225,7 +225,7 @@ export class SchemaType implements SchemaDef { name: "url", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, videoType: { name: "videoType", @@ -235,7 +235,7 @@ export class SchemaType implements SchemaDef { }, attributes: [ { name: "@@delegate", args: [{ name: "discriminator", value: ExpressionUtils.field("videoType") }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "Int" }, @@ -252,36 +252,36 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", originModel: "Asset", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, originModel: "Asset", - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, viewCount: { name: "viewCount", type: "Int", originModel: "Asset", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }], - default: 0 + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }] as readonly AttributeApplication[], + default: 0 as FieldDefault }, owner: { name: "owner", type: "User", optional: true, originModel: "Asset", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("ownerId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("ownerId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "assets", fields: ["ownerId"], references: ["id"], onDelete: "Cascade" } }, ownerId: { @@ -291,7 +291,7 @@ export class SchemaType implements SchemaDef { originModel: "Asset", foreignKeyFor: [ "owner" - ] + ] as readonly string[] }, comments: { name: "comments", @@ -316,7 +316,7 @@ export class SchemaType implements SchemaDef { type: "String", unique: true, originModel: "Video", - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, videoType: { name: "videoType", @@ -332,7 +332,7 @@ export class SchemaType implements SchemaDef { name: "user", type: "User", optional: true, - attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("direct") }, { name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "name", value: ExpressionUtils.literal("direct") }, { name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "ratedVideos", name: "direct", fields: ["userId"], references: ["id"], onDelete: "Cascade" } }, userId: { @@ -341,7 +341,7 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "user" - ] + ] as readonly string[] } }, idFields: ["id"], @@ -358,36 +358,36 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", originModel: "Asset", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, originModel: "Asset", - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, viewCount: { name: "viewCount", type: "Int", originModel: "Asset", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }], - default: 0 + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }] as readonly AttributeApplication[], + default: 0 as FieldDefault }, owner: { name: "owner", type: "User", optional: true, originModel: "Asset", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("ownerId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("ownerId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "assets", fields: ["ownerId"], references: ["id"], onDelete: "Cascade" } }, ownerId: { @@ -397,7 +397,7 @@ export class SchemaType implements SchemaDef { originModel: "Asset", foreignKeyFor: [ "owner" - ] + ] as readonly string[] }, comments: { name: "comments", @@ -420,7 +420,7 @@ export class SchemaType implements SchemaDef { name: "gallery", type: "Gallery", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("galleryId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("galleryId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "images", fields: ["galleryId"], references: ["id"], onDelete: "Cascade" } }, galleryId: { @@ -429,7 +429,7 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "gallery" - ] + ] as readonly string[] } }, idFields: ["id"], @@ -444,8 +444,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, images: { name: "images", diff --git a/tests/e2e/orm/schemas/json/schema.ts b/tests/e2e/orm/schemas/json/schema.ts index 6e3e9ebd2..85621a23f 100644 --- a/tests/e2e/orm/schemas/json/schema.ts +++ b/tests/e2e/orm/schemas/json/schema.ts @@ -5,7 +5,7 @@ /* eslint-disable */ -import { type SchemaDef, ExpressionUtils } from "@zenstackhq/schema"; +import { type SchemaDef, type AttributeApplication, type FieldDefault, ExpressionUtils } from "@zenstackhq/schema"; export class SchemaType implements SchemaDef { provider = { type: "sqlite" @@ -18,8 +18,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, data: { name: "data", diff --git a/tests/e2e/orm/schemas/name-mapping/schema.ts b/tests/e2e/orm/schemas/name-mapping/schema.ts index 1479f200c..b7b1b7e5b 100644 --- a/tests/e2e/orm/schemas/name-mapping/schema.ts +++ b/tests/e2e/orm/schemas/name-mapping/schema.ts @@ -5,7 +5,7 @@ /* eslint-disable */ -import { type SchemaDef, ExpressionUtils } from "@zenstackhq/schema"; +import { type SchemaDef, type AttributeApplication, type FieldDefault, ExpressionUtils } from "@zenstackhq/schema"; export class SchemaType implements SchemaDef { provider = { type: "sqlite" @@ -18,20 +18,20 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("user_id") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("user_id") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, email: { name: "email", type: "String", unique: true, - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("user_email") }] }, { name: "@unique" }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("user_email") }] }, { name: "@unique" }] as readonly AttributeApplication[] }, role: { name: "role", type: "Role", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("USER") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("user_role") }] }], - default: "USER" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("USER") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("user_role") }] }] as readonly AttributeApplication[], + default: "USER" as FieldDefault }, posts: { name: "posts", @@ -42,7 +42,7 @@ export class SchemaType implements SchemaDef { }, attributes: [ { name: "@@map", args: [{ name: "name", value: ExpressionUtils.literal("users") }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "Int" }, @@ -56,32 +56,32 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("post_id") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }, { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("post_id") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, title: { name: "title", type: "String", - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("post_title") }] }] + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("post_title") }] }] as readonly AttributeApplication[] }, author: { name: "author", type: "User", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("authorId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("authorId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }] }] as readonly AttributeApplication[], relation: { opposite: "posts", fields: ["authorId"], references: ["id"] } }, authorId: { name: "authorId", type: "Int", - attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("author_id") }] }], + attributes: [{ name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("author_id") }] }] as readonly AttributeApplication[], foreignKeyFor: [ "author" - ] + ] as readonly string[] } }, attributes: [ { name: "@@map", args: [{ name: "name", value: ExpressionUtils.literal("posts") }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "Int" } @@ -101,13 +101,13 @@ export class SchemaType implements SchemaDef { name: "USER", attributes: [ { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("role_user") }] } - ] + ] as readonly AttributeApplication[] }, ADMIN: { name: "ADMIN", attributes: [ { name: "@map", args: [{ name: "name", value: ExpressionUtils.literal("role_admin") }] } - ] + ] as readonly AttributeApplication[] }, MODERATOR: { name: "MODERATOR" @@ -115,7 +115,7 @@ export class SchemaType implements SchemaDef { }, attributes: [ { name: "@@map", args: [{ name: "name", value: ExpressionUtils.literal("user_role") }] } - ] + ] as readonly AttributeApplication[] } } as const; authType = "User" as const; diff --git a/tests/e2e/orm/schemas/omit/schema.ts b/tests/e2e/orm/schemas/omit/schema.ts index 16ebb237c..02da796fe 100644 --- a/tests/e2e/orm/schemas/omit/schema.ts +++ b/tests/e2e/orm/schemas/omit/schema.ts @@ -5,7 +5,7 @@ /* eslint-disable */ -import { type SchemaDef, ExpressionUtils } from "@zenstackhq/schema"; +import { type SchemaDef, type AttributeApplication, ExpressionUtils } from "@zenstackhq/schema"; export class SchemaType implements SchemaDef { provider = { type: "sqlite" @@ -18,7 +18,7 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }] + attributes: [{ name: "@id" }] as readonly AttributeApplication[] }, name: { name: "name", @@ -28,7 +28,7 @@ export class SchemaType implements SchemaDef { name: "password", type: "String", omit: true, - attributes: [{ name: "@omit" }] + attributes: [{ name: "@omit" }] as readonly AttributeApplication[] }, posts: { name: "posts", @@ -49,7 +49,7 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }] + attributes: [{ name: "@id" }] as readonly AttributeApplication[] }, title: { name: "title", @@ -58,7 +58,7 @@ export class SchemaType implements SchemaDef { author: { name: "author", type: "User", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("authorId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("authorId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "posts", fields: ["authorId"], references: ["id"], onDelete: "Cascade" } }, authorId: { @@ -66,7 +66,7 @@ export class SchemaType implements SchemaDef { type: "Int", foreignKeyFor: [ "author" - ] + ] as readonly string[] } }, idFields: ["id"], @@ -81,7 +81,7 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }] + attributes: [{ name: "@id" }] as readonly AttributeApplication[] }, type: { name: "type", @@ -91,7 +91,7 @@ export class SchemaType implements SchemaDef { }, attributes: [ { name: "@@delegate", args: [{ name: "discriminator", value: ExpressionUtils.field("type") }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "Int" } @@ -107,7 +107,7 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }] + attributes: [{ name: "@id" }] as readonly AttributeApplication[] }, type: { name: "type", @@ -123,7 +123,7 @@ export class SchemaType implements SchemaDef { name: "content", type: "String", omit: true, - attributes: [{ name: "@omit" }] + attributes: [{ name: "@omit" }] as readonly AttributeApplication[] } }, idFields: ["id"], diff --git a/tests/e2e/orm/schemas/petstore/schema.ts b/tests/e2e/orm/schemas/petstore/schema.ts index 93831438c..113596a6b 100644 --- a/tests/e2e/orm/schemas/petstore/schema.ts +++ b/tests/e2e/orm/schemas/petstore/schema.ts @@ -5,7 +5,7 @@ /* eslint-disable */ -import { type SchemaDef, ExpressionUtils } from "@zenstackhq/schema"; +import { type SchemaDef, type AttributeApplication, type FieldDefault, ExpressionUtils } from "@zenstackhq/schema"; export class SchemaType implements SchemaDef { provider = { type: "sqlite" @@ -18,14 +18,14 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, email: { name: "email", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, orders: { name: "orders", @@ -37,7 +37,7 @@ export class SchemaType implements SchemaDef { attributes: [ { name: "@@allow", args: [{ name: "operation", value: ExpressionUtils.literal("create") }, { name: "condition", value: ExpressionUtils.literal(true) }] }, { name: "@@allow", args: [{ name: "operation", value: ExpressionUtils.literal("read") }, { name: "condition", value: ExpressionUtils.literal(true) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -51,20 +51,20 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, name: { name: "name", @@ -78,7 +78,7 @@ export class SchemaType implements SchemaDef { name: "order", type: "Order", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("orderId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("orderId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }] }] as readonly AttributeApplication[], relation: { opposite: "pets", fields: ["orderId"], references: ["id"] } }, orderId: { @@ -87,14 +87,14 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "order" - ] + ] as readonly string[] } }, attributes: [ { name: "@@allow", args: [{ name: "operation", value: ExpressionUtils.literal("read") }, { name: "condition", value: ExpressionUtils.binary(ExpressionUtils.binary(ExpressionUtils.field("orderId"), "==", ExpressionUtils._null()), "||", ExpressionUtils.binary(ExpressionUtils.member(ExpressionUtils.field("order"), ["user"]), "==", ExpressionUtils.call("auth"))) }] }, { name: "@@allow", args: [{ name: "operation", value: ExpressionUtils.literal("update") }, { name: "condition", value: ExpressionUtils.binary(ExpressionUtils.call("auth"), "!=", ExpressionUtils._null()) }] }, { name: "@@allow", args: [{ name: "operation", value: ExpressionUtils.literal("post-update") }, { name: "condition", value: ExpressionUtils.binary(ExpressionUtils.binary(ExpressionUtils.binary(ExpressionUtils.member(ExpressionUtils.call("before"), ["name"]), "==", ExpressionUtils.field("name")), "&&", ExpressionUtils.binary(ExpressionUtils.member(ExpressionUtils.call("before"), ["category"]), "==", ExpressionUtils.field("category"))), "&&", ExpressionUtils.binary(ExpressionUtils.member(ExpressionUtils.call("before"), ["orderId"]), "==", ExpressionUtils._null())) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" } @@ -107,20 +107,20 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, pets: { name: "pets", @@ -131,7 +131,7 @@ export class SchemaType implements SchemaDef { user: { name: "user", type: "User", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }] }] as readonly AttributeApplication[], relation: { opposite: "orders", fields: ["userId"], references: ["id"] } }, userId: { @@ -139,12 +139,12 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "user" - ] + ] as readonly string[] } }, attributes: [ { name: "@@allow", args: [{ name: "operation", value: ExpressionUtils.literal("read,create") }, { name: "condition", value: ExpressionUtils.binary(ExpressionUtils.call("auth"), "==", ExpressionUtils.field("user")) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" } diff --git a/tests/e2e/orm/schemas/procedures/schema.ts b/tests/e2e/orm/schemas/procedures/schema.ts index 3d469965c..b8261afe2 100644 --- a/tests/e2e/orm/schemas/procedures/schema.ts +++ b/tests/e2e/orm/schemas/procedures/schema.ts @@ -5,7 +5,7 @@ /* eslint-disable */ -import { type SchemaDef, ExpressionUtils } from "@zenstackhq/schema"; +import { type SchemaDef, type AttributeApplication, type FieldDefault, ExpressionUtils } from "@zenstackhq/schema"; export class SchemaType implements SchemaDef { provider = { type: "sqlite" @@ -18,20 +18,20 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, name: { name: "name", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, role: { name: "role", type: "Role", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("USER") }] }], - default: "USER" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("USER") }] }] as readonly AttributeApplication[], + default: "USER" as FieldDefault } }, idFields: ["id"], diff --git a/tests/e2e/orm/schemas/todo/schema.ts b/tests/e2e/orm/schemas/todo/schema.ts index d64b7d78b..901cdc5c8 100644 --- a/tests/e2e/orm/schemas/todo/schema.ts +++ b/tests/e2e/orm/schemas/todo/schema.ts @@ -5,7 +5,7 @@ /* eslint-disable */ -import { type SchemaDef, ExpressionUtils } from "@zenstackhq/schema"; +import { type SchemaDef, type AttributeApplication, type FieldDefault, ExpressionUtils } from "@zenstackhq/schema"; export class SchemaType implements SchemaDef { provider = { type: "sqlite" @@ -18,37 +18,37 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("uuid") }] }], - default: ExpressionUtils.call("uuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("uuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("uuid") as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, name: { name: "name", type: "String", - attributes: [{ name: "@length", args: [{ name: "min", value: ExpressionUtils.literal(4) }, { name: "max", value: ExpressionUtils.literal(50) }] }] + attributes: [{ name: "@length", args: [{ name: "min", value: ExpressionUtils.literal(4) }, { name: "max", value: ExpressionUtils.literal(50) }] }] as readonly AttributeApplication[] }, slug: { name: "slug", type: "String", unique: true, - attributes: [{ name: "@unique" }, { name: "@length", args: [{ name: "min", value: ExpressionUtils.literal(4) }, { name: "max", value: ExpressionUtils.literal(16) }] }] + attributes: [{ name: "@unique" }, { name: "@length", args: [{ name: "min", value: ExpressionUtils.literal(4) }, { name: "max", value: ExpressionUtils.literal(16) }] }] as readonly AttributeApplication[] }, owner: { name: "owner", type: "User", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("ownerId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("ownerId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "ownedSpaces", fields: ["ownerId"], references: ["id"], onDelete: "Cascade" } }, ownerId: { @@ -57,7 +57,7 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "owner" - ] + ] as readonly string[] }, members: { name: "members", @@ -77,7 +77,7 @@ export class SchemaType implements SchemaDef { { name: "@@allow", args: [{ name: "operation", value: ExpressionUtils.literal("create") }, { name: "condition", value: ExpressionUtils.literal(true) }] }, { name: "@@allow", args: [{ name: "operation", value: ExpressionUtils.literal("read") }, { name: "condition", value: ExpressionUtils.binary(ExpressionUtils.field("members"), "?", ExpressionUtils.binary(ExpressionUtils.field("userId"), "==", ExpressionUtils.member(ExpressionUtils.call("auth"), ["id"]))) }] }, { name: "@@allow", args: [{ name: "operation", value: ExpressionUtils.literal("update,delete") }, { name: "condition", value: ExpressionUtils.binary(ExpressionUtils.field("members"), "?", ExpressionUtils.binary(ExpressionUtils.binary(ExpressionUtils.field("userId"), "==", ExpressionUtils.member(ExpressionUtils.call("auth"), ["id"])), "&&", ExpressionUtils.binary(ExpressionUtils.field("role"), "==", ExpressionUtils.literal("ADMIN")))) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -91,25 +91,25 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("uuid") }] }], - default: ExpressionUtils.call("uuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("uuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("uuid") as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, space: { name: "space", type: "Space", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("spaceId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("spaceId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "members", fields: ["spaceId"], references: ["id"], onDelete: "Cascade" } }, spaceId: { @@ -117,12 +117,12 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "space" - ] + ] as readonly string[] }, user: { name: "user", type: "User", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "spaces", fields: ["userId"], references: ["id"], onDelete: "Cascade" } }, userId: { @@ -130,7 +130,7 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "user" - ] + ] as readonly string[] }, role: { name: "role", @@ -142,7 +142,7 @@ export class SchemaType implements SchemaDef { { name: "@@deny", args: [{ name: "operation", value: ExpressionUtils.literal("all") }, { name: "condition", value: ExpressionUtils.binary(ExpressionUtils.call("auth"), "==", ExpressionUtils._null()) }] }, { name: "@@allow", args: [{ name: "operation", value: ExpressionUtils.literal("create,update,delete") }, { name: "condition", value: ExpressionUtils.binary(ExpressionUtils.binary(ExpressionUtils.member(ExpressionUtils.field("space"), ["ownerId"]), "==", ExpressionUtils.member(ExpressionUtils.call("auth"), ["id"])), "||", ExpressionUtils.binary(ExpressionUtils.member(ExpressionUtils.field("space"), ["members"]), "?", ExpressionUtils.binary(ExpressionUtils.binary(ExpressionUtils.field("userId"), "==", ExpressionUtils.member(ExpressionUtils.call("auth"), ["id"])), "&&", ExpressionUtils.binary(ExpressionUtils.field("role"), "==", ExpressionUtils.literal("ADMIN"))))) }] }, { name: "@@allow", args: [{ name: "operation", value: ExpressionUtils.literal("read") }, { name: "condition", value: ExpressionUtils.binary(ExpressionUtils.member(ExpressionUtils.field("space"), ["members"]), "?", ExpressionUtils.binary(ExpressionUtils.field("userId"), "==", ExpressionUtils.member(ExpressionUtils.call("auth"), ["id"]))) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -156,26 +156,26 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("uuid") }] }], - default: ExpressionUtils.call("uuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("uuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("uuid") as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, email: { name: "email", type: "String", unique: true, - attributes: [{ name: "@unique" }, { name: "@email" }] + attributes: [{ name: "@unique" }, { name: "@email" }] as readonly AttributeApplication[] }, password: { name: "password", @@ -208,7 +208,7 @@ export class SchemaType implements SchemaDef { name: "image", type: "String", optional: true, - attributes: [{ name: "@url" }] + attributes: [{ name: "@url" }] as readonly AttributeApplication[] }, lists: { name: "lists", @@ -227,7 +227,7 @@ export class SchemaType implements SchemaDef { { name: "@@allow", args: [{ name: "operation", value: ExpressionUtils.literal("create") }, { name: "condition", value: ExpressionUtils.literal(true) }] }, { name: "@@allow", args: [{ name: "operation", value: ExpressionUtils.literal("read") }, { name: "condition", value: ExpressionUtils.binary(ExpressionUtils.field("spaces"), "?", ExpressionUtils.binary(ExpressionUtils.member(ExpressionUtils.field("space"), ["members"]), "?", ExpressionUtils.binary(ExpressionUtils.field("userId"), "==", ExpressionUtils.member(ExpressionUtils.call("auth"), ["id"])))) }] }, { name: "@@allow", args: [{ name: "operation", value: ExpressionUtils.literal("all") }, { name: "condition", value: ExpressionUtils.binary(ExpressionUtils.member(ExpressionUtils.call("auth"), ["id"]), "==", ExpressionUtils.field("id")) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -241,25 +241,25 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("uuid") }] }], - default: ExpressionUtils.call("uuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("uuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("uuid") as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, space: { name: "space", type: "Space", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("spaceId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("spaceId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "lists", fields: ["spaceId"], references: ["id"], onDelete: "Cascade" } }, spaceId: { @@ -267,12 +267,12 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "space" - ] + ] as readonly string[] }, owner: { name: "owner", type: "User", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("ownerId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("ownerId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "lists", fields: ["ownerId"], references: ["id"], onDelete: "Cascade" } }, ownerId: { @@ -280,18 +280,18 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "owner" - ] + ] as readonly string[] }, title: { name: "title", type: "String", - attributes: [{ name: "@length", args: [{ name: "min", value: ExpressionUtils.literal(1) }, { name: "max", value: ExpressionUtils.literal(100) }] }] + attributes: [{ name: "@length", args: [{ name: "min", value: ExpressionUtils.literal(1) }, { name: "max", value: ExpressionUtils.literal(100) }] }] as readonly AttributeApplication[] }, private: { name: "private", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, todos: { name: "todos", @@ -302,8 +302,8 @@ export class SchemaType implements SchemaDef { revision: { name: "revision", type: "Int", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }], - default: 0 + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(0) }] }] as readonly AttributeApplication[], + default: 0 as FieldDefault } }, attributes: [ @@ -313,7 +313,7 @@ export class SchemaType implements SchemaDef { { name: "@@allow", args: [{ name: "operation", value: ExpressionUtils.literal("update") }, { name: "condition", value: ExpressionUtils.binary(ExpressionUtils.binary(ExpressionUtils.field("ownerId"), "==", ExpressionUtils.member(ExpressionUtils.call("auth"), ["id"])), "&&", ExpressionUtils.binary(ExpressionUtils.member(ExpressionUtils.field("space"), ["members"]), "?", ExpressionUtils.binary(ExpressionUtils.field("userId"), "==", ExpressionUtils.member(ExpressionUtils.call("auth"), ["id"])))) }] }, { name: "@@deny", args: [{ name: "operation", value: ExpressionUtils.literal("post-update") }, { name: "condition", value: ExpressionUtils.binary(ExpressionUtils.member(ExpressionUtils.call("before"), ["ownerId"]), "!=", ExpressionUtils.field("ownerId")) }] }, { name: "@@allow", args: [{ name: "operation", value: ExpressionUtils.literal("delete") }, { name: "condition", value: ExpressionUtils.binary(ExpressionUtils.field("ownerId"), "==", ExpressionUtils.member(ExpressionUtils.call("auth"), ["id"])) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" } @@ -326,25 +326,25 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("uuid") }] }], - default: ExpressionUtils.call("uuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("uuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("uuid") as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, owner: { name: "owner", type: "User", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("ownerId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("ownerId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "todos", fields: ["ownerId"], references: ["id"], onDelete: "Cascade" } }, ownerId: { @@ -352,12 +352,12 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "owner" - ] + ] as readonly string[] }, list: { name: "list", type: "List", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("listId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("listId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "todos", fields: ["listId"], references: ["id"], onDelete: "Cascade" } }, listId: { @@ -365,12 +365,12 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "list" - ] + ] as readonly string[] }, title: { name: "title", type: "String", - attributes: [{ name: "@length", args: [{ name: "min", value: ExpressionUtils.literal(1) }, { name: "max", value: ExpressionUtils.literal(100) }] }] + attributes: [{ name: "@length", args: [{ name: "min", value: ExpressionUtils.literal(1) }, { name: "max", value: ExpressionUtils.literal(100) }] }] as readonly AttributeApplication[] }, completedAt: { name: "completedAt", @@ -383,7 +383,7 @@ export class SchemaType implements SchemaDef { { name: "@@allow", args: [{ name: "operation", value: ExpressionUtils.literal("all") }, { name: "condition", value: ExpressionUtils.binary(ExpressionUtils.member(ExpressionUtils.field("list"), ["ownerId"]), "==", ExpressionUtils.member(ExpressionUtils.call("auth"), ["id"])) }] }, { name: "@@allow", args: [{ name: "operation", value: ExpressionUtils.literal("all") }, { name: "condition", value: ExpressionUtils.binary(ExpressionUtils.binary(ExpressionUtils.member(ExpressionUtils.field("list"), ["space", "members"]), "?", ExpressionUtils.binary(ExpressionUtils.field("userId"), "==", ExpressionUtils.member(ExpressionUtils.call("auth"), ["id"]))), "&&", ExpressionUtils.unary("!", ExpressionUtils.member(ExpressionUtils.field("list"), ["private"]))) }] }, { name: "@@deny", args: [{ name: "operation", value: ExpressionUtils.literal("post-update") }, { name: "condition", value: ExpressionUtils.binary(ExpressionUtils.member(ExpressionUtils.call("before"), ["ownerId"]), "!=", ExpressionUtils.field("ownerId")) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" } diff --git a/tests/e2e/orm/schemas/typed-json/schema.ts b/tests/e2e/orm/schemas/typed-json/schema.ts index 7c9f6a1d1..7bb3cc55c 100644 --- a/tests/e2e/orm/schemas/typed-json/schema.ts +++ b/tests/e2e/orm/schemas/typed-json/schema.ts @@ -5,7 +5,7 @@ /* eslint-disable */ -import { type SchemaDef, ExpressionUtils } from "@zenstackhq/schema"; +import { type SchemaDef, type AttributeApplication, type FieldDefault, ExpressionUtils } from "@zenstackhq/schema"; export class SchemaType implements SchemaDef { provider = { type: "sqlite" @@ -18,13 +18,13 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, profile: { name: "profile", type: "Profile", - attributes: [{ name: "@json" }] + attributes: [{ name: "@json" }] as readonly AttributeApplication[] } }, idFields: ["id"], diff --git a/tests/e2e/orm/schemas/typing/schema.ts b/tests/e2e/orm/schemas/typing/schema.ts index 42789446c..4c01c01b1 100644 --- a/tests/e2e/orm/schemas/typing/schema.ts +++ b/tests/e2e/orm/schemas/typing/schema.ts @@ -5,7 +5,7 @@ /* eslint-disable */ -import { type SchemaDef, ExpressionUtils } from "@zenstackhq/schema"; +import { type SchemaDef, type AttributeApplication, type FieldDefault, ExpressionUtils } from "@zenstackhq/schema"; export class SchemaType implements SchemaDef { provider = { type: "postgresql" @@ -18,20 +18,20 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, createdAt: { name: "createdAt", type: "DateTime", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }], - default: ExpressionUtils.call("now") + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.call("now") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("now") as FieldDefault }, updatedAt: { name: "updatedAt", type: "DateTime", updatedAt: true, - attributes: [{ name: "@updatedAt" }] + attributes: [{ name: "@updatedAt" }] as readonly AttributeApplication[] }, name: { name: "name", @@ -41,13 +41,13 @@ export class SchemaType implements SchemaDef { name: "email", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, role: { name: "role", type: "Role", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("USER") }] }], - default: "USER" + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal("USER") }] }] as readonly AttributeApplication[], + default: "USER" as FieldDefault }, status: { name: "status", @@ -69,14 +69,14 @@ export class SchemaType implements SchemaDef { postCount: { name: "postCount", type: "Int", - attributes: [{ name: "@computed" }], + attributes: [{ name: "@computed" }] as readonly AttributeApplication[], computed: true }, identity: { name: "identity", type: "Identity", optional: true, - attributes: [{ name: "@json" }] + attributes: [{ name: "@json" }] as readonly AttributeApplication[] } }, idFields: ["id"], @@ -99,8 +99,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, title: { name: "title", @@ -113,7 +113,7 @@ export class SchemaType implements SchemaDef { author: { name: "author", type: "User", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("authorId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("authorId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }] }] as readonly AttributeApplication[], relation: { opposite: "posts", fields: ["authorId"], references: ["id"] } }, authorId: { @@ -121,7 +121,7 @@ export class SchemaType implements SchemaDef { type: "Int", foreignKeyFor: [ "author" - ] + ] as readonly string[] }, tags: { name: "tags", @@ -148,8 +148,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, age: { name: "age", @@ -159,7 +159,7 @@ export class SchemaType implements SchemaDef { name: "region", type: "Region", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("regionCountry"), ExpressionUtils.field("regionCity")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("country"), ExpressionUtils.field("city")]) }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("regionCountry"), ExpressionUtils.field("regionCity")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("country"), ExpressionUtils.field("city")]) }] }] as readonly AttributeApplication[], relation: { opposite: "profiles", fields: ["regionCountry", "regionCity"], references: ["country", "city"] } }, regionCountry: { @@ -168,7 +168,7 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "region" - ] + ] as readonly string[] }, regionCity: { name: "regionCity", @@ -176,22 +176,22 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "region" - ] + ] as readonly string[] }, user: { name: "user", type: "User", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }] }] as readonly AttributeApplication[], relation: { opposite: "profile", fields: ["userId"], references: ["id"] } }, userId: { name: "userId", type: "Int", unique: true, - attributes: [{ name: "@unique" }], + attributes: [{ name: "@unique" }] as readonly AttributeApplication[], foreignKeyFor: [ "user" - ] + ] as readonly string[] } }, idFields: ["id"], @@ -207,8 +207,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, name: { name: "name", @@ -253,7 +253,7 @@ export class SchemaType implements SchemaDef { }, attributes: [ { name: "@@id", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("country"), ExpressionUtils.field("city")]) }] } - ], + ] as readonly AttributeApplication[], idFields: ["country", "city"], uniqueFields: { country_city: { country: { type: "String" }, city: { type: "String" } } @@ -266,8 +266,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, reviewed: { name: "reviewed", @@ -280,17 +280,17 @@ export class SchemaType implements SchemaDef { post: { name: "post", type: "Post", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("postId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("postId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }] }] as readonly AttributeApplication[], relation: { opposite: "meta", fields: ["postId"], references: ["id"] } }, postId: { name: "postId", type: "Int", unique: true, - attributes: [{ name: "@unique" }], + attributes: [{ name: "@unique" }] as readonly AttributeApplication[], foreignKeyFor: [ "post" - ] + ] as readonly string[] } }, idFields: ["id"], diff --git a/tests/regression/test/issue-204/schema.ts b/tests/regression/test/issue-204/schema.ts index aeb22070f..4424b8d8b 100644 --- a/tests/regression/test/issue-204/schema.ts +++ b/tests/regression/test/issue-204/schema.ts @@ -5,7 +5,7 @@ /* eslint-disable */ -import { type SchemaDef } from "@zenstackhq/schema"; +import { type SchemaDef, type AttributeApplication } from "@zenstackhq/schema"; export class SchemaType implements SchemaDef { provider = { type: "sqlite" @@ -18,12 +18,12 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }] + attributes: [{ name: "@id" }] as readonly AttributeApplication[] }, config: { name: "config", type: "Configuration", - attributes: [{ name: "@json" }] + attributes: [{ name: "@json" }] as readonly AttributeApplication[] } }, idFields: ["id"], diff --git a/tests/regression/test/issue-422/schema.ts b/tests/regression/test/issue-422/schema.ts index 04cf0c85c..a95de6fca 100644 --- a/tests/regression/test/issue-422/schema.ts +++ b/tests/regression/test/issue-422/schema.ts @@ -5,7 +5,7 @@ /* eslint-disable */ -import { type SchemaDef, ExpressionUtils } from "@zenstackhq/schema"; +import { type SchemaDef, type AttributeApplication, type FieldDefault, ExpressionUtils } from "@zenstackhq/schema"; export class SchemaType implements SchemaDef { provider = { type: "sqlite" @@ -18,7 +18,7 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }] + attributes: [{ name: "@id" }] as readonly AttributeApplication[] }, token: { name: "token", @@ -29,18 +29,18 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "user" - ] + ] as readonly string[] }, user: { name: "user", type: "User", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "sessions", fields: ["userId"], references: ["id"], onDelete: "Cascade" } } }, attributes: [ { name: "@@auth" } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" } @@ -53,8 +53,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("uuid") }] }], - default: ExpressionUtils.call("uuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("uuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("uuid") as FieldDefault }, sessions: { name: "sessions", @@ -81,8 +81,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("uuid") }] }], - default: ExpressionUtils.call("uuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("uuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("uuid") as FieldDefault }, name: { name: "name", @@ -93,15 +93,15 @@ export class SchemaType implements SchemaDef { name: "userId", type: "String", unique: true, - attributes: [{ name: "@unique" }], + attributes: [{ name: "@unique" }] as readonly AttributeApplication[], foreignKeyFor: [ "user" - ] + ] as readonly string[] }, user: { name: "user", type: "User", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("userId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "profile", fields: ["userId"], references: ["id"], onDelete: "Cascade" } } }, diff --git a/tests/regression/test/issue-503/schema.ts b/tests/regression/test/issue-503/schema.ts index 6bbfeac03..afc6dc04d 100644 --- a/tests/regression/test/issue-503/schema.ts +++ b/tests/regression/test/issue-503/schema.ts @@ -5,7 +5,7 @@ /* eslint-disable */ -import { type SchemaDef, ExpressionUtils } from "@zenstackhq/schema"; +import { type SchemaDef, type AttributeApplication, type FieldDefault, ExpressionUtils } from "@zenstackhq/schema"; export class SchemaType implements SchemaDef { provider = { type: "sqlite" @@ -18,8 +18,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, messages: { name: "messages", @@ -40,13 +40,13 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, chat: { name: "chat", type: "InternalChat", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("chatId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("chatId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }] }] as readonly AttributeApplication[], relation: { opposite: "messages", fields: ["chatId"], references: ["id"] } }, chatId: { @@ -54,13 +54,13 @@ export class SchemaType implements SchemaDef { type: "Int", foreignKeyFor: [ "chat" - ] + ] as readonly string[] }, media: { name: "media", type: "Media", optional: true, - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("mediaId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("mediaId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }] }] as readonly AttributeApplication[], relation: { opposite: "messages", fields: ["mediaId"], references: ["id"] } }, mediaId: { @@ -69,7 +69,7 @@ export class SchemaType implements SchemaDef { optional: true, foreignKeyFor: [ "media" - ] + ] as readonly string[] } }, idFields: ["id"], @@ -84,8 +84,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "Int", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], - default: ExpressionUtils.call("autoincrement") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("autoincrement") as FieldDefault }, type: { name: "type", diff --git a/tests/runtimes/bun/schemas/schema.ts b/tests/runtimes/bun/schemas/schema.ts index 8207633d9..64aa70864 100644 --- a/tests/runtimes/bun/schemas/schema.ts +++ b/tests/runtimes/bun/schemas/schema.ts @@ -5,7 +5,7 @@ /* eslint-disable */ -import { type SchemaDef, ExpressionUtils } from "@zenstackhq/schema"; +import { type SchemaDef, type AttributeApplication, type FieldDefault, ExpressionUtils } from "@zenstackhq/schema"; export class SchemaType implements SchemaDef { provider = { type: "sqlite" @@ -18,14 +18,14 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, email: { name: "email", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, name: { name: "name", @@ -42,7 +42,7 @@ export class SchemaType implements SchemaDef { attributes: [ { name: "@@allow", args: [{ name: "operation", value: ExpressionUtils.literal("all") }, { name: "condition", value: ExpressionUtils.binary(ExpressionUtils.member(ExpressionUtils.call("auth"), ["id"]), "==", ExpressionUtils.field("id")) }] }, { name: "@@allow", args: [{ name: "operation", value: ExpressionUtils.literal("read") }, { name: "condition", value: ExpressionUtils.binary(ExpressionUtils.call("auth"), "!=", ExpressionUtils._null()) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -56,8 +56,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, title: { name: "title", @@ -66,13 +66,13 @@ export class SchemaType implements SchemaDef { published: { name: "published", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, author: { name: "author", type: "User", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("authorId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("authorId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "posts", fields: ["authorId"], references: ["id"], onUpdate: "Cascade", onDelete: "Cascade" } }, authorId: { @@ -80,14 +80,14 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "author" - ] + ] as readonly string[] } }, attributes: [ { name: "@@deny", args: [{ name: "operation", value: ExpressionUtils.literal("all") }, { name: "condition", value: ExpressionUtils.binary(ExpressionUtils.call("auth"), "==", ExpressionUtils._null()) }] }, { name: "@@allow", args: [{ name: "operation", value: ExpressionUtils.literal("all") }, { name: "condition", value: ExpressionUtils.binary(ExpressionUtils.member(ExpressionUtils.call("auth"), ["id"]), "==", ExpressionUtils.field("authorId")) }] }, { name: "@@allow", args: [{ name: "operation", value: ExpressionUtils.literal("read") }, { name: "condition", value: ExpressionUtils.field("published") }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" } diff --git a/tests/runtimes/edge-runtime/schemas/schema.ts b/tests/runtimes/edge-runtime/schemas/schema.ts index cf2521709..81947757f 100644 --- a/tests/runtimes/edge-runtime/schemas/schema.ts +++ b/tests/runtimes/edge-runtime/schemas/schema.ts @@ -5,7 +5,7 @@ /* eslint-disable */ -import { type SchemaDef, ExpressionUtils } from "@zenstackhq/schema"; +import { type SchemaDef, type AttributeApplication, type FieldDefault, ExpressionUtils } from "@zenstackhq/schema"; export class SchemaType implements SchemaDef { provider = { type: "postgresql" @@ -18,14 +18,14 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, email: { name: "email", type: "String", unique: true, - attributes: [{ name: "@unique" }] + attributes: [{ name: "@unique" }] as readonly AttributeApplication[] }, name: { name: "name", @@ -42,7 +42,7 @@ export class SchemaType implements SchemaDef { attributes: [ { name: "@@allow", args: [{ name: "operation", value: ExpressionUtils.literal("all") }, { name: "condition", value: ExpressionUtils.binary(ExpressionUtils.member(ExpressionUtils.call("auth"), ["id"]), "==", ExpressionUtils.field("id")) }] }, { name: "@@allow", args: [{ name: "operation", value: ExpressionUtils.literal("read") }, { name: "condition", value: ExpressionUtils.binary(ExpressionUtils.call("auth"), "!=", ExpressionUtils._null()) }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" }, @@ -56,8 +56,8 @@ export class SchemaType implements SchemaDef { name: "id", type: "String", id: true, - attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }], - default: ExpressionUtils.call("cuid") + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("cuid") }] }] as readonly AttributeApplication[], + default: ExpressionUtils.call("cuid") as FieldDefault }, title: { name: "title", @@ -66,13 +66,13 @@ export class SchemaType implements SchemaDef { published: { name: "published", type: "Boolean", - attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }], - default: false + attributes: [{ name: "@default", args: [{ name: "value", value: ExpressionUtils.literal(false) }] }] as readonly AttributeApplication[], + default: false as FieldDefault }, author: { name: "author", type: "User", - attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("authorId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }], + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("String", [ExpressionUtils.field("authorId")]) }, { name: "references", value: ExpressionUtils.array("String", [ExpressionUtils.field("id")]) }, { name: "onUpdate", value: ExpressionUtils.literal("Cascade") }, { name: "onDelete", value: ExpressionUtils.literal("Cascade") }] }] as readonly AttributeApplication[], relation: { opposite: "posts", fields: ["authorId"], references: ["id"], onUpdate: "Cascade", onDelete: "Cascade" } }, authorId: { @@ -80,14 +80,14 @@ export class SchemaType implements SchemaDef { type: "String", foreignKeyFor: [ "author" - ] + ] as readonly string[] } }, attributes: [ { name: "@@deny", args: [{ name: "operation", value: ExpressionUtils.literal("all") }, { name: "condition", value: ExpressionUtils.binary(ExpressionUtils.call("auth"), "==", ExpressionUtils._null()) }] }, { name: "@@allow", args: [{ name: "operation", value: ExpressionUtils.literal("all") }, { name: "condition", value: ExpressionUtils.binary(ExpressionUtils.member(ExpressionUtils.call("auth"), ["id"]), "==", ExpressionUtils.field("authorId")) }] }, { name: "@@allow", args: [{ name: "operation", value: ExpressionUtils.literal("read") }, { name: "condition", value: ExpressionUtils.field("published") }] } - ], + ] as readonly AttributeApplication[], idFields: ["id"], uniqueFields: { id: { type: "String" } From d25c934afe939795248c6078eadafa434c6109b5 Mon Sep 17 00:00:00 2001 From: ymc9 <104139426+ymc9@users.noreply.github.com> Date: Thu, 12 Mar 2026 20:02:42 -0700 Subject: [PATCH 08/41] fix test --- tests/e2e/orm/client-api/diagnostics.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/e2e/orm/client-api/diagnostics.test.ts b/tests/e2e/orm/client-api/diagnostics.test.ts index 7203823ba..5b388b3ea 100644 --- a/tests/e2e/orm/client-api/diagnostics.test.ts +++ b/tests/e2e/orm/client-api/diagnostics.test.ts @@ -160,7 +160,7 @@ describe('Client $diagnostics tests', () => { } const diagnostics = await client.$diagnostics(); - expect(diagnostics.slowQueries.length).toBe(5); + expect(diagnostics.slowQueries.length).toBeGreaterThanOrEqual(5); } finally { await client.$disconnect(); } From 14b55e32b79700eb321a580f2f9354b30e45ce67 Mon Sep 17 00:00:00 2001 From: ymc9 <104139426+ymc9@users.noreply.github.com> Date: Thu, 12 Mar 2026 21:31:37 -0700 Subject: [PATCH 09/41] add `startedAt` field to query info --- packages/orm/src/client/diagnostics.ts | 5 +++++ .../client/executor/zenstack-query-executor.ts | 17 ++++++++++------- tests/e2e/orm/client-api/diagnostics.test.ts | 2 ++ 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/packages/orm/src/client/diagnostics.ts b/packages/orm/src/client/diagnostics.ts index c1e290121..1493b17b6 100644 --- a/packages/orm/src/client/diagnostics.ts +++ b/packages/orm/src/client/diagnostics.ts @@ -17,6 +17,11 @@ export interface ZodCacheStats { * Information about a query, used for diagnostics. */ export interface QueryInfo { + /** + * Time when the query started. + */ + startedAt: Date; + /** * Duration of the query in milliseconds. */ diff --git a/packages/orm/src/client/executor/zenstack-query-executor.ts b/packages/orm/src/client/executor/zenstack-query-executor.ts index 59b37ae1e..efa45c143 100644 --- a/packages/orm/src/client/executor/zenstack-query-executor.ts +++ b/packages/orm/src/client/executor/zenstack-query-executor.ts @@ -676,13 +676,14 @@ In such cases, ZenStack cannot reliably determine the IDs of the mutated entitie } const trackSlowQuery = this.options.diagnostics !== undefined; - const startTime = trackSlowQuery ? performance.now() : undefined; + const startTimestamp = trackSlowQuery ? performance.now() : undefined; + const startedAt = trackSlowQuery ? new Date() : undefined; try { const result = await connection.executeQuery(compiledQuery); - if (startTime !== undefined) { - this.trackSlowQuery(compiledQuery, startTime); + if (startTimestamp !== undefined) { + this.trackSlowQuery(compiledQuery, startTimestamp, startedAt!); } return this.ensureProperQueryResult(compiledQuery.query, result); @@ -696,8 +697,8 @@ In such cases, ZenStack cannot reliably determine the IDs of the mutated entitie } } - private trackSlowQuery(compiledQuery: CompiledQuery, startTime: number) { - const durationMs = performance.now() - startTime; + private trackSlowQuery(compiledQuery: CompiledQuery, startTimestamp: number, startedAt: Date) { + const durationMs = performance.now() - startTimestamp; const thresholdMs = this.options.diagnostics?.slowQueryThresholdMs; if (thresholdMs === undefined || durationMs < thresholdMs) { return; @@ -709,6 +710,8 @@ In such cases, ZenStack cannot reliably determine the IDs of the mutated entitie return; } + const queryInfo = { startedAt, durationMs, sql: compiledQuery.sql }; + if (slowQueries.length >= maxRecords) { // find and remove the entry with the lowest duration let minIndex = 0; @@ -719,10 +722,10 @@ In such cases, ZenStack cannot reliably determine the IDs of the mutated entitie } // only replace if the new query is slower than the minimum if (durationMs > slowQueries[minIndex]!.durationMs) { - slowQueries[minIndex] = { durationMs, sql: compiledQuery.sql }; + slowQueries[minIndex] = queryInfo; } } else { - slowQueries.push({ durationMs, sql: compiledQuery.sql }); + slowQueries.push(queryInfo); } } diff --git a/tests/e2e/orm/client-api/diagnostics.test.ts b/tests/e2e/orm/client-api/diagnostics.test.ts index 5b388b3ea..60131295e 100644 --- a/tests/e2e/orm/client-api/diagnostics.test.ts +++ b/tests/e2e/orm/client-api/diagnostics.test.ts @@ -51,6 +51,7 @@ describe('Client $diagnostics tests', () => { const diagnostics = await client.$diagnostics(); expect(diagnostics.slowQueries.length).toBeGreaterThan(0); for (const query of diagnostics.slowQueries) { + expect(query.startedAt).toBeInstanceOf(Date); expect(query.durationMs).toBeGreaterThanOrEqual(0); expect(query.sql).toBeTruthy(); } @@ -182,6 +183,7 @@ describe('Client $diagnostics tests', () => { const diagnostics = await client.$diagnostics(); expect(diagnostics.slowQueries.length).toBeLessThanOrEqual(maxRecords); for (const query of diagnostics.slowQueries) { + expect(query.startedAt).toBeInstanceOf(Date); expect(query.durationMs).toBeGreaterThanOrEqual(0); expect(query.sql).toBeTruthy(); } From c96bdbaf6ed4f50b35425bea1c89ccb3bd712500 Mon Sep 17 00:00:00 2001 From: ymc9 <104139426+ymc9@users.noreply.github.com> Date: Thu, 12 Mar 2026 21:35:50 -0700 Subject: [PATCH 10/41] address PR comments --- packages/sdk/src/ts-schema-generator.ts | 10 +++++----- samples/next.js/zenstack/schema-lite.ts | 2 +- samples/nuxt/zenstack/schema-lite.ts | 2 +- samples/sveltekit/src/zenstack/schema-lite.ts | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/packages/sdk/src/ts-schema-generator.ts b/packages/sdk/src/ts-schema-generator.ts index be5483003..fda31fe97 100644 --- a/packages/sdk/src/ts-schema-generator.ts +++ b/packages/sdk/src/ts-schema-generator.ts @@ -70,11 +70,6 @@ export class TsSchemaGenerator { async generate(model: Model, options: TsSchemaGeneratorOptions) { fs.mkdirSync(options.outDir, { recursive: true }); - // Reset the flags for each generation - this.usedExpressionUtils = false; - this.usedAttributeApplication = false; - this.usedFieldDefault = false; - // the schema itself this.generateSchema(model, options); @@ -99,6 +94,11 @@ export class TsSchemaGenerator { } for (const { lite, file } of targets) { + // Reset per-target import flags so each target tracks its own usage + this.usedExpressionUtils = false; + this.usedAttributeApplication = false; + this.usedFieldDefault = false; + const statements: ts.Statement[] = []; this.generateSchemaStatements(model, statements, lite); this.generateBannerComments(statements); diff --git a/samples/next.js/zenstack/schema-lite.ts b/samples/next.js/zenstack/schema-lite.ts index 895455c0c..78e36b195 100644 --- a/samples/next.js/zenstack/schema-lite.ts +++ b/samples/next.js/zenstack/schema-lite.ts @@ -5,7 +5,7 @@ /* eslint-disable */ -import { type SchemaDef, type AttributeApplication, type FieldDefault, ExpressionUtils } from "@zenstackhq/schema"; +import { type SchemaDef, type FieldDefault, ExpressionUtils } from "@zenstackhq/schema"; export class SchemaType implements SchemaDef { provider = { type: "sqlite" diff --git a/samples/nuxt/zenstack/schema-lite.ts b/samples/nuxt/zenstack/schema-lite.ts index 895455c0c..78e36b195 100644 --- a/samples/nuxt/zenstack/schema-lite.ts +++ b/samples/nuxt/zenstack/schema-lite.ts @@ -5,7 +5,7 @@ /* eslint-disable */ -import { type SchemaDef, type AttributeApplication, type FieldDefault, ExpressionUtils } from "@zenstackhq/schema"; +import { type SchemaDef, type FieldDefault, ExpressionUtils } from "@zenstackhq/schema"; export class SchemaType implements SchemaDef { provider = { type: "sqlite" diff --git a/samples/sveltekit/src/zenstack/schema-lite.ts b/samples/sveltekit/src/zenstack/schema-lite.ts index 895455c0c..78e36b195 100644 --- a/samples/sveltekit/src/zenstack/schema-lite.ts +++ b/samples/sveltekit/src/zenstack/schema-lite.ts @@ -5,7 +5,7 @@ /* eslint-disable */ -import { type SchemaDef, type AttributeApplication, type FieldDefault, ExpressionUtils } from "@zenstackhq/schema"; +import { type SchemaDef, type FieldDefault, ExpressionUtils } from "@zenstackhq/schema"; export class SchemaType implements SchemaDef { provider = { type: "sqlite" From e50ced474af8659c7381dc65b119d1376cb48dbe Mon Sep 17 00:00:00 2001 From: ymc9 <104139426+ymc9@users.noreply.github.com> Date: Fri, 13 Mar 2026 09:40:55 -0700 Subject: [PATCH 11/41] fix(orm): diagnostics should return slow queries sorted by duration --- packages/orm/src/client/client-impl.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/orm/src/client/client-impl.ts b/packages/orm/src/client/client-impl.ts index 810ab077b..0a066ee73 100644 --- a/packages/orm/src/client/client-impl.ts +++ b/packages/orm/src/client/client-impl.ts @@ -443,7 +443,7 @@ export class ClientImpl { async $diagnostics(): Promise { return { zodCache: this.inputValidator.zodFactory.cacheStats, - slowQueries: this.slowQueries.map((q) => ({ ...q })), + slowQueries: this.slowQueries.map((q) => ({ ...q })).sort((a, b) => b.durationMs - a.durationMs), }; } From 031701b8c582679ef1e719b70c9ce855caab787b Mon Sep 17 00:00:00 2001 From: ymc9 <104139426+ymc9@users.noreply.github.com> Date: Fri, 13 Mar 2026 10:09:01 -0700 Subject: [PATCH 12/41] fix: change $diagnostics to a property --- packages/orm/src/client/client-impl.ts | 6 +++--- packages/orm/src/client/contract.ts | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/orm/src/client/client-impl.ts b/packages/orm/src/client/client-impl.ts index 0a066ee73..3184b0237 100644 --- a/packages/orm/src/client/client-impl.ts +++ b/packages/orm/src/client/client-impl.ts @@ -440,11 +440,11 @@ export class ClientImpl { return this.$setOptions(newOptions); } - async $diagnostics(): Promise { - return { + get $diagnostics(): Promise { + return Promise.resolve({ zodCache: this.inputValidator.zodFactory.cacheStats, slowQueries: this.slowQueries.map((q) => ({ ...q })).sort((a, b) => b.durationMs - a.durationMs), - }; + }); } $executeRaw(query: TemplateStringsArray, ...values: any[]) { diff --git a/packages/orm/src/client/contract.ts b/packages/orm/src/client/contract.ts index b0828f429..0b2abebc0 100644 --- a/packages/orm/src/client/contract.ts +++ b/packages/orm/src/client/contract.ts @@ -216,7 +216,7 @@ export type ClientContract< /** * Returns diagnostics information such as cache and slow query statistics. */ - $diagnostics(): Promise; + get $diagnostics(): Promise; } & { [Key in GetSlicedModels as Uncapitalize]: ModelOperations; } & ProcedureOperations & From 23c86ad34492671a192d18994a33dd79f18b9c06 Mon Sep 17 00:00:00 2001 From: ymc9 <104139426+ymc9@users.noreply.github.com> Date: Fri, 13 Mar 2026 10:23:12 -0700 Subject: [PATCH 13/41] update test --- tests/e2e/orm/client-api/diagnostics.test.ts | 26 ++++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/tests/e2e/orm/client-api/diagnostics.test.ts b/tests/e2e/orm/client-api/diagnostics.test.ts index 60131295e..dbed2eeba 100644 --- a/tests/e2e/orm/client-api/diagnostics.test.ts +++ b/tests/e2e/orm/client-api/diagnostics.test.ts @@ -7,7 +7,7 @@ describe('Client $diagnostics tests', () => { it('returns zod cache stats', async () => { const client = await createTestClient(schema); try { - const diagnostics = await client.$diagnostics(); + const diagnostics = await client.$diagnostics; expect(diagnostics.zodCache).toEqual({ size: 0, keys: [] }); } finally { await client.$disconnect(); @@ -18,7 +18,7 @@ describe('Client $diagnostics tests', () => { const client = await createTestClient(schema); try { await client.user.create({ data: { email: 'u1@test.com' } }); - const diagnostics = await client.$diagnostics(); + const diagnostics = await client.$diagnostics; expect(diagnostics.zodCache.size).toBeGreaterThan(0); expect(diagnostics.zodCache.keys.length).toBe(diagnostics.zodCache.size); } finally { @@ -31,7 +31,7 @@ describe('Client $diagnostics tests', () => { try { await client.user.create({ data: { email: 'u1@test.com' } }); await client.user.findMany(); - const diagnostics = await client.$diagnostics(); + const diagnostics = await client.$diagnostics; expect(diagnostics.slowQueries).toEqual([]); } finally { await client.$disconnect(); @@ -48,7 +48,7 @@ describe('Client $diagnostics tests', () => { await client.user.create({ data: { email: 'u1@test.com' } }); await client.user.findMany(); - const diagnostics = await client.$diagnostics(); + const diagnostics = await client.$diagnostics; expect(diagnostics.slowQueries.length).toBeGreaterThan(0); for (const query of diagnostics.slowQueries) { expect(query.startedAt).toBeInstanceOf(Date); @@ -68,7 +68,7 @@ describe('Client $diagnostics tests', () => { await client.user.create({ data: { email: 'u1@test.com' } }); await client.user.findMany(); - const diagnostics = await client.$diagnostics(); + const diagnostics = await client.$diagnostics; expect(diagnostics.slowQueries).toEqual([]); } finally { await client.$disconnect(); @@ -82,8 +82,8 @@ describe('Client $diagnostics tests', () => { try { await client.user.create({ data: { email: 'u1@test.com' } }); - const diagnostics1 = await client.$diagnostics(); - const diagnostics2 = await client.$diagnostics(); + const diagnostics1 = await client.$diagnostics; + const diagnostics2 = await client.$diagnostics; expect(diagnostics1.slowQueries).not.toBe(diagnostics2.slowQueries); expect(diagnostics1.slowQueries).toEqual(diagnostics2.slowQueries); } finally { @@ -102,8 +102,8 @@ describe('Client $diagnostics tests', () => { await derivedClient.user.findMany(); // both clients should see the same slow queries - const parentDiag = await client.$diagnostics(); - const derivedDiag = await derivedClient.$diagnostics(); + const parentDiag = await client.$diagnostics; + const derivedDiag = await derivedClient.$diagnostics; expect(parentDiag.slowQueries).toEqual(derivedDiag.slowQueries); } finally { await client.$disconnect(); @@ -119,7 +119,7 @@ describe('Client $diagnostics tests', () => { await tx.user.create({ data: { email: 'u1@test.com' } }); }); - const diagnostics = await client.$diagnostics(); + const diagnostics = await client.$diagnostics; expect(diagnostics.slowQueries.length).toBeGreaterThan(0); } finally { await client.$disconnect(); @@ -141,7 +141,7 @@ describe('Client $diagnostics tests', () => { await client.user.create({ data: { email: `u${i}@test.com` } }); } - const diagnostics = await client.$diagnostics(); + const diagnostics = await client.$diagnostics; expect(diagnostics.slowQueries.length).toBeLessThanOrEqual(maxRecords); } finally { await client.$disconnect(); @@ -160,7 +160,7 @@ describe('Client $diagnostics tests', () => { await client.user.create({ data: { email: `u${i}@test.com` } }); } - const diagnostics = await client.$diagnostics(); + const diagnostics = await client.$diagnostics; expect(diagnostics.slowQueries.length).toBeGreaterThanOrEqual(5); } finally { await client.$disconnect(); @@ -180,7 +180,7 @@ describe('Client $diagnostics tests', () => { await client.user.create({ data: { email: `u${i}@test.com` } }); } - const diagnostics = await client.$diagnostics(); + const diagnostics = await client.$diagnostics; expect(diagnostics.slowQueries.length).toBeLessThanOrEqual(maxRecords); for (const query of diagnostics.slowQueries) { expect(query.startedAt).toBeInstanceOf(Date); From 49395f7280d4946c1c47db0b389a876fb15d7de7 Mon Sep 17 00:00:00 2001 From: Yiming Cao Date: Sat, 14 Mar 2026 12:18:11 -0700 Subject: [PATCH 14/41] perf(orm): avoid unnecessary pre-mutation read and transactions (#2484) --- .../src/client/crud/dialects/postgresql.ts | 32 +- .../orm/src/client/crud/operations/base.ts | 207 ++++---- .../orm/src/client/crud/operations/create.ts | 36 +- .../orm/src/client/crud/operations/delete.ts | 32 +- .../orm/src/client/crud/operations/update.ts | 100 ++-- .../executor/zenstack-query-executor.ts | 15 +- packages/plugins/policy/src/policy-handler.ts | 4 - tests/e2e/orm/client-api/atomicity.test.ts | 473 ++++++++++++++++++ tests/e2e/orm/client-api/delegate.test.ts | 8 +- .../e2e/orm/client-api/type-coverage.test.ts | 5 +- tests/e2e/orm/client-api/update.test.ts | 6 +- .../entity-mutation-hooks.test.ts | 1 - .../policy/migrated/nested-to-many.test.ts | 24 +- tests/e2e/orm/policy/now-function.test.ts | 4 +- tests/e2e/tsconfig.json | 3 +- 15 files changed, 775 insertions(+), 175 deletions(-) create mode 100644 tests/e2e/orm/client-api/atomicity.test.ts diff --git a/packages/orm/src/client/crud/dialects/postgresql.ts b/packages/orm/src/client/crud/dialects/postgresql.ts index 67d429de8..65fd2343e 100644 --- a/packages/orm/src/client/crud/dialects/postgresql.ts +++ b/packages/orm/src/client/crud/dialects/postgresql.ts @@ -34,23 +34,39 @@ export class PostgresCrudDialect extends LateralJoinDi if (this.options.fixPostgresTimezone !== false && !PostgresCrudDialect.typeParserOverrideApplied) { PostgresCrudDialect.typeParserOverrideApplied = true; + const fixTimezone = (value: unknown) => { + if (typeof value !== 'string') { + return value; + } + if (!this.hasTimezoneOffset(value)) { + // force UTC if no offset + value += 'Z'; + } + const result = new Date(value); + return isNaN(result.getTime()) + ? value // fallback to original value if parsing fails + : result; + }; + // override node-pg's default type parser to resolve the timezone handling issue // with "TIMESTAMP WITHOUT TIME ZONE" fields // https://github.com/brianc/node-postgres/issues/429 import(/* webpackIgnore: true */ 'pg') // suppress bundler analysis warnings .then((pg) => { - pg.types.setTypeParser(pg.types.builtins.TIMESTAMP, (value) => { + // timestamp + pg.types.setTypeParser(pg.types.builtins.TIMESTAMP, fixTimezone); + pg.types.setTypeParser(1115, (value) => { + // timestamp array if (typeof value !== 'string') { return value; } - if (!this.hasTimezoneOffset(value)) { - // force UTC if no offset - value += 'Z'; + try { + const arr = parsePostgresArray(value); + return arr.map(fixTimezone); + } catch { + // fallback to original value if parsing fails + return value; } - const result = new Date(value); - return isNaN(result.getTime()) - ? value // fallback to original value if parsing fails - : result; }); }) .catch(() => { diff --git a/packages/orm/src/client/crud/operations/base.ts b/packages/orm/src/client/crud/operations/base.ts index a12f0fe2a..ff742dab1 100644 --- a/packages/orm/src/client/crud/operations/base.ts +++ b/packages/orm/src/client/crud/operations/base.ts @@ -1132,6 +1132,13 @@ export abstract class BaseOperationHandler { return formatExpr.value.replace(/(? { const parentWhere = await this.buildUpdateParentRelationFilter(kysely, fromRelation); - let combinedWhere: WhereInput, any, false> = where ?? {}; + let combinedWhere: Record = where ?? {}; if (Object.keys(parentWhere).length > 0) { combinedWhere = Object.keys(combinedWhere).length > 0 ? { AND: [parentWhere, combinedWhere] } : parentWhere; } + const origWhere = combinedWhere; const modelDef = this.requireModel(model); let finalData = data; @@ -1177,46 +1185,36 @@ export abstract class BaseOperationHandler { } } - // read pre-update entity with ids so that the caller can use it to identify - // the entity being updated, the read data is used as return value if no update - // is made to the entity - const thisEntity = await this.getEntityIds(kysely, model, combinedWhere); - if (!thisEntity) { - if (throwIfNotFound) { - throw createNotFoundError(model); - } else { - return null; + // lazily load the entity to be updated + let thisEntity: any; + const loadThisEntity = async () => { + if (thisEntity === undefined) { + thisEntity = (await this.getEntityIds(kysely, model, origWhere)) ?? null; + if (!thisEntity && throwIfNotFound) { + throw createNotFoundError(model); + } } - } - - if (Object.keys(finalData).length === 0) { return thisEntity; - } + }; - let needIdRead = false; - if (!this.isIdFilter(model, combinedWhere)) { - if (modelDef.baseModel) { - // when updating a model with delegate base, base fields may be referenced in the filter, - // so we read the id out if the filter is not ready an id filter, and and use it as the - // update filter instead - needIdRead = true; - } - if (!this.dialect.supportsReturning) { - // for dialects that don't support RETURNING, we need to read the id fields - // to identify the updated entity - needIdRead = true; - } + if (Object.keys(finalData).length === 0) { + return loadThisEntity(); } - if (needIdRead) { - const readResult = await this.readUnique(kysely, model, { - where: combinedWhere, - select: this.makeIdSelect(model), - }); - if (!readResult && throwIfNotFound) { - throw createNotFoundError(model); + if ( + // when updating a model with delegate base, base fields may be referenced in the filter, + // so we read the id out if the filter and and use it as the update filter instead + modelDef.baseModel || + // for dialects that don't support RETURNING, we need to read the id fields + // to identify the updated entity for toplevel updates + (!this.dialect.supportsReturning && !fromRelation) + ) { + // update the filter to db-loaded id fields + combinedWhere = await loadThisEntity(); + if (!combinedWhere) { + // not found + return null; } - combinedWhere = readResult; } if (modelDef.baseModel) { @@ -1227,20 +1225,32 @@ export abstract class BaseOperationHandler { finalData, throwIfNotFound, ); + + if (!baseUpdateResult.baseEntity) { + // base entity not found + if (throwIfNotFound) { + throw createNotFoundError(model); + } else { + return null; + } + } + // only fields not consumed by base update will be used for this model finalData = baseUpdateResult.remainingFields; // make sure to include only the id fields from the base entity in the final filter - combinedWhere = baseUpdateResult.baseEntity - ? getIdValues(this.schema, modelDef.baseModel!, baseUpdateResult.baseEntity) - : baseUpdateResult.baseEntity; + combinedWhere = getIdValues(this.schema, modelDef.baseModel!, baseUpdateResult.baseEntity); // update this entity with fields in updated base - if (baseUpdateResult.baseEntity) { + await loadThisEntity(); + if (thisEntity) { for (const [key, value] of Object.entries(baseUpdateResult.baseEntity)) { if (key in thisEntity) { thisEntity[key] = value; } } + } else { + // base entity not found + return null; } } @@ -1254,12 +1264,20 @@ export abstract class BaseOperationHandler { if (!allowRelationUpdate) { throw createNotSupportedError(`Relation update not allowed for field "${field}"`); } + + // load this entity for passing on to relation updates as parent + const relationParent = await loadThisEntity(); + if (!relationParent) { + // not found + return null; + } + const parentUpdates = await this.processRelationUpdates( kysely, model, field, fieldDef, - thisEntity, + relationParent, finalData[field], ); @@ -1278,18 +1296,17 @@ export abstract class BaseOperationHandler { if (!hasFieldUpdate) { // nothing to update, return the existing entity - return thisEntity; + return loadThisEntity(); } else { - fieldsToReturn = fieldsToReturn ?? requireIdFields(this.schema, model); - let updatedEntity: any; if (this.dialect.supportsReturning) { + const returnFields = fieldsToReturn !== undefined && fieldsToReturn.length > 0; const query = kysely .updateTable(model) .where(() => this.dialect.buildFilter(model, model, combinedWhere)) .set(updateFields) - .returning(fieldsToReturn as any) + .$if(returnFields, (qb) => qb.returning(fieldsToReturn as any)) .modifyEnd( this.makeContextComment({ model, @@ -1297,8 +1314,42 @@ export abstract class BaseOperationHandler { }), ); - updatedEntity = await this.executeQueryTakeFirst(kysely, query, 'update'); + if (returnFields) { + updatedEntity = await this.executeQueryTakeFirst(kysely, query, 'update'); + } else { + const r = await this.executeQuery(kysely, query, 'update'); + if (!r.numAffectedRows) { + // nothing updated + updatedEntity = null; + } else { + // if no specific fields to return, we are done, return `true` to indicate a successful update + updatedEntity = true; + } + } } else { + // post-update read filter + let readFilter = combinedWhere; + + // check if we are updating any id fields, if so, we need to fetch original entity ids + // before the update, and overwrite the filter with updated id values for post-update read + const idFields = requireIdFields(this.schema, model); + const updatingIdFields = idFields.some((idField) => idField in updateFields); + + if (updatingIdFields) { + const origIdValues = await loadThisEntity(); + invariant(origIdValues, 'Original entity should have been loaded for update without RETURNING'); + + readFilter = { ...origIdValues }; + // replace id fields in the filter with updated values if they are being updated + // const readFilter: any = { ...origWhere }; + for (const idField of idFields) { + if (idField in updateFields && updateFields[idField] !== undefined) { + // if id fields are being updated, use the new values + readFilter[idField] = updateFields[idField]; + } + } + } + // Fallback for databases that don't support RETURNING (e.g., MySQL) const updateQuery = kysely .updateTable(model) @@ -1312,37 +1363,19 @@ export abstract class BaseOperationHandler { ); const updateResult = await this.executeQuery(kysely, updateQuery, 'update'); + if (!updateResult.numAffectedRows) { - // no rows updated + // nothing updated updatedEntity = null; + } else if (fieldsToReturn === undefined || fieldsToReturn.length === 0) { + // if no specific fields to return, we are done, return `true` to indicate a successful update + updatedEntity = true; } else { - // collect id field/values from the original filter - const idFields = requireIdFields(this.schema, model); - const filterIdValues: any = {}; - for (const key of idFields) { - if (combinedWhere[key] !== undefined && typeof combinedWhere[key] !== 'object') { - filterIdValues[key] = combinedWhere[key]; - } - } - - // check if we are updating any id fields - const updatingIdFields = idFields.some((idField) => idField in updateFields); - - if (Object.keys(filterIdValues).length === idFields.length && !updatingIdFields) { - // if we have all id fields in the original filter and ids are not being updated, - // we can simply return the id values as the update result - updatedEntity = filterIdValues; + if (!updatingIdFields) { + // not updating id fields, we can directly return original id values + updatedEntity = await loadThisEntity(); } else { // otherwise we need to re-query the updated entity - - // replace id fields in the filter with updated values if they are being updated - const readFilter: any = { ...combinedWhere }; - for (const idField of idFields) { - if (idField in updateFields && updateFields[idField] !== undefined) { - // if id fields are being updated, use the new values - readFilter[idField] = updateFields[idField]; - } - } const selectQuery = kysely .selectFrom(model) .select(fieldsToReturn as any) @@ -1425,14 +1458,6 @@ export abstract class BaseOperationHandler { return ['increment', 'decrement', 'multiply', 'divide', 'set'].some((key) => key in value); } - private isIdFilter(model: string, filter: any) { - if (!filter || typeof filter !== 'object') { - return false; - } - const idFields = requireIdFields(this.schema, model); - return idFields.length === Object.keys(filter).length && idFields.every((field) => field in filter); - } - private async processBaseModelUpdate( kysely: ToKysely, model: string, @@ -1461,6 +1486,7 @@ export abstract class BaseOperationHandler { undefined, undefined, throwIfNotFound, + requireIdFields(this.schema, model), ); return { baseEntity, remainingFields }; } @@ -2487,6 +2513,18 @@ export abstract class BaseOperationHandler { } } + protected async safeTransactionIf( + condition: boolean, + callback: (tx: AnyKysely) => Promise, + isolationLevel?: IsolationLevel, + ) { + if (condition) { + return this.safeTransaction(callback, isolationLevel); + } else { + return callback(this.kysely); + } + } + // Given a unique filter of a model, load the entity and return its id fields private getEntityIds(kysely: AnyKysely, model: string, uniqueFilter: any) { return this.readUnique(kysely, model, { @@ -2537,27 +2575,28 @@ export abstract class BaseOperationHandler { } protected mutationNeedsReadBack(model: string, args: any) { + const idFields = requireIdFields(this.schema, model); if (this.hasPolicyEnabled) { // TODO: refactor this check // policy enforcement always requires read back - return { needReadBack: true, selectedFields: undefined }; + return { needReadBack: true, selectedFields: idFields }; } if (!this.dialect.supportsReturning) { // if the dialect doesn't support RETURNING, we always need read back - return { needReadBack: true, selectedFields: undefined }; + return { needReadBack: true, selectedFields: idFields }; } if (args.include && typeof args.include === 'object' && Object.keys(args.include).length > 0) { // includes present, need read back to fetch relations - return { needReadBack: true, selectedFields: undefined }; + return { needReadBack: true, selectedFields: idFields }; } const modelDef = this.requireModel(model); if (modelDef.baseModel || modelDef.isDelegate) { // polymorphic model, need read back - return { needReadBack: true, selectedFields: undefined }; + return { needReadBack: true, selectedFields: idFields }; } const allFields = Object.keys(modelDef.fields); @@ -2588,7 +2627,7 @@ export abstract class BaseOperationHandler { if (allFieldsSelected.some((f) => relationFields.includes(f) || computedFields.includes(f))) { // relation or computed field selected, need read back - return { needReadBack: true, selectedFields: undefined }; + return { needReadBack: true, selectedFields: idFields }; } else { return { needReadBack: false, selectedFields: allFieldsSelected }; } diff --git a/packages/orm/src/client/crud/operations/create.ts b/packages/orm/src/client/crud/operations/create.ts index af3c85994..89f07270a 100644 --- a/packages/orm/src/client/crud/operations/create.ts +++ b/packages/orm/src/client/crud/operations/create.ts @@ -26,8 +26,10 @@ export class CreateOperationHandler extends BaseOperat // analyze if we need to read back the created record, or just return the create result const { needReadBack, selectedFields } = this.mutationNeedsReadBack(this.model, args); - // TODO: avoid using transaction for simple create - const result = await this.safeTransaction(async (tx) => { + // analyze if the create involves nested creates + const needsNestedCreate = this.needsNestedCreate(args.data); + + const result = await this.safeTransactionIf(needReadBack || needsNestedCreate, async (tx) => { const createResult = await this.create(tx, this.model, args.data, undefined, false, selectedFields); if (needReadBack) { @@ -58,7 +60,10 @@ export class CreateOperationHandler extends BaseOperat return { count: 0 }; } - return this.safeTransaction((tx) => this.createMany(tx, this.model, args, false)); + // analyze if the create involves nested creates + const needsNestedCreate = this.needsNestedCreate(args.data); + + return this.safeTransactionIf(needsNestedCreate, (tx) => this.createMany(tx, this.model, args, false)); } private async runCreateManyAndReturn(args?: any) { @@ -69,8 +74,10 @@ export class CreateOperationHandler extends BaseOperat // analyze if we need to read back the created record, or just return the create result const { needReadBack, selectedFields } = this.mutationNeedsReadBack(this.model, args); - // TODO: avoid using transaction for simple create - return this.safeTransaction(async (tx) => { + // analyze if the create involves nested creates + const needsNestedCreate = this.needsNestedCreate(args.data); + + return this.safeTransactionIf(needReadBack || needsNestedCreate, async (tx) => { const createResult = await this.createMany(tx, this.model, args, true, undefined, selectedFields); if (needReadBack) { @@ -90,4 +97,23 @@ export class CreateOperationHandler extends BaseOperat } }); } + + private needsNestedCreate(data: any) { + const modelDef = this.requireModel(this.model); + if (modelDef.baseModel) { + // involve delegate base models + return true; + } + + // has relation manipulation in the payload + const hasRelation = Object.entries(data).some(([field, value]) => { + const fieldDef = this.getField(this.model, field); + return fieldDef?.relation && value !== undefined; + }); + if (hasRelation) { + return true; + } + + return false; + } } diff --git a/packages/orm/src/client/crud/operations/delete.ts b/packages/orm/src/client/crud/operations/delete.ts index 295eba799..cc16a7be0 100644 --- a/packages/orm/src/client/crud/operations/delete.ts +++ b/packages/orm/src/client/crud/operations/delete.ts @@ -20,8 +20,10 @@ export class DeleteOperationHandler extends BaseOperat // analyze if we need to read back the deleted record, or just return delete result const { needReadBack, selectedFields } = this.mutationNeedsReadBack(this.model, args); - // TODO: avoid using transaction for simple delete - const result = await this.safeTransaction(async (tx) => { + // analyze if the delete involves nested deletes + const needsNestedDelete = this.needsNestedDelete(); + + const result = await this.safeTransactionIf(needReadBack || needsNestedDelete, async (tx) => { let preDeleteRead: any = undefined; if (needReadBack) { preDeleteRead = await this.readUnique(tx, this.model, { @@ -51,9 +53,33 @@ export class DeleteOperationHandler extends BaseOperat } async runDeleteMany(args?: any) { - return await this.safeTransaction(async (tx) => { + // analyze if the delete involves nested deletes + const needsNestedDelete = this.needsNestedDelete(); + + return await this.safeTransactionIf(needsNestedDelete, async (tx) => { const result = await this.delete(tx, this.model, args?.where, args?.limit); return { count: Number(result.numAffectedRows ?? 0) }; }); } + + private needsNestedDelete() { + const modelDef = this.requireModel(this.model); + if (modelDef.baseModel) { + return true; + } + + // Check if any relation points to a delegate sub-model with cascade delete, + // which would trigger processDelegateRelationDelete in BaseOperationHandler.delete() + for (const fieldDef of Object.values(modelDef.fields)) { + if (fieldDef.relation?.opposite) { + const oppositeModelDef = this.requireModel(fieldDef.type); + const oppositeRelation = this.requireField(fieldDef.type, fieldDef.relation.opposite); + if (oppositeModelDef.baseModel && oppositeRelation.relation?.onDelete === 'Cascade') { + return true; + } + } + } + + return false; + } } diff --git a/packages/orm/src/client/crud/operations/update.ts b/packages/orm/src/client/crud/operations/update.ts index 424945708..4b1d9b528 100644 --- a/packages/orm/src/client/crud/operations/update.ts +++ b/packages/orm/src/client/crud/operations/update.ts @@ -2,7 +2,7 @@ import { match } from 'ts-pattern'; import type { GetModels, SchemaDef } from '../../../schema'; import type { WhereInput } from '../../crud-types'; import { createRejectedByPolicyError, RejectedByPolicyReason } from '../../errors'; -import { getIdValues } from '../../query-utils'; +import { getIdValues, requireIdFields } from '../../query-utils'; import { BaseOperationHandler } from './base'; export class UpdateOperationHandler extends BaseOperationHandler { @@ -28,7 +28,10 @@ export class UpdateOperationHandler extends BaseOperat // analyze if we need to read back the update record, or just return the updated result const { needReadBack, selectedFields } = this.needReadBack(args); - const result = await this.safeTransaction(async (tx) => { + // analyze if the update involves nested updates + const needsNestedUpdate = this.needsNestedUpdate(args.data); + + const result = await this.safeTransactionIf(needReadBack || needsNestedUpdate, async (tx) => { const updateResult = await this.update( tx, this.model, @@ -76,10 +79,11 @@ export class UpdateOperationHandler extends BaseOperat return result; } } - private async runUpdateMany(args: any) { - // TODO: avoid using transaction for simple update - return this.safeTransaction(async (tx) => { + // analyze if the update involves nested updates + const needsNestedUpdate = this.needsNestedUpdate(args.data); + + return this.safeTransactionIf(needsNestedUpdate, async (tx) => { return this.updateMany(tx, this.model, args.where, args.data, args.limit, false); }); } @@ -92,37 +96,43 @@ export class UpdateOperationHandler extends BaseOperat // analyze if we need to read back the updated record, or just return the update result const { needReadBack, selectedFields } = this.needReadBack(args); - const { readBackResult, updateResult } = await this.safeTransaction(async (tx) => { - const updateResult = await this.updateMany( - tx, - this.model, - args.where, - args.data, - args.limit, - true, - undefined, - undefined, - selectedFields, - ); + // analyze if the update involves nested updates + const needsNestedUpdate = this.needsNestedUpdate(args.data); - if (needReadBack) { - const readBackResult = await this.read( + const { readBackResult, updateResult } = await this.safeTransactionIf( + needReadBack || needsNestedUpdate, + async (tx) => { + const updateResult = await this.updateMany( tx, this.model, - { - select: args.select, - omit: args.omit, - where: { - OR: updateResult.map((item) => getIdValues(this.schema, this.model, item) as any), - }, - } as any, // TODO: fix type + args.where, + args.data, + args.limit, + true, + undefined, + undefined, + selectedFields, ); - return { readBackResult, updateResult }; - } else { - return { readBackResult: updateResult, updateResult }; - } - }); + if (needReadBack) { + const readBackResult = await this.read( + tx, + this.model, + { + select: args.select, + omit: args.omit, + where: { + OR: updateResult.map((item) => getIdValues(this.schema, this.model, item) as any), + }, + } as any, // TODO: fix type + ); + + return { readBackResult, updateResult }; + } else { + return { readBackResult: updateResult, updateResult }; + } + }, + ); if (readBackResult.length < updateResult.length && this.hasPolicyEnabled) { // some of the updated entities cannot be read back @@ -140,6 +150,7 @@ export class UpdateOperationHandler extends BaseOperat // analyze if we need to read back the updated record, or just return the update result const { needReadBack, selectedFields } = this.needReadBack(args); + // upsert is intrinsically multi-step and is always run in a transaction const result = await this.safeTransaction(async (tx) => { let mutationResult: unknown = await this.update( tx, @@ -191,9 +202,11 @@ export class UpdateOperationHandler extends BaseOperat return baseResult; } + const idFields = requireIdFields(this.schema, this.model); + if (!this.dialect.supportsReturning) { // if dialect doesn't support "returning", we always need to read back - return { needReadBack: true, selectedFields: undefined }; + return { needReadBack: true, selectedFields: idFields }; } // further check if we're not updating any non-relation fields, because if so, @@ -206,14 +219,33 @@ export class UpdateOperationHandler extends BaseOperat // update/updateMany payload if (args.data && !Object.keys(args.data).some((field) => nonRelationFields.includes(field))) { - return { needReadBack: true, selectedFields: undefined }; + return { needReadBack: true, selectedFields: idFields }; } // upsert payload if (args.update && !Object.keys(args.update).some((field: string) => nonRelationFields.includes(field))) { - return { needReadBack: true, selectedFields: undefined }; + return { needReadBack: true, selectedFields: idFields }; } return baseResult; } + + private needsNestedUpdate(data: any) { + const modelDef = this.requireModel(this.model); + if (modelDef.baseModel) { + // involve delegate base models + return true; + } + + // has relation manipulation in the payload + const hasRelation = Object.entries(data).some(([field, value]) => { + const fieldDef = this.getField(this.model, field); + return fieldDef?.relation && value !== undefined; + }); + if (hasRelation) { + return true; + } + + return false; + } } diff --git a/packages/orm/src/client/executor/zenstack-query-executor.ts b/packages/orm/src/client/executor/zenstack-query-executor.ts index efa45c143..186af02c3 100644 --- a/packages/orm/src/client/executor/zenstack-query-executor.ts +++ b/packages/orm/src/client/executor/zenstack-query-executor.ts @@ -126,6 +126,10 @@ export class ZenStackQueryExecutor extends DefaultQueryExecutor { return (this.client.$options.plugins ?? []).some((plugin) => plugin.onEntityMutation?.afterEntityMutation); } + private get hasOnKyselyHooks() { + return (this.client.$options.plugins ?? []).some((plugin) => plugin.onKyselyQuery); + } + // #endregion // #region main entry point @@ -135,11 +139,20 @@ export class ZenStackQueryExecutor extends DefaultQueryExecutor { // if the query is a raw query, we need to carry over the parameters const queryParams = (compiledQuery as any).$raw ? compiledQuery.parameters : undefined; + // needs to ensure transaction if we: + // - have plugins with Kysely hooks, as they may spawn more queries (check: should creating tx be plugin's responsibility?) + // - have entity mutation plugins + const needEnsureTx = this.hasOnKyselyHooks || this.hasEntityMutationPlugins; + const result = await this.provideConnection(async (connection) => { let startedTx = false; try { // mutations are wrapped in tx if not already in one - if (this.isMutationNode(compiledQuery.query) && !this.driver.isTransactionConnection(connection)) { + if ( + this.isMutationNode(compiledQuery.query) && + !this.driver.isTransactionConnection(connection) && + needEnsureTx + ) { await this.driver.beginTransaction(connection, { isolationLevel: TransactionIsolationLevel.ReadCommitted, }); diff --git a/packages/plugins/policy/src/policy-handler.ts b/packages/plugins/policy/src/policy-handler.ts index 968703957..d774ac007 100644 --- a/packages/plugins/policy/src/policy-handler.ts +++ b/packages/plugins/policy/src/policy-handler.ts @@ -72,10 +72,6 @@ export class PolicyHandler extends OperationNodeTransf this.dialect = getCrudDialect(this.client.$schema, this.client.$options); } - get kysely() { - return this.client.$qb; - } - // #region main entry point async handle(node: RootOperationNode, proceed: ProceedKyselyQueryFunction) { diff --git a/tests/e2e/orm/client-api/atomicity.test.ts b/tests/e2e/orm/client-api/atomicity.test.ts new file mode 100644 index 000000000..b0cb8ccb3 --- /dev/null +++ b/tests/e2e/orm/client-api/atomicity.test.ts @@ -0,0 +1,473 @@ +import type { ClientContract } from '@zenstackhq/orm'; +import { createTestClient } from '@zenstackhq/testtools'; +import path from 'node:path'; +import { afterEach, beforeEach, describe, expect, it } from 'vitest'; +import { schema } from '../schemas/basic'; +import { schema as delegateSchema, type SchemaType as DelegateSchemaType } from '../schemas/delegate/schema'; + +describe('Atomicity tests', () => { + describe('basic schema', () => { + let client: ClientContract; + + beforeEach(async () => { + client = await createTestClient(schema); + }); + + afterEach(async () => { + await client?.$disconnect(); + }); + + describe('nested create atomicity', () => { + it('rolls back nested to-one create on failure', async () => { + // Create a user first + await client.user.create({ + data: { email: 'u1@test.com' }, + }); + + // Attempt to create a post with a nested user create that violates unique constraint + await expect( + client.post.create({ + data: { + title: 'Post1', + author: { + create: { email: 'u1@test.com' }, // duplicate email + }, + }, + }), + ).rejects.toThrow(); + + // The post should not have been created either + await expect(client.post.findMany()).toResolveWithLength(0); + // Only the original user should exist + await expect(client.user.findMany()).toResolveWithLength(1); + }); + + it('rolls back nested to-many create on failure', async () => { + const user = await client.user.create({ + data: { email: 'u1@test.com' }, + }); + + // Create a post with a valid comment + const post = await client.post.create({ + data: { + title: 'Post1', + authorId: user.id, + comments: { + create: { content: 'comment1' }, + }, + }, + include: { comments: true }, + }); + expect(post.comments).toHaveLength(1); + + // Attempt to create a user with duplicate email and nested posts + await expect( + client.user.create({ + data: { + email: 'u1@test.com', // duplicate email — will fail + posts: { + create: [{ title: 'Post2' }, { title: 'Post3' }], + }, + profile: { + create: { bio: 'bio' }, + }, + }, + }), + ).rejects.toThrow(); + + // Neither the new user, posts, nor profile should exist + await expect(client.user.findMany()).toResolveWithLength(1); + await expect(client.post.findMany()).toResolveWithLength(1); + await expect(client.profile.findMany()).toResolveWithLength(0); + }); + + it('rolls back deeply nested create on failure', async () => { + // Attempt to create a user with nested post and nested comment, + // where the user email is duplicated + await client.user.create({ + data: { email: 'u1@test.com' }, + }); + + await expect( + client.post.create({ + data: { + title: 'Post1', + author: { + create: { email: 'u1@test.com' }, // duplicate + }, + comments: { + create: [{ content: 'c1' }, { content: 'c2' }], + }, + }, + }), + ).rejects.toThrow(); + + // Nothing should have been created + await expect(client.post.findMany()).toResolveWithLength(0); + await expect(client.comment.findMany()).toResolveWithLength(0); + await expect(client.user.findMany()).toResolveWithLength(1); + }); + }); + + describe('nested update atomicity', () => { + it('rolls back nested update with nested create on unique violation', async () => { + // Create two users, one with a post + const user1 = await client.user.create({ + data: { + email: 'u1@test.com', + posts: { + create: { title: 'Post1' }, + }, + }, + include: { posts: true }, + }); + await client.user.create({ + data: { email: 'u2@test.com' }, + }); + + // Attempt to update user1: change name AND create a nested post + // whose author is a new user with a duplicate email + await expect( + client.user.update({ + where: { id: user1.id }, + data: { + name: 'should not persist', + posts: { + create: { + title: 'Post2', + comments: { + create: { content: 'c1' }, + }, + }, + }, + // This will fail: duplicate unique email + email: 'u2@test.com', + }, + }), + ).rejects.toThrow(); + + // The user's name should not have been updated + const user1After = await client.user.findFirst({ where: { id: user1.id } }); + expect(user1After!.name).toBeNull(); + expect(user1After!.email).toBe('u1@test.com'); + + // Post2 and its comment should not exist + await expect(client.post.findMany()).toResolveWithLength(1); + await expect(client.comment.findMany()).toResolveWithLength(0); + }); + + it('rolls back nested update with delete on unique violation', async () => { + const user1 = await client.user.create({ + data: { + email: 'u1@test.com', + posts: { + create: [{ title: 'Post1' }, { title: 'Post2' }], + }, + }, + include: { posts: true }, + }); + await client.user.create({ + data: { email: 'u2@test.com' }, + }); + + // Attempt to update user1: delete a post AND change email to duplicate + await expect( + client.user.update({ + where: { id: user1.id }, + data: { + email: 'u2@test.com', // duplicate — will fail + posts: { + delete: { id: user1.posts[0]!.id }, + }, + }, + }), + ).rejects.toThrow(); + + // The post should NOT have been deleted (rolled back) + await expect(client.post.findMany()).toResolveWithLength(2); + + // User email should remain unchanged + const user1After = await client.user.findFirst({ where: { id: user1.id } }); + expect(user1After!.email).toBe('u1@test.com'); + }); + }); + }); + + describe('delegate models', () => { + let client: ClientContract; + + beforeEach(async () => { + client = await createTestClient(delegateSchema, { + usePrismaPush: true, + schemaFile: path.join(__dirname, '../schemas/delegate/schema.zmodel'), + }); + }); + + afterEach(async () => { + await client?.$disconnect(); + }); + + describe('cascaded create atomicity', () => { + it('rolls back all delegate levels on unique violation', async () => { + // Create a rated video (creates records in Asset, Video, RatedVideo tables) + await client.ratedVideo.create({ + data: { + duration: 100, + url: 'abc', + rating: 5, + }, + }); + + // Attempt to create another rated video with duplicate url + await expect( + client.ratedVideo.create({ + data: { + duration: 200, + url: 'abc', // duplicate unique constraint + rating: 3, + }, + }), + ).rejects.toSatisfy((e: any) => e.cause.message.toLowerCase().match(/(constraint)|(duplicate)/i)); + + // All levels should have exactly 1 record (the first one) + await expect(client.ratedVideo.findMany()).toResolveWithLength(1); + await expect(client.video.findMany()).toResolveWithLength(1); + await expect(client.asset.findMany()).toResolveWithLength(1); + }); + + it('rolls back nested relation create with delegate model on failure', async () => { + // Create a user + await client.user.create({ + data: { id: 1, email: 'u1@example.com' }, + }); + + // Create a rated video owned by the user + await client.ratedVideo.create({ + data: { + duration: 100, + url: 'abc', + rating: 5, + owner: { connect: { id: 1 } }, + }, + }); + + // Attempt to create another rated video with a nested owner create + // that violates unique email constraint + await expect( + client.ratedVideo.create({ + data: { + duration: 200, + url: 'def', + rating: 3, + owner: { + create: { email: 'u1@example.com' }, // duplicate email + }, + }, + }), + ).rejects.toThrow(); + + // Only the original records should exist + await expect(client.ratedVideo.findMany()).toResolveWithLength(1); + await expect(client.video.findMany()).toResolveWithLength(1); + await expect(client.asset.findMany()).toResolveWithLength(1); + await expect(client.user.findMany()).toResolveWithLength(1); + }); + }); + + describe('cascaded update atomicity', () => { + it('rolls back delegate model update on unique violation', async () => { + await client.ratedVideo.create({ + data: { id: 1, duration: 100, url: 'abc', rating: 5 }, + }); + await client.ratedVideo.create({ + data: { id: 2, duration: 200, url: 'def', rating: 3 }, + }); + + // Attempt to update second video's url to duplicate first one + await expect( + client.ratedVideo.update({ + where: { id: 2 }, + data: { + url: 'abc', // duplicate + rating: 10, + }, + }), + ).rejects.toThrow(); + + // Second video should remain unchanged across all levels + const video = await client.ratedVideo.findFirst({ where: { id: 2 } }); + expect(video!.url).toBe('def'); + expect(video!.rating).toBe(3); + }); + + it('rolls back delegate model update with nested relation on failure', async () => { + await client.user.create({ + data: { id: 1, email: 'u1@example.com' }, + }); + await client.ratedVideo.create({ + data: { + id: 1, + duration: 100, + url: 'abc', + rating: 5, + owner: { connect: { id: 1 } }, + }, + }); + + // Attempt to update a rated video: change rating AND create a nested + // owner with a duplicate email — should fail atomically + await expect( + client.ratedVideo.update({ + where: { id: 1 }, + data: { + rating: 99, + viewCount: 999, + owner: { + create: { email: 'u1@example.com' }, // duplicate email + }, + }, + }), + ).rejects.toThrow(); + + // Rating and viewCount should remain unchanged across all delegate levels + const video = await client.ratedVideo.findFirst({ where: { id: 1 } }); + expect(video!.rating).toBe(5); + expect(video!.viewCount).toBe(0); + + // No extra user should have been created + await expect(client.user.findMany()).toResolveWithLength(1); + }); + }); + + describe('cascaded delete atomicity', () => { + it('deletes all delegate levels atomically', async () => { + await client.ratedVideo.create({ + data: { id: 1, duration: 100, url: 'abc', rating: 5 }, + }); + + // Delete at base level should cascade to all sub-model levels + await client.asset.delete({ where: { id: 1 } }); + + await expect(client.ratedVideo.findMany()).toResolveWithLength(0); + await expect(client.video.findMany()).toResolveWithLength(0); + await expect(client.asset.findMany()).toResolveWithLength(0); + }); + + it('rolls back nested delete of delegate model on failure', async () => { + await client.user.create({ + data: { id: 1, email: 'u1@example.com' }, + }); + await client.user.create({ + data: { id: 2, email: 'u2@example.com' }, + }); + await client.ratedVideo.create({ + data: { + id: 1, + duration: 100, + url: 'abc', + rating: 5, + owner: { connect: { id: 1 } }, + }, + }); + + // Attempt a user update that includes both a nested asset delete + // and a field update that causes a unique violation + await expect( + client.user.update({ + where: { id: 1 }, + data: { + email: 'u2@example.com', // duplicate email + assets: { + delete: { id: 1 }, + }, + }, + }), + ).rejects.toThrow(); + + // The asset should still exist (delete was rolled back) + await expect(client.ratedVideo.findMany()).toResolveWithLength(1); + await expect(client.video.findMany()).toResolveWithLength(1); + await expect(client.asset.findMany()).toResolveWithLength(1); + + // User email should be unchanged + const user = await client.user.findFirst({ where: { id: 1 } }); + expect(user!.email).toBe('u1@example.com'); + }); + + it('cascade delete from parent propagates through delegate hierarchy', async () => { + await client.user.create({ + data: { id: 1, email: 'u1@example.com' }, + }); + await client.ratedVideo.create({ + data: { + id: 1, + duration: 100, + url: 'abc', + rating: 5, + owner: { connect: { id: 1 } }, + comments: { + create: [{ content: 'c1' }, { content: 'c2' }], + }, + }, + }); + await client.image.create({ + data: { + id: 2, + format: 'png', + owner: { connect: { id: 1 } }, + }, + }); + + // Deleting user should cascade delete all owned assets and their comments + await client.user.delete({ where: { id: 1 } }); + + await expect(client.user.findMany()).toResolveWithLength(0); + await expect(client.asset.findMany()).toResolveWithLength(0); + await expect(client.video.findMany()).toResolveWithLength(0); + await expect(client.ratedVideo.findMany()).toResolveWithLength(0); + await expect(client.image.findMany()).toResolveWithLength(0); + await expect(client.comment.findMany()).toResolveWithLength(0); + }); + + it('deleteMany cleans up delegate base hierarchy for related models', async () => { + // This exercises the needsNestedDelete fix: User is NOT a delegate model, + // but it has relations to delegate sub-models (Asset) with cascade delete. + // deleteMany only uses needsNestedDelete (not needReadBack) to decide + // whether to wrap in a transaction, so this is the purest test of the fix. + await client.user.create({ + data: { id: 1, email: 'u1@example.com' }, + }); + await client.user.create({ + data: { id: 2, email: 'u2@example.com' }, + }); + await client.ratedVideo.create({ + data: { + id: 1, + duration: 100, + url: 'abc', + rating: 5, + owner: { connect: { id: 1 } }, + }, + }); + await client.image.create({ + data: { + id: 2, + format: 'png', + owner: { connect: { id: 2 } }, + }, + }); + + // deleteMany users — processDelegateRelationDelete should clean up + // the full base hierarchy (Asset ← Video ← RatedVideo, Asset ← Image) + const result = await client.user.deleteMany({}); + expect(result.count).toBe(2); + + await expect(client.user.findMany()).toResolveWithLength(0); + await expect(client.asset.findMany()).toResolveWithLength(0); + await expect(client.video.findMany()).toResolveWithLength(0); + await expect(client.ratedVideo.findMany()).toResolveWithLength(0); + await expect(client.image.findMany()).toResolveWithLength(0); + }); + }); + }); +}); diff --git a/tests/e2e/orm/client-api/delegate.test.ts b/tests/e2e/orm/client-api/delegate.test.ts index 6ed0b9ea2..8aeddc0d9 100644 --- a/tests/e2e/orm/client-api/delegate.test.ts +++ b/tests/e2e/orm/client-api/delegate.test.ts @@ -1,17 +1,17 @@ +import type { ClientContract } from '@zenstackhq/orm'; +import { createTestClient } from '@zenstackhq/testtools'; import path from 'node:path'; import { afterEach, beforeEach, describe, expect, it } from 'vitest'; -import type { ClientContract } from '@zenstackhq/orm'; import { schema, type SchemaType } from '../schemas/delegate/schema'; -import { createTestClient } from '@zenstackhq/testtools'; describe('Delegate model tests ', () => { let client: ClientContract; beforeEach(async () => { - client = (await createTestClient(schema, { + client = await createTestClient(schema, { usePrismaPush: true, schemaFile: path.join(__dirname, '../schemas/delegate/schema.zmodel'), - })) as any; + }); }); afterEach(async () => { diff --git a/tests/e2e/orm/client-api/type-coverage.test.ts b/tests/e2e/orm/client-api/type-coverage.test.ts index bbe872773..195af5535 100644 --- a/tests/e2e/orm/client-api/type-coverage.test.ts +++ b/tests/e2e/orm/client-api/type-coverage.test.ts @@ -81,10 +81,6 @@ describe('Zmodel type coverage tests', () => { }); it('supports all types - array', async () => { - if (getTestDbProvider() !== 'postgresql') { - return; - } - const date = new Date(); const data = { id: '1', @@ -117,6 +113,7 @@ describe('Zmodel type coverage tests', () => { Json Json[] } `, + { provider: 'postgresql' }, ); await db.foo.create({ data }); diff --git a/tests/e2e/orm/client-api/update.test.ts b/tests/e2e/orm/client-api/update.test.ts index e14432050..b1b538185 100644 --- a/tests/e2e/orm/client-api/update.test.ts +++ b/tests/e2e/orm/client-api/update.test.ts @@ -166,7 +166,7 @@ describe('Client update tests', () => { data: { createdAt: new Date(), }, - }) + }); let updatedUser = await client.user.findUnique({ where: { id: user.id } }); expect(updatedUser?.updatedAt.getTime()).toEqual(originalUpdatedAt.getTime()); @@ -179,7 +179,7 @@ describe('Client update tests', () => { data: { id: 'User2', }, - }) + }); updatedUser = await client.user.findUnique({ where: { id: 'User2' } }); expect(updatedUser?.updatedAt.getTime()).toEqual(originalUpdatedAt.getTime()); @@ -194,7 +194,7 @@ describe('Client update tests', () => { id: 'User3', createdAt: new Date(), }, - }) + }); updatedUser = await client.user.findUnique({ where: { id: 'User3' } }); expect(updatedUser?.updatedAt.getTime()).toEqual(originalUpdatedAt.getTime()); diff --git a/tests/e2e/orm/plugin-infra/entity-mutation-hooks.test.ts b/tests/e2e/orm/plugin-infra/entity-mutation-hooks.test.ts index ceb063fe8..8ddb35f7e 100644 --- a/tests/e2e/orm/plugin-infra/entity-mutation-hooks.test.ts +++ b/tests/e2e/orm/plugin-infra/entity-mutation-hooks.test.ts @@ -695,7 +695,6 @@ describe('Entity mutation hooks tests', () => { describe('Entity mutation hooks - delegate model interaction', () => { it('update on child model succeeds with afterEntityMutation plugin', async () => { - console.log('RUNNING!!!!'); const client = await createTestClient( ` model Base { diff --git a/tests/e2e/orm/policy/migrated/nested-to-many.test.ts b/tests/e2e/orm/policy/migrated/nested-to-many.test.ts index 290b19236..41b3f0ab2 100644 --- a/tests/e2e/orm/policy/migrated/nested-to-many.test.ts +++ b/tests/e2e/orm/policy/migrated/nested-to-many.test.ts @@ -673,29 +673,9 @@ describe('Policy tests to-many', () => { }, }); - await expect( - db.m1.update({ - where: { id: '1' }, - include: { m3: true }, - data: { - m3: { - update: { - value: 1, - }, - }, - }, - }), - ).toBeRejectedNotFound(); - - // make m3 readable - await db.$unuseAll().m3.update({ - where: { id: 'm3' }, - data: { value: 2 }, - }); - const r1 = await db.m1.update({ where: { id: '1' }, - include: { m3: true, m2: true }, + include: { m2: true, m3: true }, data: { m3: { update: { @@ -704,7 +684,7 @@ describe('Policy tests to-many', () => { }, }, }); - // m3 is ok now + expect(r1.m3.value).toBe(3); // m2 got filtered expect(r1.m2).toHaveLength(0); diff --git a/tests/e2e/orm/policy/now-function.test.ts b/tests/e2e/orm/policy/now-function.test.ts index ae5f51e8e..04d140885 100644 --- a/tests/e2e/orm/policy/now-function.test.ts +++ b/tests/e2e/orm/policy/now-function.test.ts @@ -118,7 +118,9 @@ model Log { // anonymous user - rejected await expect(db.log.create({ data: { message: 'test' } })).toBeRejectedByPolicy(); // authenticated user with auto-filled createdAt - allowed - await expect(db.$setAuth({ id: 1 }).log.create({ data: { message: 'test' } })).resolves.toMatchObject({ + await expect( + db.$setAuth({ id: 1 }).log.create({ data: { message: 'test', createdAt: new Date(Date.now() - 1000) } }), + ).resolves.toMatchObject({ message: 'test', }); }); diff --git a/tests/e2e/tsconfig.json b/tests/e2e/tsconfig.json index 22b23e0c9..c392f350a 100644 --- a/tests/e2e/tsconfig.json +++ b/tests/e2e/tsconfig.json @@ -4,5 +4,6 @@ "noEmit": true, "noImplicitAny": false, "types": ["@zenstackhq/testtools/types", "node"] - } + }, + "include": ["**/*.ts"] } From 0778e493a9553c935723cae267de2e8475ed041f Mon Sep 17 00:00:00 2001 From: Yiming Cao Date: Sat, 14 Mar 2026 17:32:33 -0700 Subject: [PATCH 15/41] perf(orm): improve post query data processing performance (#2485) --- .../orm/src/client/crud/dialects/mysql.ts | 75 +++++++++------ .../src/client/crud/dialects/postgresql.ts | 96 ++++++++++--------- .../orm/src/client/crud/dialects/sqlite.ts | 64 +++++++------ packages/orm/src/client/result-processor.ts | 61 ++++++++---- 4 files changed, 175 insertions(+), 121 deletions(-) diff --git a/packages/orm/src/client/crud/dialects/mysql.ts b/packages/orm/src/client/crud/dialects/mysql.ts index 6e444227b..5533a59aa 100644 --- a/packages/orm/src/client/crud/dialects/mysql.ts +++ b/packages/orm/src/client/crud/dialects/mysql.ts @@ -10,7 +10,6 @@ import { type SelectQueryBuilder, type SqlBool, } from 'kysely'; -import { match } from 'ts-pattern'; import { AnyNullClass, DbNullClass, JsonNullClass } from '../../../common-types'; import type { BuiltinType, FieldDef, SchemaDef } from '../../../schema'; import type { SortOrder } from '../../crud-types'; @@ -93,9 +92,10 @@ export class MySqlCrudDialect extends LateralJoinDiale throw createNotSupportedError(`MySQL does not support array literals`); } } else { - return match(type) - .with('Boolean', () => (value ? 1 : 0)) // MySQL uses 1/0 for boolean like SQLite - .with('DateTime', () => { + switch (type) { + case 'Boolean': + return value ? 1 : 0; + case 'DateTime': // MySQL DATETIME format: 'YYYY-MM-DD HH:MM:SS.mmm' if (value instanceof Date) { // force UTC @@ -106,15 +106,15 @@ export class MySqlCrudDialect extends LateralJoinDiale } else { return value; } - }) - .with('Decimal', () => (value !== null ? value.toString() : value)) - .with('Json', () => { + case 'Decimal': + return value !== null ? value.toString() : value; + case 'Json': return this.eb.cast(this.eb.val(JSON.stringify(value)), 'json'); - }) - .with('Bytes', () => - Buffer.isBuffer(value) ? value : value instanceof Uint8Array ? Buffer.from(value) : value, - ) - .otherwise(() => value); + case 'Bytes': + return Buffer.isBuffer(value) ? value : value instanceof Uint8Array ? Buffer.from(value) : value; + default: + return value; + } } } @@ -122,13 +122,21 @@ export class MySqlCrudDialect extends LateralJoinDiale if (value === null || value === undefined) { return value; } - return match(type) - .with('Boolean', () => this.transformOutputBoolean(value)) - .with('DateTime', () => this.transformOutputDate(value)) - .with('Bytes', () => this.transformOutputBytes(value)) - .with('BigInt', () => this.transformOutputBigInt(value)) - .with('Decimal', () => this.transformDecimal(value)) - .otherwise(() => super.transformOutput(value, type, array)); + + switch (type) { + case 'Boolean': + return this.transformOutputBoolean(value); + case 'DateTime': + return this.transformOutputDate(value); + case 'Bytes': + return this.transformOutputBytes(value); + case 'BigInt': + return this.transformOutputBigInt(value); + case 'Decimal': + return this.transformDecimal(value); + default: + return super.transformOutput(value, type, array); + } } private transformOutputBoolean(value: unknown) { @@ -282,26 +290,31 @@ export class MySqlCrudDialect extends LateralJoinDiale operation: 'array_contains' | 'array_starts_with' | 'array_ends_with', value: unknown, ) { - return match(operation) - .with('array_contains', () => { + switch (operation) { + case 'array_contains': { const v = Array.isArray(value) ? value : [value]; return sql`JSON_CONTAINS(${lhs}, ${sql.val(JSON.stringify(v))})`; - }) - .with('array_starts_with', () => - this.eb( + } + + case 'array_starts_with': { + return this.eb( this.eb.fn('JSON_EXTRACT', [lhs, this.eb.val('$[0]')]), '=', this.transformInput(value, 'Json', false), - ), - ) - .with('array_ends_with', () => - this.eb( + ); + } + + case 'array_ends_with': { + return this.eb( sql`JSON_EXTRACT(${lhs}, CONCAT('$[', JSON_LENGTH(${lhs}) - 1, ']'))`, '=', this.transformInput(value, 'Json', false), - ), - ) - .exhaustive(); + ); + } + + default: + throw createInvalidInputError(`Unsupported array filter operation: ${operation}`); + } } protected override buildJsonArrayExistsPredicate( diff --git a/packages/orm/src/client/crud/dialects/postgresql.ts b/packages/orm/src/client/crud/dialects/postgresql.ts index 65fd2343e..a601f8028 100644 --- a/packages/orm/src/client/crud/dialects/postgresql.ts +++ b/packages/orm/src/client/crud/dialects/postgresql.ts @@ -9,7 +9,6 @@ import { type SqlBool, } from 'kysely'; import { parse as parsePostgresArray } from 'postgres-array'; -import { match } from 'ts-pattern'; import { AnyNullClass, DbNullClass, JsonNullClass } from '../../../common-types'; import type { BuiltinType, FieldDef, SchemaDef } from '../../../schema'; import type { SortOrder } from '../../crud-types'; @@ -21,6 +20,18 @@ import { LateralJoinDialectBase } from './lateral-join-dialect-base'; export class PostgresCrudDialect extends LateralJoinDialectBase { private static typeParserOverrideApplied = false; + private readonly zmodelToSqlTypeMap: Record = { + String: 'text', + Boolean: 'boolean', + Int: 'integer', + BigInt: 'bigint', + Float: 'double precision', + Decimal: 'decimal', + DateTime: 'timestamp', + Bytes: 'bytea', + Json: 'jsonb', + }; + constructor(schema: Schema, options: ClientOptions) { super(schema, options); this.overrideTypeParsers(); @@ -144,16 +155,16 @@ export class PostgresCrudDialect extends LateralJoinDi return value.map((v) => this.transformInput(v, type, false)); } } else { - return match(type) - .with('DateTime', () => - value instanceof Date + switch (type) { + case 'DateTime': + return value instanceof Date ? value.toISOString() : typeof value === 'string' ? new Date(value).toISOString() - : value, - ) - .with('Decimal', () => (value !== null ? value.toString() : value)) - .with('Json', () => { + : value; + case 'Decimal': + return value !== null ? value.toString() : value; + case 'Json': if ( value === null || typeof value === 'string' || @@ -165,8 +176,9 @@ export class PostgresCrudDialect extends LateralJoinDi } else { return value; } - }) - .otherwise(() => value); + default: + return value; + } } } @@ -174,16 +186,23 @@ export class PostgresCrudDialect extends LateralJoinDi if (value === null || value === undefined) { return value; } - return match(type) - .with('DateTime', () => this.transformOutputDate(value)) - .with('Bytes', () => this.transformOutputBytes(value)) - .with('BigInt', () => this.transformOutputBigInt(value)) - .with('Decimal', () => this.transformDecimal(value)) - .when( - (type) => isEnum(this.schema, type), - () => this.transformOutputEnum(value, array), - ) - .otherwise(() => super.transformOutput(value, type, array)); + + switch (type) { + case 'DateTime': + return this.transformOutputDate(value); + case 'Bytes': + return this.transformOutputBytes(value); + case 'BigInt': + return this.transformOutputBigInt(value); + case 'Decimal': + return this.transformDecimal(value); + default: + if (isEnum(this.schema, type)) { + return this.transformOutputEnum(value, array); + } else { + return super.transformOutput(value, type, array); + } + } } private transformOutputBigInt(value: unknown) { @@ -339,26 +358,24 @@ export class PostgresCrudDialect extends LateralJoinDi operation: 'array_contains' | 'array_starts_with' | 'array_ends_with', value: unknown, ) { - return match(operation) - .with('array_contains', () => { + switch (operation) { + case 'array_contains': { const v = Array.isArray(value) ? value : [value]; return sql`${lhs} @> ${sql.val(JSON.stringify(v))}::jsonb`; - }) - .with('array_starts_with', () => - this.eb( + } + case 'array_starts_with': + return this.eb( this.eb.fn('jsonb_extract_path', [lhs, this.eb.val('0')]), '=', this.transformInput(value, 'Json', false), - ), - ) - .with('array_ends_with', () => - this.eb( + ); + case 'array_ends_with': + return this.eb( this.eb.fn('jsonb_extract_path', [lhs, sql`(jsonb_array_length(${lhs}) - 1)::text`]), '=', this.transformInput(value, 'Json', false), - ), - ) - .exhaustive(); + ); + } } protected override buildJsonArrayExistsPredicate( @@ -378,20 +395,7 @@ export class PostgresCrudDialect extends LateralJoinDi // reduce enum to text for type compatibility return 'text'; } else { - return ( - match(zmodelType) - .with('String', () => 'text') - .with('Boolean', () => 'boolean') - .with('Int', () => 'integer') - .with('BigInt', () => 'bigint') - .with('Float', () => 'double precision') - .with('Decimal', () => 'decimal') - .with('DateTime', () => 'timestamp') - .with('Bytes', () => 'bytea') - .with('Json', () => 'jsonb') - // fallback to text - .otherwise(() => 'text') - ); + return this.zmodelToSqlTypeMap[zmodelType] ?? 'text'; } } diff --git a/packages/orm/src/client/crud/dialects/sqlite.ts b/packages/orm/src/client/crud/dialects/sqlite.ts index 95e2910f8..c302cc716 100644 --- a/packages/orm/src/client/crud/dialects/sqlite.ts +++ b/packages/orm/src/client/crud/dialects/sqlite.ts @@ -12,7 +12,6 @@ import { type SelectQueryBuilder, type SqlBool, } from 'kysely'; -import { match } from 'ts-pattern'; import { AnyNullClass, DbNullClass, JsonNullClass } from '../../../common-types'; import type { BuiltinType, FieldDef, GetModels, SchemaDef } from '../../../schema'; import { DELEGATE_JOINED_FIELD_PREFIX } from '../../constants'; @@ -90,18 +89,22 @@ export class SqliteCrudDialect extends BaseCrudDialect if (Array.isArray(value)) { return value.map((v) => this.transformInput(v, type, false)); } else { - return match(type) - .with('Boolean', () => (value ? 1 : 0)) - .with('DateTime', () => - value instanceof Date + switch (type) { + case 'Boolean': + return value ? 1 : 0; + case 'DateTime': + return value instanceof Date ? value.toISOString() : typeof value === 'string' ? new Date(value).toISOString() - : value, - ) - .with('Decimal', () => (value as Decimal).toString()) - .with('Bytes', () => Buffer.from(value as Uint8Array)) - .otherwise(() => value); + : value; + case 'Decimal': + return (value as Decimal).toString(); + case 'Bytes': + return Buffer.from(value as Uint8Array); + default: + return value; + } } } @@ -112,14 +115,22 @@ export class SqliteCrudDialect extends BaseCrudDialect // typed JSON field return this.transformOutputJson(value); } else { - return match(type) - .with('Boolean', () => this.transformOutputBoolean(value)) - .with('DateTime', () => this.transformOutputDate(value)) - .with('Bytes', () => this.transformOutputBytes(value)) - .with('Decimal', () => this.transformOutputDecimal(value)) - .with('BigInt', () => this.transformOutputBigInt(value)) - .with('Json', () => this.transformOutputJson(value)) - .otherwise(() => super.transformOutput(value, type, array)); + switch (type) { + case 'Boolean': + return this.transformOutputBoolean(value); + case 'DateTime': + return this.transformOutputDate(value); + case 'Bytes': + return this.transformOutputBytes(value); + case 'Decimal': + return this.transformOutputDecimal(value); + case 'BigInt': + return this.transformOutputBigInt(value); + case 'Json': + return this.transformOutputJson(value); + default: + return super.transformOutput(value, type, array); + } } } @@ -415,8 +426,8 @@ export class SqliteCrudDialect extends BaseCrudDialect operation: 'array_contains' | 'array_starts_with' | 'array_ends_with', value: unknown, ) { - return match(operation) - .with('array_contains', () => { + switch (operation) { + case 'array_contains': if (Array.isArray(value)) { throw createNotSupportedError( 'SQLite "array_contains" only supports checking for a single value, not an array of values', @@ -424,14 +435,11 @@ export class SqliteCrudDialect extends BaseCrudDialect } else { return sql`EXISTS (SELECT 1 FROM json_each(${lhs}) WHERE value = ${value})`; } - }) - .with('array_starts_with', () => - this.eb(this.eb.fn('json_extract', [lhs, this.eb.val('$[0]')]), '=', value), - ) - .with('array_ends_with', () => - this.eb(sql`json_extract(${lhs}, '$[' || (json_array_length(${lhs}) - 1) || ']')`, '=', value), - ) - .exhaustive(); + case 'array_starts_with': + return this.eb(this.eb.fn('json_extract', [lhs, this.eb.val('$[0]')]), '=', value); + case 'array_ends_with': + return this.eb(sql`json_extract(${lhs}, '$[' || (json_array_length(${lhs}) - 1) || ']')`, '=', value); + } } protected override buildJsonArrayExistsPredicate( diff --git a/packages/orm/src/client/result-processor.ts b/packages/orm/src/client/result-processor.ts index fc8ae1938..38d1aa103 100644 --- a/packages/orm/src/client/result-processor.ts +++ b/packages/orm/src/client/result-processor.ts @@ -22,19 +22,47 @@ export class ResultProcessor { } private doProcessResult(data: any, model: GetModels) { + // pre-resolve field definitions from the first row's keys + const firstRow = Array.isArray(data) ? data[0] : data; + if (!firstRow || typeof firstRow !== 'object') { + return data; + } + + const fields = this.resolveFields(firstRow, model); + if (Array.isArray(data)) { - data.forEach((row, i) => (data[i] = this.processRow(row, model))); + data.forEach((row, i) => (data[i] = this.processRow(row, fields))); return data; } else { - return this.processRow(data, model); + return this.processRow(data, fields); + } + } + + private resolveFields(row: any, model: GetModels): FieldDef[] { + if (!row || typeof row !== 'object') { + return []; + } + const result: FieldDef[] = []; + for (const key of Object.keys(row)) { + if (key === '_count' || key.startsWith(DELEGATE_JOINED_FIELD_PREFIX)) { + continue; + } + const fieldDef = getField(this.schema, model, key); + if (fieldDef) { + result.push(fieldDef); + } } + return result; } - private processRow(data: any, model: GetModels) { + private processRow(data: any, fields: FieldDef[]) { if (!data || typeof data !== 'object') { return data; } - for (const [key, value] of Object.entries(data)) { + + // handle special keys + for (const key of Object.keys(data)) { + const value = data[key]; if (value === undefined) { continue; } @@ -42,10 +70,7 @@ export class ResultProcessor { if (key === '_count') { // underlying database provider may return string for count data[key] = typeof value === 'string' ? JSON.parse(value) : value; - continue; - } - - if (key.startsWith(DELEGATE_JOINED_FIELD_PREFIX)) { + } else if (key.startsWith(DELEGATE_JOINED_FIELD_PREFIX)) { // merge delegate descendant fields if (value) { // descendant fields are packed as JSON @@ -59,34 +84,38 @@ export class ResultProcessor { delete data[key]; continue; } - const processedSubRow = this.processRow(subRow, subModel); + const subFields = this.resolveFields(subRow, subModel); + const processedSubRow = this.processRow(subRow, subFields); // merge the sub-row into the main row Object.assign(data, processedSubRow); } delete data[key]; - continue; } + } - const fieldDef = getField(this.schema, model, key); - if (!fieldDef) { + // process regular fields using pre-resolved field definitions + for (const fieldDef of fields) { + const value = data[fieldDef.name]; + if (value === undefined) { continue; } if (value === null) { // scalar list defaults to empty array - if (fieldDef.array && !fieldDef.relation && value === null) { - data[key] = []; + if (fieldDef.array && !fieldDef.relation) { + data[fieldDef.name] = []; } continue; } if (fieldDef.relation) { - data[key] = this.processRelation(value, fieldDef); + data[fieldDef.name] = this.processRelation(value, fieldDef); } else { - data[key] = this.processFieldValue(value, fieldDef); + data[fieldDef.name] = this.processFieldValue(value, fieldDef); } } + return data; } From a6ce14073042e981ecd6911d2eb1cdf4821a84ad Mon Sep 17 00:00:00 2001 From: Yiming Cao Date: Sun, 15 Mar 2026 21:21:24 -0700 Subject: [PATCH 16/41] perf(orm): batch many-to-many relation manipulation (#2486) --- .../orm/src/client/crud/operations/base.ts | 162 ++++++++---------- 1 file changed, 73 insertions(+), 89 deletions(-) diff --git a/packages/orm/src/client/crud/operations/base.ts b/packages/orm/src/client/crud/operations/base.ts index ff742dab1..46306c034 100644 --- a/packages/orm/src/client/crud/operations/base.ts +++ b/packages/orm/src/client/crud/operations/base.ts @@ -3,10 +3,8 @@ import { clone, enumerate, invariant, isPlainObject } from '@zenstackhq/common-h import { default as cuid1 } from 'cuid'; import { createQueryId, - DeleteResult, expressionBuilder, sql, - UpdateResult, type Compilable, type ExpressionBuilder, type IsolationLevel, @@ -565,7 +563,7 @@ export abstract class BaseOperationHandler { fromRelation.ids, m2m.otherModel, m2m.otherField, - createdEntity, + [createdEntity], m2m.joinTable, ); } @@ -657,40 +655,39 @@ export abstract class BaseOperationHandler { leftEntity: any, rightModel: string, rightField: string, - rightEntity: any, + rightEntities: any[], joinTable: string, - ): Promise { - const sortedRecords = [ - { - model: leftModel, - field: leftField, - entity: leftEntity, - }, - { - model: rightModel, - field: rightField, - entity: rightEntity, - }, - ].sort((a, b) => - // the implicit m2m join table's "A", "B" fk fields' order is determined - // by model name's sort order, and when identical (for self-relations), - // field name's sort order - a.model !== b.model ? a.model.localeCompare(b.model) : a.field.localeCompare(b.field), - ); + ): Promise { + if (rightEntities.length === 0) { + return; + } + + // the implicit m2m join table's "A", "B" fk fields' order is determined + // by model name's sort order, and when identical (for self-relations), + // field name's sort order + const leftFirst = + leftModel !== rightModel + ? leftModel.localeCompare(rightModel) <= 0 + : leftField.localeCompare(rightField) <= 0; - const firstIds = requireIdFields(this.schema, sortedRecords[0]!.model); - const secondIds = requireIdFields(this.schema, sortedRecords[1]!.model); - invariant(firstIds.length === 1, 'many-to-many relation must have exactly one id field'); - invariant(secondIds.length === 1, 'many-to-many relation must have exactly one id field'); + const leftIdField = requireIdFields(this.schema, leftModel); + const rightIdField = requireIdFields(this.schema, rightModel); + invariant(leftIdField.length === 1, 'many-to-many relation must have exactly one id field'); + invariant(rightIdField.length === 1, 'many-to-many relation must have exactly one id field'); + + const leftIdValue = leftEntity[leftIdField[0]!]; + const rightIdValues = rightEntities.map((e) => e[rightIdField[0]!]); // Prisma's convention for many-to-many: fk fields are named "A" and "B" if (action === 'connect') { - const result = await kysely + const values = rightIdValues.map((rightId) => ({ + A: leftFirst ? leftIdValue : rightId, + B: leftFirst ? rightId : leftIdValue, + })); + + await kysely .insertInto(joinTable as any) - .values({ - A: sortedRecords[0]!.entity[firstIds[0]!], - B: sortedRecords[1]!.entity[secondIds[0]!], - } as any) + .values(values as any) // case for `INSERT IGNORE` or `ON CONFLICT DO NOTHING` syntax .$if(this.dialect.insertIgnoreMethod === 'onConflict', (qb) => qb.onConflict((oc) => oc.columns(['A', 'B'] as any).doNothing()), @@ -698,15 +695,15 @@ export abstract class BaseOperationHandler { // case for `INSERT IGNORE` syntax .$if(this.dialect.insertIgnoreMethod === 'ignore', (qb) => qb.ignore()) .execute(); - return result[0] as any; } else { const eb = expressionBuilder(); - const result = await kysely + const [leftCol, rightCol] = leftFirst ? (['A', 'B'] as const) : (['B', 'A'] as const); + + await kysely .deleteFrom(joinTable as any) - .where(eb(`${joinTable}.A`, '=', sortedRecords[0]!.entity[firstIds[0]!])) - .where(eb(`${joinTable}.B`, '=', sortedRecords[1]!.entity[secondIds[0]!])) + .where(eb(`${joinTable}.${leftCol}`, '=', leftIdValue)) + .where(eb(`${joinTable}.${rightCol}`, 'in', rightIdValues)) .execute(); - return result[0] as any; } } @@ -1921,31 +1918,22 @@ export abstract class BaseOperationHandler { const m2m = getManyToManyRelation(this.schema, fromRelation.model, fromRelation.field); if (m2m) { - // handle many-to-many relation - const results: (unknown | undefined)[] = []; - for (const d of _data) { - const ids = await this.getEntityIds(kysely, model, d); - if (!ids) { - throw createNotFoundError(model); - } - const r = await this.handleManyToManyRelation( - kysely, - 'connect', - fromRelation.model, - fromRelation.field, - fromRelation.ids, - m2m.otherModel!, - m2m.otherField!, - ids, - m2m.joinTable, - ); - results.push(r); - } - - // validate connect result - if (_data.length > results.filter((r) => !!r).length) { + // handle many-to-many relation: batch fetch all entity IDs in one query + const allIds = await this.getEntitiesIds(kysely, model, _data); + if (allIds.length !== _data.length) { throw createNotFoundError(model); } + await this.handleManyToManyRelation( + kysely, + 'connect', + fromRelation.model, + fromRelation.field, + fromRelation.ids, + m2m.otherModel!, + m2m.otherField!, + allIds, + m2m.joinTable, + ); } else { const { ownedByModel, keyPairs } = getRelationForeignKeyFieldPairs( this.schema, @@ -2057,13 +2045,9 @@ export abstract class BaseOperationHandler { const m2m = getManyToManyRelation(this.schema, fromRelation.model, fromRelation.field); if (m2m) { - // handle many-to-many relation - for (const d of disconnectConditions) { - const ids = await this.getEntityIds(kysely, model, d); - if (!ids) { - // not found - return; - } + // handle many-to-many relation: batch fetch all entity IDs in one query + const allIds = await this.getEntitiesIds(kysely, model, disconnectConditions); + if (allIds.length > 0) { await this.handleManyToManyRelation( kysely, 'disconnect', @@ -2072,7 +2056,7 @@ export abstract class BaseOperationHandler { fromRelation.ids, m2m.otherModel, m2m.otherField, - ids, + allIds, m2m.joinTable, ); } @@ -2158,32 +2142,24 @@ export abstract class BaseOperationHandler { // reset for the parent await this.resetManyToManyRelation(kysely, fromRelation.model, fromRelation.field, fromRelation.ids); - // connect new entities - const results: (unknown | undefined)[] = []; - for (const d of _data) { - const ids = await this.getEntityIds(kysely, model, d); - if (!ids) { + if (_data.length > 0) { + // batch fetch all entity IDs in one query + const allIds = await this.getEntitiesIds(kysely, model, _data); + if (allIds.length !== _data.length) { throw createNotFoundError(model); } - results.push( - await this.handleManyToManyRelation( - kysely, - 'connect', - fromRelation.model, - fromRelation.field, - fromRelation.ids, - m2m.otherModel, - m2m.otherField, - ids, - m2m.joinTable, - ), + await this.handleManyToManyRelation( + kysely, + 'connect', + fromRelation.model, + fromRelation.field, + fromRelation.ids, + m2m.otherModel, + m2m.otherField, + allIds, + m2m.joinTable, ); } - - // validate connect result - if (_data.length > results.filter((r) => !!r).length) { - throw createNotFoundError(model); - } } else { const { ownedByModel, keyPairs } = getRelationForeignKeyFieldPairs( this.schema, @@ -2533,6 +2509,14 @@ export abstract class BaseOperationHandler { }); } + // Given multiple unique filters, load all matching entities and return their id fields in one query + private getEntitiesIds(kysely: AnyKysely, model: string, uniqueFilters: any[]) { + return this.read(kysely, model, { + where: { OR: uniqueFilters }, + select: this.makeIdSelect(model), + } as any); + } + /** * Normalize input args to strip `undefined` fields */ From 12aeb7bd1869a042c5f6be119264af9d57cec627 Mon Sep 17 00:00:00 2001 From: Eugen Istoc Date: Mon, 16 Mar 2026 18:33:50 -0400 Subject: [PATCH 17/41] feat(orm): add result plugin extension point (#2442) Co-authored-by: Claude Opus 4.6 --- packages/orm/src/client/client-impl.ts | 294 +++++- packages/orm/src/client/contract.ts | 96 +- packages/orm/src/client/crud-types.ts | 149 ++- packages/orm/src/client/plugin.ts | 59 +- packages/orm/src/client/zod/factory.ts | 21 +- packages/plugins/policy/src/plugin.ts | 2 +- tests/e2e/orm/plugin-infra/ext-result.test.ts | 899 ++++++++++++++++++ .../e2e/orm/plugin-infra/ext-result/input.ts | 52 + .../e2e/orm/plugin-infra/ext-result/models.ts | 11 + .../e2e/orm/plugin-infra/ext-result/schema.ts | 82 ++ .../orm/plugin-infra/ext-result/schema.zmodel | 17 + 11 files changed, 1595 insertions(+), 87 deletions(-) create mode 100644 tests/e2e/orm/plugin-infra/ext-result.test.ts create mode 100644 tests/e2e/orm/plugin-infra/ext-result/input.ts create mode 100644 tests/e2e/orm/plugin-infra/ext-result/models.ts create mode 100644 tests/e2e/orm/plugin-infra/ext-result/schema.ts create mode 100644 tests/e2e/orm/plugin-infra/ext-result/schema.zmodel diff --git a/packages/orm/src/client/client-impl.ts b/packages/orm/src/client/client-impl.ts index 3184b0237..985f3e5cb 100644 --- a/packages/orm/src/client/client-impl.ts +++ b/packages/orm/src/client/client-impl.ts @@ -41,6 +41,12 @@ import * as BuiltinFunctions from './functions'; import { SchemaDbPusher } from './helpers/schema-db-pusher'; import type { ClientOptions, ProceduresOptions } from './options'; import type { AnyPlugin } from './plugin'; + +type ExtResultFieldDef = { + needs: Record; + compute: (data: Record) => unknown; +}; +import { getField } from './query-utils'; import { createZenStackPromise, type ZenStackPromise } from './promise'; import { ResultProcessor } from './result-processor'; @@ -582,6 +588,11 @@ function createModelCrudHandler( inputValidator: InputValidator, resultProcessor: ResultProcessor, ): ModelOperations { + // check if any plugin defines ext result fields + const plugins = client.$options.plugins ?? []; + const schema = client.$schema; + const hasAnyExtResult = hasExtResultFieldDefs(plugins); + const createPromise = ( operation: CoreCrudOperations, nominalOperation: AllCrudOperations, @@ -592,17 +603,30 @@ function createModelCrudHandler( ) => { return createZenStackPromise(async (txClient?: ClientContract) => { let proceed = async (_args: unknown) => { + // prepare args for ext result: strip ext result field names from select/omit, + // inject needs fields into select (recursively handles nested relations) + const shouldApplyExtResult = hasAnyExtResult && EXT_RESULT_OPERATIONS.has(operation); + const processedArgs = shouldApplyExtResult + ? prepareArgsForExtResult(_args, model, schema, plugins) + : _args; + const _handler = txClient ? handler.withClient(txClient) : handler; - const r = await _handler.handle(operation, _args); + const r = await _handler.handle(operation, processedArgs); if (!r && throwIfNoResult) { throw createNotFoundError(model); } let result: unknown; if (r && postProcess) { - result = resultProcessor.processResult(r, model, args); + result = resultProcessor.processResult(r, model, processedArgs); } else { result = r ?? null; } + + // compute ext result fields (recursively handles nested relations) + if (result && shouldApplyExtResult) { + result = applyExtResult(result, model, _args, schema, plugins); + } + return result; }; @@ -858,3 +882,269 @@ function createModelCrudHandler( return operations as ModelOperations; } + +// #region Extended result field helpers + +// operations that return model rows and should have ext result fields applied +const EXT_RESULT_OPERATIONS = new Set([ + 'findMany', + 'findUnique', + 'findFirst', + 'create', + 'createManyAndReturn', + 'update', + 'updateManyAndReturn', + 'upsert', + 'delete', +]); + +/** + * Returns true if any plugin defines ext result fields for any model. + */ +function hasExtResultFieldDefs(plugins: AnyPlugin[]): boolean { + return plugins.some((p) => p.result && Object.keys(p.result).length > 0); +} + +/** + * Collects extended result field definitions from all plugins for a given model. + */ +function collectExtResultFieldDefs( + model: string, + schema: SchemaDef, + plugins: AnyPlugin[], +): Map { + const defs = new Map(); + for (const plugin of plugins) { + const resultConfig = plugin.result; + if (resultConfig) { + const modelConfig = resultConfig[lowerCaseFirst(model)]; + if (modelConfig) { + for (const [fieldName, fieldDef] of Object.entries(modelConfig)) { + if (getField(schema, model, fieldName)) { + throw new Error( + `Plugin "${plugin.id}" registers ext result field "${fieldName}" on model "${model}" which conflicts with an existing model field`, + ); + } + for (const needField of Object.keys((fieldDef as ExtResultFieldDef).needs ?? {})) { + const needDef = getField(schema, model, needField); + if (!needDef || needDef.relation) { + throw new Error( + `Plugin "${plugin.id}" registers ext result field "${fieldName}" on model "${model}" with invalid need "${needField}"`, + ); + } + } + defs.set(fieldName, fieldDef as ExtResultFieldDef); + } + } + } + } + return defs; +} + +/** + * Prepares query args for extended result fields (recursive): + * - Strips ext result field names from `select` and `omit` + * - Injects `needs` fields into `select` when ext result fields are explicitly selected + * - Recurses into `include` and `select` for nested relation fields + */ +function prepareArgsForExtResult( + args: unknown, + model: string, + schema: SchemaDef, + plugins: AnyPlugin[], +): unknown { + if (!args || typeof args !== 'object') { + return args; + } + + const extResultDefs = collectExtResultFieldDefs(model, schema, plugins); + const typedArgs = args as Record; + let result = typedArgs; + let changed = false; + + const select = typedArgs['select'] as Record | undefined; + const omit = typedArgs['omit'] as Record | undefined; + const include = typedArgs['include'] as Record | undefined; + + if (select && extResultDefs.size > 0) { + const newSelect = { ...select }; + for (const [fieldName, fieldDef] of extResultDefs) { + if (newSelect[fieldName]) { + delete newSelect[fieldName]; + // inject needs fields + for (const needField of Object.keys(fieldDef.needs)) { + if (!newSelect[needField]) { + newSelect[needField] = true; + } + } + } + } + result = { ...result, select: newSelect }; + changed = true; + } + + if (omit && extResultDefs.size > 0) { + const newOmit = { ...omit }; + for (const [fieldName, fieldDef] of extResultDefs) { + if (newOmit[fieldName]) { + // strip ext result field names from omit (they don't exist in the DB) + delete newOmit[fieldName]; + } else { + // this ext result field is active — ensure its needs are not omitted + for (const needField of Object.keys(fieldDef.needs)) { + if (newOmit[needField]) { + delete newOmit[needField]; + } + } + } + } + result = { ...result, omit: newOmit }; + changed = true; + } + + // Recurse into nested relations in `include` + if (include) { + const newInclude = { ...include }; + let includeChanged = false; + for (const [field, value] of Object.entries(newInclude)) { + if (value && typeof value === 'object') { + const fieldDef = getField(schema, model, field); + if (fieldDef?.relation) { + const targetModel = fieldDef.type; + const processed = prepareArgsForExtResult(value, targetModel, schema, plugins); + if (processed !== value) { + newInclude[field] = processed; + includeChanged = true; + } + } + } + } + if (includeChanged) { + result = changed ? { ...result, include: newInclude } : { ...typedArgs, include: newInclude }; + changed = true; + } + } + + // Recurse into nested relations in `select` (relation fields can have nested args) + if (select) { + const currentSelect = (changed ? (result as Record)['select'] : select) as + | Record + | undefined; + if (currentSelect) { + const newSelect = { ...currentSelect }; + let selectChanged = false; + for (const [field, value] of Object.entries(newSelect)) { + if (value && typeof value === 'object') { + const fieldDef = getField(schema, model, field); + if (fieldDef?.relation) { + const targetModel = fieldDef.type; + const processed = prepareArgsForExtResult(value, targetModel, schema, plugins); + if (processed !== value) { + newSelect[field] = processed; + selectChanged = true; + } + } + } + } + if (selectChanged) { + result = { ...result, select: newSelect }; + changed = true; + } + } + } + + return changed ? result : args; +} + +/** + * Applies extended result field computation to query results (recursive). + * Processes the current model's ext result fields, then recurses into nested relation data. + */ +function applyExtResult( + result: unknown, + model: string, + originalArgs: unknown, + schema: SchemaDef, + plugins: AnyPlugin[], +): unknown { + const extResultDefs = collectExtResultFieldDefs(model, schema, plugins); + if (Array.isArray(result)) { + for (let i = 0; i < result.length; i++) { + result[i] = applyExtResultToRow(result[i], model, originalArgs, schema, plugins, extResultDefs); + } + return result; + } else { + return applyExtResultToRow(result, model, originalArgs, schema, plugins, extResultDefs); + } +} + +function applyExtResultToRow( + row: unknown, + model: string, + originalArgs: unknown, + schema: SchemaDef, + plugins: AnyPlugin[], + extResultDefs: Map, +): unknown { + if (!row || typeof row !== 'object') { + return row; + } + + const data = row as Record; + const typedArgs = (originalArgs && typeof originalArgs === 'object' ? originalArgs : {}) as Record; + const select = typedArgs['select'] as Record | undefined; + const omit = typedArgs['omit'] as Record | undefined; + const include = typedArgs['include'] as Record | undefined; + + // Compute ext result fields for the current model + for (const [fieldName, fieldDef] of extResultDefs) { + if (select && !select[fieldName]) { + continue; + } + if (omit?.[fieldName]) { + continue; + } + const needsSatisfied = Object.keys(fieldDef.needs).every((needField) => needField in data); + if (needsSatisfied) { + data[fieldName] = fieldDef.compute(data); + } + } + + // Strip fields that shouldn't be in the result: when `select` was used, + // drop any field not in the original select and not a computed ext result field; + // when `omit` was used, re-delete any field the user originally omitted. + if (select) { + for (const key of Object.keys(data)) { + if (!select[key] && !extResultDefs.has(key)) { + delete data[key]; + } + } + } else if (omit) { + for (const key of Object.keys(omit)) { + if (omit[key] && !extResultDefs.has(key)) { + delete data[key]; + } + } + } + + // Recurse into nested relation data + const relationSource = include ?? select; + if (relationSource) { + for (const [field, value] of Object.entries(relationSource)) { + if (data[field] == null) { + continue; + } + const fieldDef = getField(schema, model, field); + if (!fieldDef?.relation) { + continue; + } + const targetModel = fieldDef.type; + const nestedArgs = value && typeof value === 'object' ? value : undefined; + data[field] = applyExtResult(data[field], targetModel, nestedArgs, schema, plugins); + } + } + + return data; +} + +// #endregion diff --git a/packages/orm/src/client/contract.ts b/packages/orm/src/client/contract.ts index 0b2abebc0..244d8bca4 100644 --- a/packages/orm/src/client/contract.ts +++ b/packages/orm/src/client/contract.ts @@ -41,7 +41,7 @@ import type { } from './crud-types'; import type { Diagnostics } from './diagnostics'; import type { ClientOptions, QueryOptions } from './options'; -import type { ExtClientMembersBase, ExtQueryArgsBase, RuntimePlugin } from './plugin'; +import type { ExtClientMembersBase, ExtQueryArgsBase, ExtResultBase, RuntimePlugin } from './plugin'; import type { ZenStackPromise } from './promise'; import type { ToKysely } from './query-builder'; import type { GetSlicedModels, GetSlicedOperations, GetSlicedProcedures } from './type-utils'; @@ -68,6 +68,7 @@ export type ClientContract< Options extends ClientOptions = ClientOptions, ExtQueryArgs extends ExtQueryArgsBase = {}, ExtClientMembers extends ExtClientMembersBase = {}, + ExtResult extends ExtResultBase = {}, > = { /** * The schema definition. @@ -125,7 +126,7 @@ export type ClientContract< /** * Sets the current user identity. */ - $setAuth(auth: AuthType | undefined): ClientContract; + $setAuth(auth: AuthType | undefined): ClientContract; /** * Returns a new client with new options applied. @@ -136,14 +137,14 @@ export type ClientContract< */ $setOptions>( options: NewOptions, - ): ClientContract; + ): ClientContract; /** * Returns a new client enabling/disabling query args validation. * * @deprecated Use {@link $setOptions} instead. */ - $setInputValidation(enable: boolean): ClientContract; + $setInputValidation(enable: boolean): ClientContract; /** * The Kysely query builder instance. @@ -159,7 +160,7 @@ export type ClientContract< * Starts an interactive transaction. */ $transaction( - callback: (tx: TransactionClientContract) => Promise, + callback: (tx: TransactionClientContract) => Promise, options?: { isolationLevel?: TransactionIsolationLevel }, ): Promise; @@ -178,14 +179,15 @@ export type ClientContract< PluginSchema extends SchemaDef = Schema, PluginExtQueryArgs extends ExtQueryArgsBase = {}, PluginExtClientMembers extends ExtClientMembersBase = {}, + PluginExtResult extends ExtResultBase = {}, >( - plugin: RuntimePlugin, - ): ClientContract; + plugin: RuntimePlugin, + ): ClientContract; /** * Returns a new client with the specified plugin removed. */ - $unuse(pluginId: string): ClientContract; + $unuse(pluginId: string): ClientContract; /** * Returns a new client with all plugins removed. @@ -218,7 +220,7 @@ export type ClientContract< */ get $diagnostics(): Promise; } & { - [Key in GetSlicedModels as Uncapitalize]: ModelOperations; + [Key in GetSlicedModels as Uncapitalize]: ModelOperations; } & ProcedureOperations & ExtClientMembers; @@ -230,7 +232,8 @@ export type TransactionClientContract< Options extends ClientOptions, ExtQueryArgs extends ExtQueryArgsBase, ExtClientMembers extends ExtClientMembersBase, -> = Omit, TransactionUnsupportedMethods>; + ExtResult extends ExtResultBase = {}, +> = Omit, TransactionUnsupportedMethods>; export type ProcedureOperations< Schema extends SchemaDef, @@ -298,7 +301,8 @@ export type AllModelOperations< Model extends GetModels, Options extends QueryOptions, ExtQueryArgs extends ExtQueryArgsBase, -> = CommonModelOperations & + ExtResult extends ExtResultBase = {}, +> = CommonModelOperations & // provider-specific operations (Schema['provider']['type'] extends 'mysql' ? {} @@ -321,9 +325,9 @@ export type AllModelOperations< * }); * ``` */ - createManyAndReturn>( - args?: SelectSubset>, - ): ZenStackPromise[]>; + createManyAndReturn>( + args?: SelectSubset>, + ): ZenStackPromise[]>; /** * Updates multiple entities and returns them. @@ -347,9 +351,9 @@ export type AllModelOperations< * }); * ``` */ - updateManyAndReturn>( - args: Subset>, - ): ZenStackPromise[]>; + updateManyAndReturn>( + args: Subset>, + ): ZenStackPromise[]>; }); type CommonModelOperations< @@ -357,6 +361,7 @@ type CommonModelOperations< Model extends GetModels, Options extends QueryOptions, ExtQueryArgs extends ExtQueryArgsBase, + ExtResult extends ExtResultBase = {}, > = { /** * Returns a list of entities. @@ -439,9 +444,9 @@ type CommonModelOperations< * }); // result: `{ _count: { posts: number } }` * ``` */ - findMany>( - args?: SelectSubset>, - ): ZenStackPromise[]>; + findMany>( + args?: SelectSubset>, + ): ZenStackPromise[]>; /** * Returns a uniquely identified entity. @@ -449,9 +454,9 @@ type CommonModelOperations< * @returns a single entity or null if not found * @see {@link findMany} */ - findUnique>( - args: SelectSubset>, - ): ZenStackPromise | null>; + findUnique>( + args: SelectSubset>, + ): ZenStackPromise | null>; /** * Returns a uniquely identified entity or throws `NotFoundError` if not found. @@ -459,9 +464,9 @@ type CommonModelOperations< * @returns a single entity * @see {@link findMany} */ - findUniqueOrThrow>( - args: SelectSubset>, - ): ZenStackPromise>; + findUniqueOrThrow>( + args: SelectSubset>, + ): ZenStackPromise>; /** * Returns the first entity. @@ -469,9 +474,9 @@ type CommonModelOperations< * @returns a single entity or null if not found * @see {@link findMany} */ - findFirst>( - args?: SelectSubset>, - ): ZenStackPromise | null>; + findFirst>( + args?: SelectSubset>, + ): ZenStackPromise | null>; /** * Returns the first entity or throws `NotFoundError` if not found. @@ -479,9 +484,9 @@ type CommonModelOperations< * @returns a single entity * @see {@link findMany} */ - findFirstOrThrow>( - args?: SelectSubset>, - ): ZenStackPromise>; + findFirstOrThrow>( + args?: SelectSubset>, + ): ZenStackPromise>; /** * Creates a new entity. @@ -535,9 +540,9 @@ type CommonModelOperations< * }); * ``` */ - create>( - args: SelectSubset>, - ): ZenStackPromise>; + create>( + args: SelectSubset>, + ): ZenStackPromise>; /** * Creates multiple entities. Only scalar fields are allowed. @@ -685,9 +690,9 @@ type CommonModelOperations< * }); * ``` */ - update>( - args: SelectSubset>, - ): ZenStackPromise>; + update>( + args: SelectSubset>, + ): ZenStackPromise>; /** * Updates multiple entities. @@ -733,9 +738,9 @@ type CommonModelOperations< * }); * ``` */ - upsert>( - args: SelectSubset>, - ): ZenStackPromise>; + upsert>( + args: SelectSubset>, + ): ZenStackPromise>; /** * Deletes a uniquely identifiable entity. @@ -756,9 +761,9 @@ type CommonModelOperations< * }); // result: `{ id: string; email: string }` * ``` */ - delete>( - args: SelectSubset>, - ): ZenStackPromise>; + delete>( + args: SelectSubset>, + ): ZenStackPromise>; /** * Deletes multiple entities. @@ -892,7 +897,8 @@ export type ModelOperations< Model extends GetModels, Options extends ClientOptions = ClientOptions, ExtQueryArgs extends ExtQueryArgsBase = {}, -> = SliceOperations, Schema, Model, Options>; + ExtResult extends ExtResultBase = {}, +> = SliceOperations, Schema, Model, Options>; //#endregion diff --git a/packages/orm/src/client/crud-types.ts b/packages/orm/src/client/crud-types.ts index 6c335cf93..230b162ff 100644 --- a/packages/orm/src/client/crud-types.ts +++ b/packages/orm/src/client/crud-types.ts @@ -58,7 +58,7 @@ import type { CoreUpdateOperations, } from './crud/operations/base'; import type { FilterKind, QueryOptions } from './options'; -import type { ExtQueryArgsBase } from './plugin'; +import type { ExtQueryArgsBase, ExtResultBase } from './plugin'; import type { ToKyselySchema } from './query-builder'; import type { GetSlicedFilterKindsForField, GetSlicedModels } from './type-utils'; @@ -152,21 +152,25 @@ type ModelSelectResult< Select, Omit, Options extends QueryOptions, + ExtResult extends ExtResultBase = {}, > = { [Key in keyof Select as Select[Key] extends false | undefined ? // not selected never - : Key extends '_count' - ? // select "_count" - Select[Key] extends SelectCount - ? Key - : never - : Key extends keyof Omit - ? Omit[Key] extends true - ? // omit - never - : Key - : Key]: Key extends '_count' + : Key extends keyof ExtractExtResult + ? // ext result field — handled by SelectAwareExtResult intersection in ModelResult + never + : Key extends '_count' + ? // select "_count" + Select[Key] extends SelectCount + ? Key + : never + : Key extends keyof Omit + ? Omit[Key] extends true + ? // omit + never + : Key + : Key]: Key extends '_count' ? // select "_count" result SelectCountResult : Key extends NonRelationFields @@ -180,7 +184,8 @@ type ModelSelectResult< Select[Key], Options, ModelFieldIsOptional, - FieldIsArray + FieldIsArray, + ExtResult > : never; }; @@ -201,12 +206,13 @@ export type ModelResult< Options extends QueryOptions = QueryOptions, Optional = false, Array = false, + ExtResult extends ExtResultBase = {}, > = WrapType< - Args extends { + (Args extends { select: infer S extends object; omit?: infer O extends object; } & Record - ? ModelSelectResult + ? ModelSelectResult : Args extends { include: infer I extends object; omit?: infer O extends object; @@ -222,7 +228,8 @@ export type ModelResult< I[Key], Options, ModelFieldIsOptional, - FieldIsArray + FieldIsArray, + ExtResult >; } & ('_count' extends keyof I ? I['_count'] extends false | undefined @@ -231,7 +238,8 @@ export type ModelResult< : {}) : Args extends { omit: infer O } & Record ? DefaultModelResult - : DefaultModelResult, + : DefaultModelResult) & + SelectAwareExtResult, Optional, Array >; @@ -243,14 +251,16 @@ export type SimplifiedResult< Options extends QueryOptions = QueryOptions, Optional = false, Array = false, -> = Simplify>; + ExtResult extends ExtResultBase = {}, +> = Simplify>; export type SimplifiedPlainResult< Schema extends SchemaDef, Model extends GetModels, Args = {}, Options extends QueryOptions = QueryOptions, -> = Simplify>; + ExtResult extends ExtResultBase = {}, +> = Simplify>; export type TypeDefResult< Schema extends SchemaDef, @@ -946,22 +956,23 @@ export type SelectIncludeOmit< AllowCount extends boolean, Options extends QueryOptions = QueryOptions, AllowRelation extends boolean = true, + ExtResult extends ExtResultBase = {}, > = { /** * Explicitly select fields and relations to be returned by the query. */ - select?: SelectInput | null; + select?: (SelectInput & ExtResultSelectOmitFields) | null; /** * Explicitly omit fields from the query result. */ - omit?: OmitInput | null; + omit?: (OmitInput & ExtResultSelectOmitFields) | null; } & (AllowRelation extends true ? { /** * Specifies relations to be included in the query result. All scalar fields are included. */ - include?: IncludeInput | null; + include?: IncludeInput | null; } : {}); @@ -971,9 +982,10 @@ export type SelectInput< Options extends QueryOptions = QueryOptions, AllowCount extends boolean = true, AllowRelation extends boolean = true, + ExtResult extends ExtResultBase = {}, > = { [Key in NonRelationFields]?: boolean; -} & (AllowRelation extends true ? IncludeInput : {}); +} & (AllowRelation extends true ? IncludeInput : {}); type SelectCount, Options extends QueryOptions> = | boolean @@ -995,6 +1007,7 @@ export type IncludeInput< Model extends GetModels, Options extends QueryOptions = QueryOptions, AllowCount extends boolean = true, + ExtResult extends ExtResultBase = {}, > = { [Key in RelationFields as RelationFieldType extends GetSlicedModels< Schema, @@ -1013,7 +1026,8 @@ export type IncludeInput< ? true : ModelFieldIsOptional extends true ? true - : false + : false, + ExtResult >; } & (AllowCount extends true ? // _count is only allowed if the model has to-many relations @@ -1087,7 +1101,7 @@ type RelationFilter< //#region Field utils -type MapModelFieldType< +export type MapModelFieldType< Schema extends SchemaDef, Model extends GetModels, Field extends GetModelFields, @@ -1203,6 +1217,7 @@ export type FindArgs< Options extends QueryOptions, Collection extends boolean, AllowFilter extends boolean = true, + ExtResult extends ExtResultBase = {}, > = (Collection extends true ? SortAndTakeArgs & (ProviderSupportsDistinct extends true @@ -1215,21 +1230,23 @@ export type FindArgs< : {}) : {}) & (AllowFilter extends true ? FilterArgs : {}) & - SelectIncludeOmit; + SelectIncludeOmit; export type FindManyArgs< Schema extends SchemaDef, Model extends GetModels, Options extends QueryOptions = QueryOptions, ExtQueryArgs extends ExtQueryArgsBase = {}, -> = FindArgs & ExtractExtQueryArgs; + ExtResult extends ExtResultBase = {}, +> = FindArgs & ExtractExtQueryArgs; export type FindFirstArgs< Schema extends SchemaDef, Model extends GetModels, Options extends QueryOptions = QueryOptions, ExtQueryArgs extends ExtQueryArgsBase = {}, -> = FindArgs & ExtractExtQueryArgs; + ExtResult extends ExtResultBase = {}, +> = FindArgs & ExtractExtQueryArgs; export type ExistsArgs< Schema extends SchemaDef, @@ -1243,9 +1260,10 @@ export type FindUniqueArgs< Model extends GetModels, Options extends QueryOptions = QueryOptions, ExtQueryArgs extends ExtQueryArgsBase = {}, + ExtResult extends ExtResultBase = {}, > = { where: WhereUniqueInput; -} & SelectIncludeOmit & +} & SelectIncludeOmit & ExtractExtQueryArgs; //#endregion @@ -1257,9 +1275,10 @@ export type CreateArgs< Model extends GetModels, Options extends QueryOptions = QueryOptions, ExtQueryArgs extends ExtQueryArgsBase = {}, + ExtResult extends ExtResultBase = {}, > = { data: CreateInput; -} & SelectIncludeOmit & +} & SelectIncludeOmit & ExtractExtQueryArgs; export type CreateManyArgs< @@ -1274,8 +1293,9 @@ export type CreateManyAndReturnArgs< Model extends GetModels, Options extends QueryOptions = QueryOptions, ExtQueryArgs extends ExtQueryArgsBase = {}, + ExtResult extends ExtResultBase = {}, > = CreateManyInput & - SelectIncludeOmit & + SelectIncludeOmit & ExtractExtQueryArgs; type OptionalWrap, T extends object> = Optional< @@ -1484,6 +1504,7 @@ export type UpdateArgs< Model extends GetModels, Options extends QueryOptions = QueryOptions, ExtQueryArgs extends ExtQueryArgsBase = {}, + ExtResult extends ExtResultBase = {}, > = { /** * The data to update the record with. @@ -1494,7 +1515,7 @@ export type UpdateArgs< * The unique filter to find the record to update. */ where: WhereUniqueInput; -} & SelectIncludeOmit & +} & SelectIncludeOmit & ExtractExtQueryArgs; export type UpdateManyArgs< @@ -1509,8 +1530,9 @@ export type UpdateManyAndReturnArgs< Model extends GetModels, Options extends QueryOptions = QueryOptions, ExtQueryArgs extends ExtQueryArgsBase = {}, + ExtResult extends ExtResultBase = {}, > = UpdateManyPayload & - SelectIncludeOmit & + SelectIncludeOmit & ExtractExtQueryArgs; type UpdateManyPayload< @@ -1540,6 +1562,7 @@ export type UpsertArgs< Model extends GetModels, Options extends QueryOptions = QueryOptions, ExtQueryArgs extends ExtQueryArgsBase = {}, + ExtResult extends ExtResultBase = {}, > = { /** * The data to create the record if it doesn't exist. @@ -1555,7 +1578,7 @@ export type UpsertArgs< * The unique filter to find the record to update. */ where: WhereUniqueInput; -} & SelectIncludeOmit & +} & SelectIncludeOmit & ExtractExtQueryArgs; type UpdateScalarInput< @@ -1777,12 +1800,13 @@ export type DeleteArgs< Model extends GetModels, Options extends QueryOptions = QueryOptions, ExtQueryArgs extends ExtQueryArgsBase = {}, + ExtResult extends ExtResultBase = {}, > = { /** * The unique filter to find the record to delete. */ where: WhereUniqueInput; -} & SelectIncludeOmit & +} & SelectIncludeOmit & ExtractExtQueryArgs; export type DeleteManyArgs< @@ -2409,4 +2433,59 @@ type ExtractExtQueryArgs = ( : {}) & ('$all' extends keyof ExtQueryArgs ? ExtQueryArgs['$all'] : {}); +/** + * Extracts extended result field types for a specific model from ExtResult. + * Maps `{ needs, compute }` definitions to `{ fieldName: ReturnType }`. + * When ExtResult is `{}`, this resolves to `{}` (no-op for intersection). + */ +export type ExtractExtResult = + Uncapitalize extends keyof ExtResult + ? { + [K in keyof ExtResult[Uncapitalize]]: ExtResult[Uncapitalize][K] extends { + compute: (...args: any[]) => infer R; + } + ? R + : never; + } + : {}; + +/** + * Extracts extended result field names as optional boolean keys for use in select/omit inputs. + * When ExtResult is `{}`, this resolves to `{}` (no-op for intersection). + */ +export type ExtResultSelectOmitFields = keyof ExtResult extends never + ? {} + : Uncapitalize extends keyof ExtResult + ? { [K in keyof ExtResult[Uncapitalize]]?: boolean } + : {}; + +type TruthyKeys = { + [K in Keys]: K extends keyof S ? (S[K] extends false | undefined ? never : K) : never; +}[Keys]; + +/** + * Select/omit-aware version of ExtractExtResult. + * - If T has `select`, only includes ext result fields that are explicitly selected. + * - If T has `omit`, excludes ext result fields that are explicitly omitted. + * - Otherwise, includes all ext result fields. + */ +export type SelectAwareExtResult = + keyof ExtResult extends never + ? {} + : T extends { select: infer S } + ? S extends null | undefined + ? ExtractExtResult + : Pick< + ExtractExtResult, + TruthyKeys>> + > + : T extends { omit: infer O } + ? O extends null | undefined + ? ExtractExtResult + : Omit< + ExtractExtResult, + TruthyKeys>> + > + : ExtractExtResult; + // #endregion diff --git a/packages/orm/src/client/plugin.ts b/packages/orm/src/client/plugin.ts index e531242e3..42a34b5f6 100644 --- a/packages/orm/src/client/plugin.ts +++ b/packages/orm/src/client/plugin.ts @@ -1,7 +1,7 @@ import type { OperationNode, QueryId, QueryResult, RootOperationNode, UnknownRow } from 'kysely'; import type { ZodType } from 'zod'; import type { ClientContract, ZModelFunction } from '.'; -import type { GetModels, SchemaDef } from '../schema'; +import type { GetModels, NonRelationFields, SchemaDef } from '../schema'; import type { MaybePromise } from '../utils/type-utils'; import type { AllCrudOperations, CoreCrudOperations } from './crud/operations/base'; @@ -20,6 +20,21 @@ export type ExtQueryArgsBase = { */ export type ExtClientMembersBase = Record; +/** + * Base shape of plugin-extended result fields. + * Keyed by model name, each value maps field names to their definitions. + * `needs` keys are constrained to non-relation fields of the corresponding model. + */ +export type ExtResultBase = { + [M in GetModels as Uncapitalize]?: Record< + string, + { + needs: Partial, true>>; + compute: (...args: any[]) => any; + } + >; +}; + /** * ZenStack runtime plugin. */ @@ -27,6 +42,7 @@ export interface RuntimePlugin< Schema extends SchemaDef, ExtQueryArgs extends ExtQueryArgsBase, ExtClientMembers extends Record, + ExtResult extends ExtResultBase = {}, > { /** * Plugin ID. @@ -81,9 +97,15 @@ export interface RuntimePlugin< * Extended client members (methods and properties). */ client?: ExtClientMembers; + + /** + * Extended result fields on query results. + * Keyed by model name, each value defines computed fields with `needs` and `compute`. + */ + result?: ExtResult; } -export type AnyPlugin = RuntimePlugin; +export type AnyPlugin = RuntimePlugin; /** * Defines a ZenStack runtime plugin. @@ -92,10 +114,41 @@ export function definePlugin< Schema extends SchemaDef, const ExtQueryArgs extends ExtQueryArgsBase = {}, const ExtClientMembers extends Record = {}, ->(plugin: RuntimePlugin): RuntimePlugin { + const ExtResult extends ExtResultBase = {}, +>( + plugin: RuntimePlugin, +): RuntimePlugin { return plugin; } +/** + * Defines a single extended result field with typed `compute` parameter. + * + * The `compute` callback receives an object whose keys match the `needs` declaration, + * providing autocomplete and type checking for needed fields. + * + * @example + * ```typescript + * definePlugin({ + * id: 'my-plugin', + * result: { + * user: { + * fullName: resultField({ + * needs: { firstName: true, lastName: true }, + * compute: (user) => `${user.firstName} ${user.lastName}`, + * }), + * }, + * }, + * }); + * ``` + */ +export function resultField, R>(def: { + needs: N; + compute: (data: { [K in keyof N]: any }) => R; +}): { needs: N; compute: (data: { [K in keyof N]: any }) => R } { + return def; +} + // #region OnProcedure hooks type OnProcedureCallback = (ctx: OnProcedureHookContext) => Promise; diff --git a/packages/orm/src/client/zod/factory.ts b/packages/orm/src/client/zod/factory.ts index f71a60a05..97ceec28b 100644 --- a/packages/orm/src/client/zod/factory.ts +++ b/packages/orm/src/client/zod/factory.ts @@ -131,7 +131,7 @@ export class ZodSchemaFactory< } } - private get plugins(): RuntimePlugin[] { + private get plugins(): RuntimePlugin[] { return this.options.plugins ?? []; } @@ -934,6 +934,8 @@ export class ZodSchemaFactory< } } + this.addExtResultFields(model, fields); + return z.strictObject(fields); } @@ -1039,9 +1041,26 @@ export class ZodSchemaFactory< } } } + + this.addExtResultFields(model, fields); + return z.strictObject(fields); } + private addExtResultFields(model: string, fields: Record) { + for (const plugin of this.plugins) { + const resultConfig = plugin.result; + if (resultConfig) { + const modelConfig = resultConfig[lowerCaseFirst(model)]; + if (modelConfig) { + for (const field of Object.keys(modelConfig)) { + fields[field] = z.boolean().optional(); + } + } + } + } + } + @cache() private makeIncludeSchema(model: string, options?: CreateSchemaOptions) { const modelDef = requireModel(this.schema, model); diff --git a/packages/plugins/policy/src/plugin.ts b/packages/plugins/policy/src/plugin.ts index 3f67309f3..d5cf192c4 100644 --- a/packages/plugins/policy/src/plugin.ts +++ b/packages/plugins/policy/src/plugin.ts @@ -3,7 +3,7 @@ import type { SchemaDef } from '@zenstackhq/orm/schema'; import { check } from './functions'; import { PolicyHandler } from './policy-handler'; -export class PolicyPlugin implements RuntimePlugin { +export class PolicyPlugin implements RuntimePlugin { get id() { return 'policy' as const; } diff --git a/tests/e2e/orm/plugin-infra/ext-result.test.ts b/tests/e2e/orm/plugin-infra/ext-result.test.ts new file mode 100644 index 000000000..56ed288cd --- /dev/null +++ b/tests/e2e/orm/plugin-infra/ext-result.test.ts @@ -0,0 +1,899 @@ +import { definePlugin, resultField, type ClientContract } from '@zenstackhq/orm'; +import { createTestClient } from '@zenstackhq/testtools'; +import { afterEach, beforeEach, describe, expect, it } from 'vitest'; +import { schema } from './ext-result/schema'; + +describe('Plugin extended result fields', () => { + let db: ClientContract; + + beforeEach(async () => { + db = await createTestClient(schema); + await db.user.deleteMany(); + }); + + afterEach(async () => { + await db?.$disconnect(); + }); + + it('should compute virtual fields on findMany results', async () => { + const extDb = db.$use( + definePlugin({ + id: 'greeting', + result: { + user: { + greeting: { + needs: { name: true }, + compute: (user) => `Hello, ${user.name}!`, + }, + }, + }, + }), + ); + + await extDb.user.create({ data: { name: 'Alice' } }); + await extDb.user.create({ data: { name: 'Bob' } }); + + const users = await extDb.user.findMany({ orderBy: { id: 'asc' } }); + expect(users).toHaveLength(2); + expect(users[0]!.greeting).toBe('Hello, Alice!'); + expect(users[1]!.greeting).toBe('Hello, Bob!'); + }); + + it('should compute virtual fields on findUnique', async () => { + const extDb = db.$use( + definePlugin({ + id: 'greeting', + result: { + user: { + greeting: { + needs: { name: true }, + compute: (user) => `Hello, ${user.name}!`, + }, + }, + }, + }), + ); + + const created = await extDb.user.create({ data: { name: 'Alice' } }); + const user = await extDb.user.findUnique({ where: { id: created.id } }); + expect(user?.greeting).toBe('Hello, Alice!'); + }); + + it('should compute virtual fields on findFirst', async () => { + const extDb = db.$use( + definePlugin({ + id: 'greeting', + result: { + user: { + upperName: { + needs: { name: true }, + compute: (user) => user.name.toUpperCase(), + }, + }, + }, + }), + ); + + await extDb.user.create({ data: { name: 'Alice' } }); + const user = await extDb.user.findFirst(); + expect(user?.upperName).toBe('ALICE'); + }); + + it('should compute virtual fields on findUniqueOrThrow and findFirstOrThrow', async () => { + const extDb = db.$use( + definePlugin({ + id: 'greeting', + result: { + user: { + upperName: { + needs: { name: true }, + compute: (user) => user.name.toUpperCase(), + }, + }, + }, + }), + ); + + const created = await extDb.user.create({ data: { name: 'Alice' } }); + const user1 = await extDb.user.findUniqueOrThrow({ where: { id: created.id } }); + expect(user1.upperName).toBe('ALICE'); + + const user2 = await extDb.user.findFirstOrThrow(); + expect(user2.upperName).toBe('ALICE'); + }); + + it('should compute virtual fields on create, update, upsert, delete', async () => { + const extDb = db.$use( + definePlugin({ + id: 'greeting', + result: { + user: { + upperName: { + needs: { name: true }, + compute: (user) => user.name.toUpperCase(), + }, + }, + }, + }), + ); + + // create + const created = await extDb.user.create({ data: { name: 'Alice' } }); + expect(created.upperName).toBe('ALICE'); + + // update + const updated = await extDb.user.update({ + where: { id: created.id }, + data: { name: 'Bob' }, + }); + expect(updated.upperName).toBe('BOB'); + + // upsert + const upserted = await extDb.user.upsert({ + where: { id: created.id }, + create: { name: 'Charlie' }, + update: { name: 'Charlie' }, + }); + expect(upserted.upperName).toBe('CHARLIE'); + + // delete + const deleted = await extDb.user.delete({ where: { id: created.id } }); + expect(deleted.upperName).toBe('CHARLIE'); + }); + + it('should compute virtual fields on createManyAndReturn', async () => { + if ((db.$schema.provider.type as string) === 'mysql') { + // MySQL does not support createManyAndReturn + return; + } + + const extDb = db.$use( + definePlugin({ + id: 'greeting', + result: { + user: { + upperName: { + needs: { name: true }, + compute: (user) => user.name.toUpperCase(), + }, + }, + }, + }), + ); + + const users = await extDb.user.createManyAndReturn({ + data: [{ name: 'Alice' }, { name: 'Bob' }], + }); + expect(users).toHaveLength(2); + expect(users[0]!.upperName).toBe('ALICE'); + expect(users[1]!.upperName).toBe('BOB'); + }); + + it('should NOT compute virtual fields on count, exists, createMany, updateMany, deleteMany', async () => { + const extDb = db.$use( + definePlugin({ + id: 'greeting', + result: { + user: { + upperName: { + needs: { name: true }, + compute: (user) => user.name.toUpperCase(), + }, + }, + }, + }), + ); + + await extDb.user.create({ data: { name: 'Alice' } }); + + const count = await extDb.user.count(); + expect(count).toBe(1); + expect((count as any).upperName).toBeUndefined(); + + const exists = await extDb.user.exists({ where: { id: 1 } }); + expect(typeof exists).toBe('boolean'); + + const createManyResult = await extDb.user.createMany({ data: [{ name: 'Bob' }] }); + expect(createManyResult.count).toBe(1); + expect((createManyResult as any).upperName).toBeUndefined(); + + const updateManyResult = await extDb.user.updateMany({ + where: { name: 'Bob' }, + data: { name: 'Charlie' }, + }); + expect(updateManyResult.count).toBe(1); + expect((updateManyResult as any).upperName).toBeUndefined(); + + const deleteManyResult = await extDb.user.deleteMany({ where: { name: 'Charlie' } }); + expect(deleteManyResult.count).toBe(1); + expect((deleteManyResult as any).upperName).toBeUndefined(); + }); + + it('should compute only selected virtual fields when using select', async () => { + const extDb = db.$use( + definePlugin({ + id: 'greeting', + result: { + user: { + upperName: { + needs: { name: true }, + compute: (user) => user.name.toUpperCase(), + }, + idDoubled: { + needs: { id: true }, + compute: (user) => user.id * 2, + }, + }, + }, + }), + ); + + await extDb.user.create({ data: { name: 'Alice' } }); + + // Select only upperName — needs (name) should be injected and stripped + const users = await extDb.user.findMany({ select: { id: true, upperName: true } }); + expect(users[0]!.upperName).toBe('ALICE'); + expect((users[0] as any).idDoubled).toBeUndefined(); + // name was injected as a need but should be stripped from the result + expect((users[0] as any).name).toBeUndefined(); + // id was explicitly selected + expect(users[0]!.id).toBeDefined(); + }); + + it('should not compute virtual fields when not selected explicitly', async () => { + const extDb = db.$use( + definePlugin({ + id: 'greeting', + result: { + user: { + upperName: { + needs: { name: true }, + compute: (user) => user.name.toUpperCase(), + }, + }, + }, + }), + ); + + await extDb.user.create({ data: { name: 'Alice' } }); + + // Select only id — virtual field not selected, should not appear + const users = await extDb.user.findMany({ select: { id: true } }); + expect(users[0]!.id).toBeDefined(); + expect((users[0] as any).upperName).toBeUndefined(); + }); + + it('should exclude virtual fields when using omit', async () => { + const extDb = db.$use( + definePlugin({ + id: 'greeting', + result: { + user: { + upperName: { + needs: { name: true }, + compute: (user) => user.name.toUpperCase(), + }, + }, + }, + }), + ); + + await extDb.user.create({ data: { name: 'Alice' } }); + + const users = await extDb.user.findMany({ omit: { upperName: true } }); + expect(users[0]!.name).toBe('Alice'); + expect((users[0] as any).upperName).toBeUndefined(); + }); + + it('should still compute virtual fields when their needs dependency is omitted', async () => { + const extDb = db.$use( + definePlugin({ + id: 'greeting', + result: { + user: { + upperName: { + needs: { name: true }, + compute: (user) => user.name.toUpperCase(), + }, + }, + }, + }), + ); + + await extDb.user.create({ data: { name: 'Alice' } }); + + // omit the `name` field which is a `needs` dependency of `upperName` + const users = await extDb.user.findMany({ omit: { name: true } }); + // upperName should still be computed even though its needs dep was omitted + expect(users[0]!.upperName).toBe('ALICE'); + // the omitted `name` field should not appear in the result + expect((users[0] as any).name).toBeUndefined(); + }); + + it('should compose virtual fields from multiple plugins', async () => { + const plugin1 = definePlugin({ + id: 'plugin1', + result: { + user: { + upperName: { + needs: { name: true }, + compute: (user) => user.name.toUpperCase(), + }, + }, + }, + }); + + const plugin2 = definePlugin({ + id: 'plugin2', + result: { + user: { + idDoubled: { + needs: { id: true }, + compute: (user) => user.id * 2, + }, + }, + }, + }); + + const extDb = db.$use(plugin1).$use(plugin2); + await extDb.user.create({ data: { name: 'Alice' } }); + + const users = await extDb.user.findMany(); + expect(users[0]!.upperName).toBe('ALICE'); + expect(users[0]!.idDoubled).toBe(2); + }); + + it('should remove virtual fields when plugin is removed via $unuse', async () => { + const extDb = db.$use( + definePlugin({ + id: 'greeting', + result: { + user: { + upperName: { + needs: { name: true }, + compute: (user) => user.name.toUpperCase(), + }, + }, + }, + }), + ); + + await extDb.user.create({ data: { name: 'Alice' } }); + + const users1 = await extDb.user.findMany(); + expect(users1[0]!.upperName).toBe('ALICE'); + + const plainDb = extDb.$unuse('greeting'); + const users2 = await plainDb.user.findMany(); + expect((users2[0]! as any).upperName).toBeUndefined(); + }); + + it('should remove all virtual fields when $unuseAll is called', async () => { + const extDb = db + .$use( + definePlugin({ + id: 'p1', + result: { + user: { + upperName: { + needs: { name: true }, + compute: (user) => user.name.toUpperCase(), + }, + }, + }, + }), + ) + .$use( + definePlugin({ + id: 'p2', + result: { + user: { + idDoubled: { + needs: { id: true }, + compute: (user) => user.id * 2, + }, + }, + }, + }), + ); + + await extDb.user.create({ data: { name: 'Alice' } }); + + const users1 = await extDb.user.findMany(); + expect(users1[0]!.upperName).toBe('ALICE'); + expect(users1[0]!.idDoubled).toBe(2); + + const cleanDb = extDb.$unuseAll(); + const users2 = await cleanDb.user.findMany(); + expect((users2[0]! as any).upperName).toBeUndefined(); + expect((users2[0]! as any).idDoubled).toBeUndefined(); + }); + + it('should compute virtual fields inside $transaction', async () => { + const extDb = db.$use( + definePlugin({ + id: 'greeting', + result: { + user: { + upperName: { + needs: { name: true }, + compute: (user) => user.name.toUpperCase(), + }, + }, + }, + }), + ); + + await extDb.$transaction(async (tx) => { + const created = await tx.user.create({ data: { name: 'Alice' } }); + expect(created.upperName).toBe('ALICE'); + + const found = await tx.user.findFirst(); + expect(found?.upperName).toBe('ALICE'); + }); + }); + + it('should accept virtual fields in select/omit via Zod validation', async () => { + const extDb = db.$use( + definePlugin({ + id: 'greeting', + result: { + user: { + upperName: { + needs: { name: true }, + compute: (user) => user.name.toUpperCase(), + }, + }, + }, + }), + ); + + await extDb.user.create({ data: { name: 'Alice' } }); + + // select with virtual field should not throw + await expect(extDb.user.findMany({ select: { id: true, upperName: true } })).resolves.toBeDefined(); + + // omit with virtual field should not throw + await expect(extDb.user.findMany({ omit: { upperName: true } })).resolves.toBeDefined(); + }); + + it('should handle virtual fields that depend on multiple needs', async () => { + const extDb = db.$use( + definePlugin({ + id: 'full-info', + result: { + user: { + fullInfo: { + needs: { id: true, name: true }, + compute: (user) => `${user.id}:${user.name}`, + }, + }, + }, + }), + ); + + const created = await extDb.user.create({ data: { name: 'Alice' } }); + const users = await extDb.user.findMany(); + expect(users[0]!.fullInfo).toBe(`${created.id}:Alice`); + }); + + it('should inject needs and strip them when using select with virtual field', async () => { + const extDb = db.$use( + definePlugin({ + id: 'full-info', + result: { + user: { + fullInfo: { + needs: { id: true, name: true }, + compute: (user) => `${user.id}:${user.name}`, + }, + }, + }, + }), + ); + + await extDb.user.create({ data: { name: 'Alice' } }); + + // Select only the virtual field — needs (id, name) are injected but stripped + const users = await extDb.user.findMany({ select: { fullInfo: true } }); + expect(users).toHaveLength(1); + expect(users[0]!.fullInfo).toMatch(/^\d+:Alice$/); + // id and name were injected needs — should be stripped + expect((users[0] as any).id).toBeUndefined(); + expect((users[0] as any).name).toBeUndefined(); + }); + + it('should not strip needs fields that were explicitly selected', async () => { + const extDb = db.$use( + definePlugin({ + id: 'full-info', + result: { + user: { + upperName: { + needs: { name: true }, + compute: (user) => user.name.toUpperCase(), + }, + }, + }, + }), + ); + + await extDb.user.create({ data: { name: 'Alice' } }); + + // Explicitly select both the virtual field and its need + const users = await extDb.user.findMany({ select: { name: true, upperName: true } }); + expect(users).toHaveLength(1); + expect(users[0]!.upperName).toBe('ALICE'); + // name was explicitly selected — should NOT be stripped + expect(users[0]!.name).toBe('Alice'); + }); + + it('should have correct types when select includes ext result fields', async () => { + const extDb = db.$use( + definePlugin({ + id: 'typing-test', + result: { + user: { + upperName: { + needs: { name: true }, + compute: (user) => user.name.toUpperCase(), + }, + idDoubled: { + needs: { id: true }, + compute: (user) => user.id * 2, + }, + }, + }, + }), + ); + + await extDb.user.create({ data: { name: 'Alice' } }); + + // When selecting only upperName, the result type should include upperName but not idDoubled + const selected = await extDb.user.findMany({ select: { upperName: true } }); + const first = selected[0]!; + // upperName should be accessible + const _upper: string = first.upperName; + expect(_upper).toBe('ALICE'); + // idDoubled should NOT be in the type + // @ts-expect-error - idDoubled was not selected + first.idDoubled; + // id should NOT be in the type (not selected) + // @ts-expect-error - id was not selected + first.id; + + // When omitting upperName, idDoubled should still be present + const omitted = await extDb.user.findMany({ omit: { upperName: true } }); + const omittedFirst = omitted[0]!; + // idDoubled should be accessible + const _doubled: number = omittedFirst.idDoubled; + expect(_doubled).toBe(2); + // upperName should NOT be in the type + // @ts-expect-error - upperName was omitted + omittedFirst.upperName; + + // When no select/omit, both should be present + const all = await extDb.user.findMany(); + const allFirst = all[0]!; + const _u: string = allFirst.upperName; + const _d: number = allFirst.idDoubled; + expect(_u).toBe('ALICE'); + expect(_d).toBe(2); + }); + + it('should compute ext result fields on included relations', async () => { + const extDb = db.$use( + definePlugin({ + id: 'post-ext', + result: { + post: { + upperTitle: { + needs: { title: true }, + compute: (post) => post.title.toUpperCase(), + }, + }, + }, + }), + ); + + const user = await extDb.user.create({ data: { name: 'Alice' } }); + await extDb.post.create({ data: { title: 'Hello World', authorId: user.id } }); + await extDb.post.create({ data: { title: 'Second Post', authorId: user.id } }); + + const users = await extDb.user.findMany({ include: { posts: true } }); + expect(users).toHaveLength(1); + expect(users[0]!.posts).toHaveLength(2); + expect(users[0]!.posts[0]!.upperTitle).toBe('HELLO WORLD'); + expect(users[0]!.posts[1]!.upperTitle).toBe('SECOND POST'); + }); + + it('should compute ext result fields on both parent and nested relations', async () => { + const extDb = db.$use( + definePlugin({ + id: 'both-ext', + result: { + user: { + upperName: { + needs: { name: true }, + compute: (user) => user.name.toUpperCase(), + }, + }, + post: { + upperTitle: { + needs: { title: true }, + compute: (post) => post.title.toUpperCase(), + }, + }, + }, + }), + ); + + await extDb.user.create({ data: { name: 'Alice' } }); + await extDb.post.create({ data: { title: 'Hello', authorId: 1 } }); + + const users = await extDb.user.findMany({ include: { posts: true } }); + expect(users[0]!.upperName).toBe('ALICE'); + expect(users[0]!.posts[0]!.upperTitle).toBe('HELLO'); + }); + + it('should handle ext result fields on nested relations with select', async () => { + const extDb = db.$use( + definePlugin({ + id: 'post-ext', + result: { + post: { + upperTitle: { + needs: { title: true }, + compute: (post) => post.title.toUpperCase(), + }, + }, + }, + }), + ); + + await extDb.user.create({ data: { name: 'Alice' } }); + await extDb.post.create({ data: { title: 'Hello', authorId: 1 } }); + + // Include posts with select that includes the ext result field + const users = await extDb.user.findMany({ + include: { posts: { select: { id: true, upperTitle: true } } }, + }); + expect(users[0]!.posts[0]!.upperTitle).toBe('HELLO'); + // title was injected as a need but should be stripped + expect((users[0]!.posts[0]! as any).title).toBeUndefined(); + // id was explicitly selected + expect(users[0]!.posts[0]!.id).toBeDefined(); + }); + + it('should NOT compute ext result fields on nested relations when omitted', async () => { + const extDb = db.$use( + definePlugin({ + id: 'post-ext', + result: { + post: { + upperTitle: { + needs: { title: true }, + compute: (post) => post.title.toUpperCase(), + }, + }, + }, + }), + ); + + await extDb.user.create({ data: { name: 'Alice' } }); + await extDb.post.create({ data: { title: 'Hello', authorId: 1 } }); + + const users = await extDb.user.findMany({ + include: { posts: { omit: { upperTitle: true } } }, + }); + expect(users[0]!.posts[0]!.title).toBe('Hello'); + expect((users[0]!.posts[0]! as any).upperTitle).toBeUndefined(); + }); + + it('should compute ext result fields on relations fetched via select', async () => { + const extDb = db.$use( + definePlugin({ + id: 'post-ext', + result: { + post: { + upperTitle: { + needs: { title: true }, + compute: (post) => post.title.toUpperCase(), + }, + }, + }, + }), + ); + + await extDb.user.create({ data: { name: 'Alice' } }); + await extDb.post.create({ data: { title: 'Hello', authorId: 1 } }); + + // Use top-level select that includes a relation + const users = await extDb.user.findMany({ + select: { id: true, posts: true }, + }); + expect(users[0]!.posts[0]!.upperTitle).toBe('HELLO'); + }); + + it('should compute ext result fields on to-one nested relations', async () => { + const extDb = db.$use( + definePlugin({ + id: 'user-ext', + result: { + user: { + upperName: { + needs: { name: true }, + compute: (user) => user.name.toUpperCase(), + }, + }, + }, + }), + ); + + await extDb.user.create({ data: { name: 'Alice' } }); + await extDb.post.create({ data: { title: 'Hello', authorId: 1 } }); + + // Include to-one relation (post.author) + const posts = await extDb.post.findMany({ include: { author: true } }); + expect(posts[0]!.author.upperName).toBe('ALICE'); + }); + + it('should have correct types for ext result fields on nested relations', async () => { + const extDb = db.$use( + definePlugin({ + id: 'nested-types', + result: { + user: { + upperName: { + needs: { name: true }, + compute: (user) => user.name.toUpperCase(), + }, + }, + post: { + upperTitle: { + needs: { title: true }, + compute: (post) => post.title.toUpperCase(), + }, + }, + }, + }), + ); + + await extDb.user.create({ data: { name: 'Alice' } }); + await extDb.post.create({ data: { title: 'Hello', authorId: 1 } }); + + // include: { posts: true } — nested posts should have upperTitle in the type + const users = await extDb.user.findMany({ include: { posts: true } }); + const post = users[0]!.posts[0]!; + const _title: string = post.upperTitle; + expect(_title).toBe('HELLO'); + + // to-one relation — author should have upperName in the type + const posts = await extDb.post.findMany({ include: { author: true } }); + const author = posts[0]!.author; + const _name: string = author.upperName; + expect(_name).toBe('ALICE'); + + // Without include, nested ext result fields should not appear + const plainUsers = await extDb.user.findMany(); + // @ts-expect-error - posts not included, so no posts property + plainUsers[0]!.posts; + // But top-level ext result should work + const _topLevel: string = plainUsers[0]!.upperName; + expect(_topLevel).toBe('ALICE'); + }); + + it('should support resultField helper for typed compute', async () => { + const extDb = db.$use( + definePlugin({ + id: 'typed-compute', + result: { + user: { + upperName: resultField({ + needs: { name: true }, + compute: (user) => user.name.toUpperCase(), + }), + }, + post: { + titleAndContent: resultField({ + needs: { title: true, content: true }, + compute: (post) => `${post.title}: ${post.content ?? 'no content'}`, + }), + }, + }, + }), + ); + + await extDb.user.create({ data: { name: 'Alice' } }); + await extDb.post.create({ data: { title: 'Hello', content: 'World', authorId: 1 } }); + + const users = await extDb.user.findMany(); + expect(users[0]!.upperName).toBe('ALICE'); + + const posts = await extDb.post.findMany(); + expect(posts[0]!.titleAndContent).toBe('Hello: World'); + }); + + it('should ignore invalid model names in result config at runtime', async () => { + const extDb = db.$use( + definePlugin({ + id: 'bad-model', + result: { + userr: { + upperName: { + needs: { name: true }, + compute: (user) => user.name.toUpperCase(), + }, + }, + } as any, + }), + ); + + await extDb.user.create({ data: { name: 'Alice' } }); + // "userr" doesn't match any model, so no ext result fields are applied + const users = await extDb.user.findMany(); + expect(users[0]).not.toHaveProperty('upperName'); + }); + + it('should reject ext result fields that shadow real model fields', async () => { + await db.user.create({ data: { name: 'Alice' } }); + + const extDb = db.$use( + definePlugin({ + id: 'shadow', + result: { + user: { + name: { + needs: { id: true }, + compute: (user) => `name-${user.id}`, + }, + }, + } as any, + }), + ); + + await expect(extDb.user.findMany()).rejects.toThrow( + /conflicts with an existing model field/, + ); + }); + + it('should reject ext result fields with invalid needs field names', async () => { + const extDb = db.$use( + definePlugin({ + id: 'bad-needs', + result: { + user: { + upperName: { + needs: { nonExistentField: true }, + compute: (user) => String(user.nonExistentField), + }, + }, + } as any, + }), + ); + + await expect(extDb.user.findMany()).rejects.toThrow( + /invalid need "nonExistentField"/, + ); + }); + + it('should reject ext result fields with relation fields in needs', async () => { + const extDb = db.$use( + definePlugin({ + id: 'bad-needs-relation', + result: { + user: { + postCount: { + needs: { posts: true }, + compute: (user) => String(user.posts), + }, + }, + } as any, + }), + ); + + await expect(extDb.user.findMany()).rejects.toThrow( + /invalid need "posts"/, + ); + }); +}); diff --git a/tests/e2e/orm/plugin-infra/ext-result/input.ts b/tests/e2e/orm/plugin-infra/ext-result/input.ts new file mode 100644 index 000000000..c6b620ee6 --- /dev/null +++ b/tests/e2e/orm/plugin-infra/ext-result/input.ts @@ -0,0 +1,52 @@ +////////////////////////////////////////////////////////////////////////////////////////////// +// DO NOT MODIFY THIS FILE // +// This file is automatically generated by ZenStack CLI and should not be manually updated. // +////////////////////////////////////////////////////////////////////////////////////////////// + +/* eslint-disable */ + +import { type SchemaType as $Schema } from "./schema"; +import type { FindManyArgs as $FindManyArgs, FindUniqueArgs as $FindUniqueArgs, FindFirstArgs as $FindFirstArgs, ExistsArgs as $ExistsArgs, CreateArgs as $CreateArgs, CreateManyArgs as $CreateManyArgs, CreateManyAndReturnArgs as $CreateManyAndReturnArgs, UpdateArgs as $UpdateArgs, UpdateManyArgs as $UpdateManyArgs, UpdateManyAndReturnArgs as $UpdateManyAndReturnArgs, UpsertArgs as $UpsertArgs, DeleteArgs as $DeleteArgs, DeleteManyArgs as $DeleteManyArgs, CountArgs as $CountArgs, AggregateArgs as $AggregateArgs, GroupByArgs as $GroupByArgs, WhereInput as $WhereInput, SelectInput as $SelectInput, IncludeInput as $IncludeInput, OmitInput as $OmitInput, QueryOptions as $QueryOptions } from "@zenstackhq/orm"; +import type { SimplifiedPlainResult as $Result, SelectIncludeOmit as $SelectIncludeOmit } from "@zenstackhq/orm"; +export type UserFindManyArgs = $FindManyArgs<$Schema, "User">; +export type UserFindUniqueArgs = $FindUniqueArgs<$Schema, "User">; +export type UserFindFirstArgs = $FindFirstArgs<$Schema, "User">; +export type UserExistsArgs = $ExistsArgs<$Schema, "User">; +export type UserCreateArgs = $CreateArgs<$Schema, "User">; +export type UserCreateManyArgs = $CreateManyArgs<$Schema, "User">; +export type UserCreateManyAndReturnArgs = $CreateManyAndReturnArgs<$Schema, "User">; +export type UserUpdateArgs = $UpdateArgs<$Schema, "User">; +export type UserUpdateManyArgs = $UpdateManyArgs<$Schema, "User">; +export type UserUpdateManyAndReturnArgs = $UpdateManyAndReturnArgs<$Schema, "User">; +export type UserUpsertArgs = $UpsertArgs<$Schema, "User">; +export type UserDeleteArgs = $DeleteArgs<$Schema, "User">; +export type UserDeleteManyArgs = $DeleteManyArgs<$Schema, "User">; +export type UserCountArgs = $CountArgs<$Schema, "User">; +export type UserAggregateArgs = $AggregateArgs<$Schema, "User">; +export type UserGroupByArgs = $GroupByArgs<$Schema, "User">; +export type UserWhereInput = $WhereInput<$Schema, "User">; +export type UserSelect = $SelectInput<$Schema, "User">; +export type UserInclude = $IncludeInput<$Schema, "User">; +export type UserOmit = $OmitInput<$Schema, "User">; +export type UserGetPayload, Options extends $QueryOptions<$Schema> = $QueryOptions<$Schema>> = $Result<$Schema, "User", Args, Options>; +export type PostFindManyArgs = $FindManyArgs<$Schema, "Post">; +export type PostFindUniqueArgs = $FindUniqueArgs<$Schema, "Post">; +export type PostFindFirstArgs = $FindFirstArgs<$Schema, "Post">; +export type PostExistsArgs = $ExistsArgs<$Schema, "Post">; +export type PostCreateArgs = $CreateArgs<$Schema, "Post">; +export type PostCreateManyArgs = $CreateManyArgs<$Schema, "Post">; +export type PostCreateManyAndReturnArgs = $CreateManyAndReturnArgs<$Schema, "Post">; +export type PostUpdateArgs = $UpdateArgs<$Schema, "Post">; +export type PostUpdateManyArgs = $UpdateManyArgs<$Schema, "Post">; +export type PostUpdateManyAndReturnArgs = $UpdateManyAndReturnArgs<$Schema, "Post">; +export type PostUpsertArgs = $UpsertArgs<$Schema, "Post">; +export type PostDeleteArgs = $DeleteArgs<$Schema, "Post">; +export type PostDeleteManyArgs = $DeleteManyArgs<$Schema, "Post">; +export type PostCountArgs = $CountArgs<$Schema, "Post">; +export type PostAggregateArgs = $AggregateArgs<$Schema, "Post">; +export type PostGroupByArgs = $GroupByArgs<$Schema, "Post">; +export type PostWhereInput = $WhereInput<$Schema, "Post">; +export type PostSelect = $SelectInput<$Schema, "Post">; +export type PostInclude = $IncludeInput<$Schema, "Post">; +export type PostOmit = $OmitInput<$Schema, "Post">; +export type PostGetPayload, Options extends $QueryOptions<$Schema> = $QueryOptions<$Schema>> = $Result<$Schema, "Post", Args, Options>; diff --git a/tests/e2e/orm/plugin-infra/ext-result/models.ts b/tests/e2e/orm/plugin-infra/ext-result/models.ts new file mode 100644 index 000000000..03524da52 --- /dev/null +++ b/tests/e2e/orm/plugin-infra/ext-result/models.ts @@ -0,0 +1,11 @@ +////////////////////////////////////////////////////////////////////////////////////////////// +// DO NOT MODIFY THIS FILE // +// This file is automatically generated by ZenStack CLI and should not be manually updated. // +////////////////////////////////////////////////////////////////////////////////////////////// + +/* eslint-disable */ + +import { type SchemaType as $Schema } from "./schema"; +import type { ModelResult as $ModelResult } from "@zenstackhq/orm"; +export type User = $ModelResult<$Schema, "User">; +export type Post = $ModelResult<$Schema, "Post">; diff --git a/tests/e2e/orm/plugin-infra/ext-result/schema.ts b/tests/e2e/orm/plugin-infra/ext-result/schema.ts new file mode 100644 index 000000000..03c65045d --- /dev/null +++ b/tests/e2e/orm/plugin-infra/ext-result/schema.ts @@ -0,0 +1,82 @@ +////////////////////////////////////////////////////////////////////////////////////////////// +// DO NOT MODIFY THIS FILE // +// This file is automatically generated by ZenStack CLI and should not be manually updated. // +////////////////////////////////////////////////////////////////////////////////////////////// + +/* eslint-disable */ + +import { type SchemaDef, ExpressionUtils } from "@zenstackhq/schema"; +export class SchemaType implements SchemaDef { + provider = { + type: "sqlite" + } as const; + models = { + User: { + name: "User", + fields: { + id: { + name: "id", + type: "Int", + id: true, + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], + default: ExpressionUtils.call("autoincrement") + }, + name: { + name: "name", + type: "String" + }, + posts: { + name: "posts", + type: "Post", + array: true, + relation: { opposite: "author" } + } + }, + idFields: ["id"], + uniqueFields: { + id: { type: "Int" } + } + }, + Post: { + name: "Post", + fields: { + id: { + name: "id", + type: "Int", + id: true, + attributes: [{ name: "@id" }, { name: "@default", args: [{ name: "value", value: ExpressionUtils.call("autoincrement") }] }], + default: ExpressionUtils.call("autoincrement") + }, + title: { + name: "title", + type: "String" + }, + content: { + name: "content", + type: "String", + optional: true + }, + author: { + name: "author", + type: "User", + attributes: [{ name: "@relation", args: [{ name: "fields", value: ExpressionUtils.array("Int", [ExpressionUtils.field("authorId")]) }, { name: "references", value: ExpressionUtils.array("Int", [ExpressionUtils.field("id")]) }] }], + relation: { opposite: "posts", fields: ["authorId"], references: ["id"] } + }, + authorId: { + name: "authorId", + type: "Int", + foreignKeyFor: [ + "author" + ] + } + }, + idFields: ["id"], + uniqueFields: { + id: { type: "Int" } + } + } + } as const; + authType = "User" as const; + plugins = {}; +} +export const schema = new SchemaType(); diff --git a/tests/e2e/orm/plugin-infra/ext-result/schema.zmodel b/tests/e2e/orm/plugin-infra/ext-result/schema.zmodel new file mode 100644 index 000000000..5566b92c8 --- /dev/null +++ b/tests/e2e/orm/plugin-infra/ext-result/schema.zmodel @@ -0,0 +1,17 @@ +datasource db { + provider = "sqlite" +} + +model User { + id Int @id @default(autoincrement()) + name String + posts Post[] +} + +model Post { + id Int @id @default(autoincrement()) + title String + content String? + author User @relation(fields: [authorId], references: [id]) + authorId Int +} From c768af7b7c3742e8c941bb591a5fd0077aadb73a Mon Sep 17 00:00:00 2001 From: Yiming Cao Date: Tue, 17 Mar 2026 12:36:46 -0700 Subject: [PATCH 18/41] fix(orm): exclude Unsupported fields from ORM client (#2468) --- .../tanstack-query/src/common/types.ts | 21 +- packages/orm/src/client/client-impl.ts | 9 + packages/orm/src/client/contract.ts | 14 +- packages/orm/src/client/crud-types.ts | 25 +- .../src/client/crud/dialects/base-dialect.ts | 24 +- .../orm/src/client/executor/name-mapper.ts | 19 +- .../src/client/helpers/schema-db-pusher.ts | 7 +- packages/orm/src/client/query-utils.ts | 14 +- packages/orm/src/client/type-utils.ts | 33 +- packages/orm/src/client/zod/factory.ts | 139 +++++---- packages/schema/src/schema.ts | 23 +- tests/e2e/orm/client-api/delegate.test.ts | 2 +- .../e2e/orm/client-api/unsupported.test-d.ts | 134 ++++++++ tests/e2e/orm/client-api/unsupported.test.ts | 286 ++++++++++++++++++ .../e2e/orm/plugin-infra/ext-result/schema.ts | 14 +- tests/e2e/orm/schemas/unsupported/input.ts | 94 ++++++ tests/e2e/orm/schemas/unsupported/models.ts | 13 + tests/e2e/orm/schemas/unsupported/schema.ts | 133 ++++++++ .../e2e/orm/schemas/unsupported/schema.zmodel | 34 +++ 19 files changed, 906 insertions(+), 132 deletions(-) create mode 100644 tests/e2e/orm/client-api/unsupported.test-d.ts create mode 100644 tests/e2e/orm/client-api/unsupported.test.ts create mode 100644 tests/e2e/orm/schemas/unsupported/input.ts create mode 100644 tests/e2e/orm/schemas/unsupported/models.ts create mode 100644 tests/e2e/orm/schemas/unsupported/schema.ts create mode 100644 tests/e2e/orm/schemas/unsupported/schema.zmodel diff --git a/packages/clients/tanstack-query/src/common/types.ts b/packages/clients/tanstack-query/src/common/types.ts index f745ceeb4..a967869ed 100644 --- a/packages/clients/tanstack-query/src/common/types.ts +++ b/packages/clients/tanstack-query/src/common/types.ts @@ -3,11 +3,12 @@ import type { FetchFn } from '@zenstackhq/client-helpers/fetch'; import type { GetProcedureNames, GetSlicedOperations, - OperationsIneligibleForDelegateModels, + ModelAllowsCreate, + OperationsRequiringCreate, ProcedureFunc, QueryOptions, } from '@zenstackhq/orm'; -import type { GetModels, IsDelegateModel, SchemaDef } from '@zenstackhq/schema'; +import type { GetModels, SchemaDef } from '@zenstackhq/schema'; /** * Context type for configuring the hooks. @@ -59,8 +60,8 @@ export type ExtraMutationOptions = { optimisticDataProvider?: OptimisticDataProvider; } & QueryContext; -type HooksOperationsIneligibleForDelegateModels = OperationsIneligibleForDelegateModels extends any - ? `use${Capitalize}` +type HooksOperationsRequiringCreate = OperationsRequiringCreate extends any + ? `use${Capitalize}` : never; type Modifiers = '' | 'Suspense' | 'Infinite' | 'SuspenseInfinite'; @@ -76,12 +77,12 @@ export type TrimSlicedOperations< > = { // trim operations based on slicing options [Key in keyof T as Key extends `use${Modifiers}${Capitalize>}` - ? IsDelegateModel extends true - ? // trim operations ineligible for delegate models - Key extends HooksOperationsIneligibleForDelegateModels - ? never - : Key - : Key + ? ModelAllowsCreate extends true + ? Key + : // trim create operations for models that don't allow create + Key extends HooksOperationsRequiringCreate + ? never + : Key : never]: T[Key]; }; diff --git a/packages/orm/src/client/client-impl.ts b/packages/orm/src/client/client-impl.ts index 985f3e5cb..439735d49 100644 --- a/packages/orm/src/client/client-impl.ts +++ b/packages/orm/src/client/client-impl.ts @@ -48,6 +48,7 @@ type ExtResultFieldDef = { }; import { getField } from './query-utils'; import { createZenStackPromise, type ZenStackPromise } from './promise'; +import { fieldHasDefaultValue, isUnsupportedField, requireModel } from './query-utils'; import { ResultProcessor } from './result-processor'; /** @@ -880,6 +881,14 @@ function createModelCrudHandler( } } + // Remove create/upsert operations for models with required Unsupported fields + const modelDef = requireModel(client.$schema, model); + if (Object.values(modelDef.fields).some((f) => isUnsupportedField(f) && !f.optional && !fieldHasDefaultValue(f))) { + for (const op of ['create', 'createMany', 'createManyAndReturn', 'upsert'] as const) { + delete (operations as any)[op]; + } + } + return operations as ModelOperations; } diff --git a/packages/orm/src/client/contract.ts b/packages/orm/src/client/contract.ts index 244d8bca4..99f247d06 100644 --- a/packages/orm/src/client/contract.ts +++ b/packages/orm/src/client/contract.ts @@ -2,7 +2,6 @@ import { type FieldIsArray, type GetModels, type GetTypeDefs, - type IsDelegateModel, type ProcedureDef, type RelationFields, type RelationFieldType, @@ -44,7 +43,12 @@ import type { ClientOptions, QueryOptions } from './options'; import type { ExtClientMembersBase, ExtQueryArgsBase, ExtResultBase, RuntimePlugin } from './plugin'; import type { ZenStackPromise } from './promise'; import type { ToKysely } from './query-builder'; -import type { GetSlicedModels, GetSlicedOperations, GetSlicedProcedures } from './type-utils'; +import type { + GetSlicedModels, + GetSlicedOperations, + GetSlicedProcedures, + ModelAllowsCreate, +} from './type-utils'; import type { ZodSchemaFactory } from './zod/factory'; type TransactionUnsupportedMethods = (typeof TRANSACTION_UNSUPPORTED_METHODS)[number]; @@ -292,8 +296,8 @@ type SliceOperations< // keep only operations included by slicing options [Key in keyof T as Key extends GetSlicedOperations ? Key : never]: T[Key]; }, - // exclude operations not applicable to delegate models - IsDelegateModel extends true ? OperationsIneligibleForDelegateModels : never + // exclude create operations for models that don't allow create (delegate models, required Unsupported fields) + | (ModelAllowsCreate extends true ? never : OperationsRequiringCreate) >; export type AllModelOperations< @@ -890,7 +894,7 @@ type CommonModelOperations< ): ZenStackPromise; }; -export type OperationsIneligibleForDelegateModels = 'create' | 'createMany' | 'createManyAndReturn' | 'upsert'; +export type OperationsRequiringCreate = 'create' | 'createMany' | 'createManyAndReturn' | 'upsert'; export type ModelOperations< Schema extends SchemaDef, diff --git a/packages/orm/src/client/crud-types.ts b/packages/orm/src/client/crud-types.ts index 230b162ff..18bdd7183 100644 --- a/packages/orm/src/client/crud-types.ts +++ b/packages/orm/src/client/crud-types.ts @@ -6,7 +6,6 @@ import type { FieldHasDefault, FieldIsArray, FieldIsDelegateDiscriminator, - FieldIsDelegateRelation, FieldIsRelation, FieldType, ForeignKeyFields, @@ -60,7 +59,7 @@ import type { import type { FilterKind, QueryOptions } from './options'; import type { ExtQueryArgsBase, ExtResultBase } from './plugin'; import type { ToKyselySchema } from './query-builder'; -import type { GetSlicedFilterKindsForField, GetSlicedModels } from './type-utils'; +import type { GetSlicedFilterKindsForField, GetSlicedModels, ModelAllowsCreate } from './type-utils'; //#region Query results @@ -1351,6 +1350,15 @@ type CreateFKPayload> } >; +type RelationModelAllowsCreate< + Schema extends SchemaDef, + Model extends GetModels, + Field extends RelationFields, +> = + GetModelFieldType extends GetModels + ? ModelAllowsCreate> + : false; + type CreateRelationFieldPayload< Schema extends SchemaDef, Model extends GetModels, @@ -1380,8 +1388,8 @@ type CreateRelationFieldPayload< }, // no "createMany" for non-array fields | (FieldIsArray extends true ? never : 'createMany') - // exclude operations not applicable to delegate models - | (FieldIsDelegateRelation extends true ? 'create' | 'createMany' | 'connectOrCreate' : never) + // exclude create operations for models that don't allow create + | (RelationModelAllowsCreate extends true ? never : 'create' | 'createMany' | 'connectOrCreate') >; type CreateRelationPayload< @@ -1738,10 +1746,8 @@ type ToManyRelationUpdateInput< */ set?: SetRelationInput; }, - // exclude - FieldIsDelegateRelation extends true - ? 'create' | 'createMany' | 'connectOrCreate' | 'upsert' - : never + // exclude create operations for models that don't allow create + | (RelationModelAllowsCreate extends true ? never : 'create' | 'createMany' | 'connectOrCreate' | 'upsert') >; type ToOneRelationUpdateInput< @@ -1788,7 +1794,8 @@ type ToOneRelationUpdateInput< delete?: NestedDeleteInput; } : {}), - FieldIsDelegateRelation extends true ? 'create' | 'connectOrCreate' | 'upsert' : never + // exclude create operations for models that don't allow create + | (RelationModelAllowsCreate extends true ? never : 'create' | 'connectOrCreate' | 'upsert') >; // #endregion diff --git a/packages/orm/src/client/crud/dialects/base-dialect.ts b/packages/orm/src/client/crud/dialects/base-dialect.ts index e38382f1f..07a29f7c8 100644 --- a/packages/orm/src/client/crud/dialects/base-dialect.ts +++ b/packages/orm/src/client/crud/dialects/base-dialect.ts @@ -26,9 +26,8 @@ import { getManyToManyRelation, getRelationForeignKeyFieldPairs, isEnum, - isInheritedField, - isRelationField, isTypeDef, + getModelFields, makeDefaultOrderBy, requireField, requireIdFields, @@ -1127,33 +1126,26 @@ export abstract class BaseCrudDialect { omit: Record | undefined | null, modelAlias: string, ) { - const modelDef = requireModel(this.schema, model); let result = query; - for (const field of Object.keys(modelDef.fields)) { - if (isRelationField(this.schema, model, field)) { - continue; - } - if (this.shouldOmitField(omit, model, field)) { + for (const fieldDef of getModelFields(this.schema, model, { inherited: true, computed: true })) { + if (this.shouldOmitField(omit, model, fieldDef.name)) { continue; } - result = this.buildSelectField(result, model, modelAlias, field); + result = this.buildSelectField(result, model, modelAlias, fieldDef.name); } // select all fields from delegate descendants and pack into a JSON field `$delegate$Model` const descendants = getDelegateDescendantModels(this.schema, model); for (const subModel of descendants) { result = this.buildDelegateJoin(model, modelAlias, subModel.name, result); - result = result.select((eb) => { + result = result.select(() => { const jsonObject: Record> = {}; - for (const field of Object.keys(subModel.fields)) { - if ( - isRelationField(this.schema, subModel.name, field) || - isInheritedField(this.schema, subModel.name, field) - ) { + for (const fieldDef of getModelFields(this.schema, subModel.name, { computed: true })) { + if (this.shouldOmitField(omit, subModel.name, fieldDef.name)) { continue; } - jsonObject[field] = eb.ref(`${subModel.name}.${field}`); + jsonObject[fieldDef.name] = this.fieldRef(subModel.name, fieldDef.name, subModel.name); } return this.buildJsonObject(jsonObject).as(`${DELEGATE_JOINED_FIELD_PREFIX}${subModel.name}`); }); diff --git a/packages/orm/src/client/executor/name-mapper.ts b/packages/orm/src/client/executor/name-mapper.ts index 6a7535fe0..369526cd6 100644 --- a/packages/orm/src/client/executor/name-mapper.ts +++ b/packages/orm/src/client/executor/name-mapper.ts @@ -37,8 +37,8 @@ import { getEnum, getField, getModel, + getModelFields, isEnum, - requireModel, stripAlias, } from '../query-utils'; @@ -66,7 +66,7 @@ export class QueryNameMapper extends OperationNodeTransformer { this.modelToTableMap.set(modelName, mappedName); } - for (const fieldDef of this.getModelFields(modelDef)) { + for (const fieldDef of getModelFields(this.schema, modelName)) { const mappedName = this.getMappedName(fieldDef); if (mappedName) { this.fieldToColumnMap.set(`${modelName}.${fieldDef.name}`, mappedName); @@ -431,7 +431,7 @@ export class QueryNameMapper extends OperationNodeTransformer { if (!modelDef) { continue; } - if (this.getModelFields(modelDef).some((f) => f.name === name)) { + if (getModelFields(this.schema, scope.model).some((f) => f.name === name)) { return scope; } } @@ -560,8 +560,7 @@ export class QueryNameMapper extends OperationNodeTransformer { } private createSelectAllFields(model: string, alias: OperationNode | undefined) { - const modelDef = requireModel(this.schema, model); - return this.getModelFields(modelDef).map((fieldDef) => { + return getModelFields(this.schema, model).map((fieldDef) => { const columnName = this.mapFieldName(model, fieldDef.name); const columnRef = ReferenceNode.create( ColumnNode.create(columnName), @@ -576,9 +575,6 @@ export class QueryNameMapper extends OperationNodeTransformer { }); } - private getModelFields(modelDef: ModelDef) { - return Object.values(modelDef.fields).filter((f) => !f.relation && !f.computed && !f.originModel); - } private processSelections(selections: readonly SelectionNode[]) { const result: SelectionNode[] = []; @@ -627,9 +623,8 @@ export class QueryNameMapper extends OperationNodeTransformer { } // expand select all to a list of selections with name mapping - const modelDef = requireModel(this.schema, scope.model); - return this.getModelFields(modelDef).map((fieldDef) => { - const columnName = this.mapFieldName(modelDef.name, fieldDef.name); + return getModelFields(this.schema, scope.model).map((fieldDef) => { + const columnName = this.mapFieldName(scope.model!, fieldDef.name); const columnRef = ReferenceNode.create(ColumnNode.create(columnName)); // process enum value mapping @@ -660,7 +655,7 @@ export class QueryNameMapper extends OperationNodeTransformer { if (!modelDef) { return false; } - return this.getModelFields(modelDef).some((fieldDef) => { + return getModelFields(this.schema, model).some((fieldDef) => { const enumDef = getEnum(this.schema, fieldDef.type); if (!enumDef) { return false; diff --git a/packages/orm/src/client/helpers/schema-db-pusher.ts b/packages/orm/src/client/helpers/schema-db-pusher.ts index 4886687ef..f84a29004 100644 --- a/packages/orm/src/client/helpers/schema-db-pusher.ts +++ b/packages/orm/src/client/helpers/schema-db-pusher.ts @@ -12,7 +12,7 @@ import { type SchemaDef, } from '../../schema'; import type { ToKysely } from '../query-builder'; -import { requireModel } from '../query-utils'; +import { isUnsupportedField, requireModel } from '../query-utils'; /** * This class is for testing purposes only. It should never be used in production. @@ -117,6 +117,11 @@ export class SchemaDbPusher { continue; } + if (isUnsupportedField(fieldDef)) { + // Unsupported fields cannot be represented in the ORM's schema pusher + continue; + } + if (fieldDef.relation) { table = this.addForeignKeyConstraint(table, modelDef.name, fieldName, fieldDef); } else if (!this.isComputedField(fieldDef)) { diff --git a/packages/orm/src/client/query-utils.ts b/packages/orm/src/client/query-utils.ts index 0ea7ea58a..2e8b134b3 100644 --- a/packages/orm/src/client/query-utils.ts +++ b/packages/orm/src/client/query-utils.ts @@ -70,12 +70,12 @@ export function requireField(schema: SchemaDef, modelOrType: string, field: stri } /** - * Gets all model fields, by default non-relation, non-computed, non-inherited fields only. + * Gets all model fields, by default non-relation, non-computed, non-inherited, non-unsupported fields only. */ export function getModelFields( schema: SchemaDef, model: string, - options?: { relations?: boolean; computed?: boolean; inherited?: boolean }, + options?: { relations?: boolean; computed?: boolean; inherited?: boolean; unsupported?: boolean }, ) { const modelDef = requireModel(schema, model); return Object.values(modelDef.fields).filter((f) => { @@ -88,10 +88,20 @@ export function getModelFields( if (f.originModel && !options?.inherited) { return false; } + if (f.type === 'Unsupported' && !options?.unsupported) { + return false; + } return true; }); } +/** + * Checks if a field is of `Unsupported` type. + */ +export function isUnsupportedField(fieldDef: FieldDef) { + return fieldDef.type === 'Unsupported'; +} + export function getIdFields(schema: SchemaDef, model: GetModels) { const modelDef = getModel(schema, model); return modelDef?.idFields; diff --git a/packages/orm/src/client/type-utils.ts b/packages/orm/src/client/type-utils.ts index 3a4589f71..68e79a6c0 100644 --- a/packages/orm/src/client/type-utils.ts +++ b/packages/orm/src/client/type-utils.ts @@ -1,8 +1,39 @@ -import type { GetModels, SchemaDef } from '@zenstackhq/schema'; +import type { FieldDef, GetModel, GetModels, IsDelegateModel, SchemaDef } from '@zenstackhq/schema'; import type { GetProcedureNames } from './crud-types'; import type { AllCrudOperations } from './crud/operations/base'; import type { FilterKind, QueryOptions, SlicingOptions } from './options'; +/** + * Checks if a model has any required Unsupported fields (non-optional, no default). + * Uses raw field access since `GetModelFields` excludes Unsupported fields. + */ +export type ModelHasRequiredUnsupportedField> = true extends { + [Key in Extract['fields'], string>]: GetModel< + Schema, + Model + >['fields'][Key] extends infer F extends FieldDef + ? F['type'] extends 'Unsupported' + ? F['optional'] extends true + ? false + : 'default' extends keyof F + ? false + : true + : false + : false; +}[Extract['fields'], string>] + ? true + : false; + +/** + * Checks if a model allows create operations (not a delegate model and has no required Unsupported fields). + */ +export type ModelAllowsCreate> = + IsDelegateModel extends true + ? false + : ModelHasRequiredUnsupportedField extends true + ? false + : true; + type IsNever = [T] extends [never] ? true : false; // #region Model slicing diff --git a/packages/orm/src/client/zod/factory.ts b/packages/orm/src/client/zod/factory.ts index 97ceec28b..7166f42f7 100644 --- a/packages/orm/src/client/zod/factory.ts +++ b/packages/orm/src/client/zod/factory.ts @@ -135,6 +135,14 @@ export class ZodSchemaFactory< return this.options.plugins ?? []; } + /** + * Returns model field entries, excluding Unsupported fields. + */ + private getModelFields(model: string): [string, FieldDef][] { + const modelDef = requireModel(this.schema, model); + return Object.entries(modelDef.fields).filter(([, def]) => def.type !== 'Unsupported'); + } + private shouldIncludeRelations(options?: CreateSchemaOptions): boolean { return options?.relationDepth === undefined || options.relationDepth > 0; } @@ -340,8 +348,6 @@ export class ZodSchemaFactory< withAggregations = false, options?: CreateSchemaOptions, ): ZodType { - const modelDef = requireModel(this.schema, model); - // unique field used in unique filters bypass filter slicing const uniqueFieldNames = unique ? getUniqueFields(this.schema, model) @@ -356,8 +362,7 @@ export class ZodSchemaFactory< const nextOpts = this.nextOptions(options); const fields: Record = {}; - for (const field of Object.keys(modelDef.fields)) { - const fieldDef = requireField(this.schema, model, field); + for (const [field, fieldDef] of this.getModelFields(model)) { let fieldSchema: ZodType | undefined; if (fieldDef.relation) { @@ -910,10 +915,8 @@ export class ZodSchemaFactory< @cache() private makeSelectSchema(model: string, options?: CreateSchemaOptions) { - const modelDef = requireModel(this.schema, model); const fields: Record = {}; - for (const field of Object.keys(modelDef.fields)) { - const fieldDef = requireField(this.schema, model, field); + for (const [field, fieldDef] of this.getModelFields(model)) { if (fieldDef.relation) { if (!this.shouldIncludeRelations(options)) { continue; @@ -1027,10 +1030,8 @@ export class ZodSchemaFactory< @cache() private makeOmitSchema(model: string) { - const modelDef = requireModel(this.schema, model); const fields: Record = {}; - for (const field of Object.keys(modelDef.fields)) { - const fieldDef = requireField(this.schema, model, field); + for (const [field, fieldDef] of this.getModelFields(model)) { if (!fieldDef.relation) { if (this.options.allowQueryTimeOmitOverride !== false) { // if override is allowed, use boolean @@ -1095,12 +1096,10 @@ export class ZodSchemaFactory< WithAggregation: boolean, options?: CreateSchemaOptions, ) { - const modelDef = requireModel(this.schema, model); const fields: Record = {}; const sort = z.union([z.literal('asc'), z.literal('desc')]); const nextOpts = this.nextOptions(options); - for (const field of Object.keys(modelDef.fields)) { - const fieldDef = requireField(this.schema, model, field); + for (const [field, fieldDef] of this.getModelFields(model)) { if (fieldDef.relation) { // relations if (withRelation && this.shouldIncludeRelations(options)) { @@ -1150,8 +1149,9 @@ export class ZodSchemaFactory< @cache() private makeDistinctSchema(model: string) { - const modelDef = requireModel(this.schema, model); - const nonRelationFields = Object.keys(modelDef.fields).filter((field) => !modelDef.fields[field]?.relation); + const nonRelationFields = this.getModelFields(model) + .filter(([, def]) => !def.relation) + .map(([name]) => name); return nonRelationFields.length > 0 ? this.orArray(z.enum(nonRelationFields as any), true) : z.never(); } @@ -1222,20 +1222,18 @@ export class ZodSchemaFactory< const uncheckedVariantFields: Record = {}; const checkedVariantFields: Record = {}; const modelDef = requireModel(this.schema, model); + const modelFields = this.getModelFields(model); const hasRelation = - !skipRelations && - Object.entries(modelDef.fields).some(([f, def]) => !withoutFields.includes(f) && def.relation); + !skipRelations && modelFields.some(([f, def]) => !withoutFields.includes(f) && def.relation); const nextOpts = this.nextOptions(options); - Object.keys(modelDef.fields).forEach((field) => { + modelFields.forEach(([field, fieldDef]) => { if (withoutFields.includes(field)) { return; } - const fieldDef = requireField(this.schema, model, field); - - // skip computed fields and discriminator fields, they cannot be set on create + // skip computed fields and discriminator fields if (fieldDef.computed || fieldDef.isDiscriminator) { return; } @@ -1354,21 +1352,28 @@ export class ZodSchemaFactory< const fieldDef = requireField(this.schema, model, field); const fieldType = fieldDef.type; const array = !!fieldDef.array; + const canCreateModel = this.canCreateModel(fieldType); const fields: Record = { - create: this.makeCreateDataSchema( + connect: this.makeConnectDataSchema(fieldType, array, options).optional(), + }; + + if (canCreateModel) { + fields['create'] = this.makeCreateDataSchema( fieldDef.type, !!fieldDef.array, withoutFields, false, options, - ).optional(), - - connect: this.makeConnectDataSchema(fieldType, array, options).optional(), - - connectOrCreate: this.makeConnectOrCreateDataSchema(fieldType, array, withoutFields, options).optional(), - }; + ).optional(); + fields['connectOrCreate'] = this.makeConnectOrCreateDataSchema( + fieldType, + array, + withoutFields, + options, + ).optional(); + } - if (array) { + if (array && canCreateModel) { fields['createMany'] = this.makeCreateManyPayloadSchema(fieldType, withoutFields, options).optional(); } @@ -1398,19 +1403,21 @@ export class ZodSchemaFactory< ]) .optional(); - let upsertWhere = this.makeWhereSchema(fieldType, true, false, false, options); - if (!fieldDef.array) { - // to-one relation, can upsert without where clause - upsertWhere = upsertWhere.optional(); + if (canCreateModel) { + let upsertWhere = this.makeWhereSchema(fieldType, true, false, false, options); + if (!fieldDef.array) { + // to-one relation, can upsert without where clause + upsertWhere = upsertWhere.optional(); + } + fields['upsert'] = this.orArray( + z.strictObject({ + where: upsertWhere, + create: this.makeCreateDataSchema(fieldType, false, withoutFields, false, options), + update: this.makeUpdateDataSchema(fieldType, withoutFields, false, options), + }), + true, + ).optional(); } - fields['upsert'] = this.orArray( - z.strictObject({ - where: upsertWhere, - create: this.makeCreateDataSchema(fieldType, false, withoutFields, false, options), - update: this.makeUpdateDataSchema(fieldType, withoutFields, false, options), - }), - true, - ).optional(); if (array) { // to-many relation specifics @@ -1576,21 +1583,19 @@ export class ZodSchemaFactory< const uncheckedVariantFields: Record = {}; const checkedVariantFields: Record = {}; const modelDef = requireModel(this.schema, model); + const modelFields = this.getModelFields(model); const hasRelation = - !skipRelations && - Object.entries(modelDef.fields).some(([key, value]) => value.relation && !withoutFields.includes(key)); + !skipRelations && modelFields.some(([key, value]) => value.relation && !withoutFields.includes(key)); const nextOpts = this.nextOptions(options); - Object.keys(modelDef.fields).forEach((field) => { + modelFields.forEach(([field, fieldDef]) => { if (withoutFields.includes(field)) { return; } - const fieldDef = requireField(this.schema, model, field); - + // skip computed fields and discriminator fields if (fieldDef.computed || fieldDef.isDiscriminator) { - // skip computed fields and discriminator fields, they cannot be updated return; } @@ -1750,13 +1755,12 @@ export class ZodSchemaFactory< @cache() private makeCountAggregateInputSchema(model: string) { - const modelDef = requireModel(this.schema, model); return z.union([ z.literal(true), z.strictObject({ _all: z.literal(true).optional(), - ...Object.keys(modelDef.fields).reduce( - (acc, field) => { + ...this.getModelFields(model).reduce( + (acc, [field]) => { acc[field] = z.literal(true).optional(); return acc; }, @@ -1793,11 +1797,9 @@ export class ZodSchemaFactory< @cache() private makeSumAvgInputSchema(model: string) { - const modelDef = requireModel(this.schema, model); return z.strictObject( - Object.keys(modelDef.fields).reduce( - (acc, field) => { - const fieldDef = requireField(this.schema, model, field); + this.getModelFields(model).reduce( + (acc, [field, fieldDef]) => { if (this.isNumericField(fieldDef)) { acc[field] = z.literal(true).optional(); } @@ -1810,11 +1812,9 @@ export class ZodSchemaFactory< @cache() private makeMinMaxInputSchema(model: string) { - const modelDef = requireModel(this.schema, model); return z.strictObject( - Object.keys(modelDef.fields).reduce( - (acc, field) => { - const fieldDef = requireField(this.schema, model, field); + this.getModelFields(model).reduce( + (acc, [field, fieldDef]) => { if (!fieldDef.relation && !fieldDef.array) { acc[field] = z.literal(true).optional(); } @@ -1834,8 +1834,9 @@ export class ZodSchemaFactory< model: Model, options?: CreateSchemaOptions, ): ZodType> { - const modelDef = requireModel(this.schema, model); - const nonRelationFields = Object.keys(modelDef.fields).filter((field) => !modelDef.fields[field]?.relation); + const nonRelationFields = this.getModelFields(model) + .filter(([, def]) => !def.relation) + .map(([name]) => name); const bySchema = nonRelationFields.length > 0 ? this.orArray(z.enum(nonRelationFields as [string, ...string[]]), true) @@ -2237,10 +2238,20 @@ export class ZodSchemaFactory< } } - /** - * Checks if a model is included in the slicing configuration. - * Returns true if the model is allowed, false if it's excluded. - */ + private canCreateModel(model: string) { + const modelDef = requireModel(this.schema, model); + if (modelDef.isDelegate) { + return false; + } + const hasRequiredUnsupportedFields = Object.values(modelDef.fields).some( + (fieldDef) => fieldDef.type === 'Unsupported' && !fieldDef.optional && !fieldHasDefaultValue(fieldDef), + ); + if (hasRequiredUnsupportedFields) { + return false; + } + return true; + } + private isModelAllowed(targetModel: string): boolean { const slicing = this.options.slicing; if (!slicing) { diff --git a/packages/schema/src/schema.ts b/packages/schema/src/schema.ts index cb7e9299e..2475991ce 100644 --- a/packages/schema/src/schema.ts +++ b/packages/schema/src/schema.ts @@ -152,10 +152,15 @@ export type GetTypeDefs = Extract> = Schema['typeDefs'] extends Record ? Schema['typeDefs'][TypeDef] : never; -export type GetModelFields> = Extract< - keyof GetModel['fields'], - string ->; +export type GetModelFields> = keyof { + [Key in Extract['fields'], string> as FieldIsUnsupported< + Schema, + Model, + Key + > extends true + ? never + : Key]: never; +}; export type GetModelField< Schema extends SchemaDef, @@ -283,6 +288,16 @@ export type FieldIsComputed< Field extends GetModelFields, > = GetModelField['computed'] extends true ? true : false; +export type FieldIsUnsupported< + Schema extends SchemaDef, + Model extends GetModels, + Field extends string, +> = Field extends keyof GetModel['fields'] + ? GetModel['fields'][Field]['type'] extends 'Unsupported' + ? true + : false + : never; + export type FieldHasDefault< Schema extends SchemaDef, Model extends GetModels, diff --git a/tests/e2e/orm/client-api/delegate.test.ts b/tests/e2e/orm/client-api/delegate.test.ts index 8aeddc0d9..e325aaa5b 100644 --- a/tests/e2e/orm/client-api/delegate.test.ts +++ b/tests/e2e/orm/client-api/delegate.test.ts @@ -39,7 +39,7 @@ describe('Delegate model tests ', () => { }, }, }), - ).rejects.toThrow('is a delegate'); + ).rejects.toThrow('Unrecognized key: "create"'); // create entity with two levels of delegation await expect( diff --git a/tests/e2e/orm/client-api/unsupported.test-d.ts b/tests/e2e/orm/client-api/unsupported.test-d.ts new file mode 100644 index 000000000..a9797cc90 --- /dev/null +++ b/tests/e2e/orm/client-api/unsupported.test-d.ts @@ -0,0 +1,134 @@ +import type { ClientContract, CreateArgs, FindManyArgs, ModelResult, UpdateArgs } from '@zenstackhq/orm'; +import { describe, expectTypeOf, it } from 'vitest'; +import z from 'zod'; +import { schema } from '../schemas/unsupported/schema'; + +type Schema = typeof schema; + +declare const client: ClientContract; + +describe('Unsupported field exclusion - typing', () => { + // #region Result types + + it('excludes Unsupported fields from result type (optional Unsupported)', () => { + type ItemResult = ModelResult; + expectTypeOf().toHaveProperty('id'); + expectTypeOf().toHaveProperty('name'); + // Unsupported field should be excluded + expectTypeOf().not.toHaveProperty('data'); + }); + + it('excludes Unsupported fields from result type (required Unsupported)', () => { + type GeoResult = ModelResult; + expectTypeOf().toHaveProperty('id'); + expectTypeOf().toHaveProperty('title'); + // Unsupported field should be excluded + expectTypeOf().not.toHaveProperty('extra'); + }); + + // #endregion + + // #region Find/Where types + + it('excludes Unsupported fields from where filter', () => { + type FindArgs = FindManyArgs; + type Where = NonNullable; + expectTypeOf().toHaveProperty('id'); + expectTypeOf().toHaveProperty('name'); + // Unsupported field should not be filterable + expectTypeOf().not.toHaveProperty('data'); + }); + + // #endregion + + // #region Select/Omit types + + it('excludes Unsupported fields from select', () => { + type FindArgs = FindManyArgs; + type Select = NonNullable; + expectTypeOf().toHaveProperty('name'); + // Unsupported field should not be selectable + expectTypeOf