import type { Brand } from "effect/Brand"; import * as DateTime from "effect/DateTime"; import type { Input } from "effect/Duration"; import * as Effect from "effect/Effect"; import * as Option from "effect/Option"; import * as Schema from "effect/Schema"; import type { Scope } from "effect/Scope"; import * as VariantSchema from "effect/unstable/schema/VariantSchema"; import { SqlClient } from "effect/unstable/sql/SqlClient"; declare const Class: (identifier: string) => (fields: Fields & VariantSchema.Struct.Validate, annotations?: Schema.Annotations.Declaration>]> | undefined) => [Self] extends [never] ? "Missing `Self` generic - use `class Self extends Class()({ ... })`" : VariantSchema.Class>> & { readonly insert: Schema.Struct extends infer T ? { [K in keyof T]: T[K]; } : never>; readonly json: Schema.Struct extends infer T_1 ? { [K in keyof T_1]: T_1[K]; } : never>; readonly jsonCreate: Schema.Struct extends infer T_2 ? { [K in keyof T_2]: T_2[K]; } : never>; readonly jsonUpdate: Schema.Struct extends infer T_3 ? { [K in keyof T_3]: T_3[K]; } : never>; readonly select: Schema.Struct extends infer T_4 ? { [K in keyof T_4]: T_4[K]; } : never>; readonly update: Schema.Struct extends infer T_5 ? { [K in keyof T_5]: T_5[K]; } : never>; }, Field: >(config: A & { readonly [K in Exclude]: never; }) => VariantSchema.Field, FieldExcept: >(keys: Keys) => (schema: S) => VariantSchema.Field<{ readonly [K in Exclude<"insert", Keys[number]> | Exclude<"json", Keys[number]> | Exclude<"jsonCreate", Keys[number]> | Exclude<"jsonUpdate", Keys[number]> | Exclude<"select", Keys[number]> | Exclude<"update", Keys[number]>]: S; }>, FieldOnly: >(keys: Keys) => (schema: S) => VariantSchema.Field<{ readonly [K in Keys[number]]: S; }>, Struct: (fields: A & VariantSchema.Struct.Validate) => VariantSchema.Struct, Union: >>(members: Members) => VariantSchema.Union & VariantSchema.Union.Variants, extract: { (variant: V): >(self: A) => VariantSchema.Extract; >(self: A, variant: V): VariantSchema.Extract; }, fieldEvolve: { | Schema.Top, const Mapping extends (Self extends VariantSchema.Field ? { readonly [K in keyof S]?: (variant: S[K]) => Schema.Top; } : { readonly [K in "insert" | "json" | "jsonCreate" | "jsonUpdate" | "select" | "update"]?: (variant: Self) => Schema.Top; })>(f: Mapping): (self: Self) => VariantSchema.Field ? { readonly [K in keyof S]: K extends keyof Mapping ? Mapping[K] extends (arg: any) => any ? ReturnType : S[K] : S[K]; } : { readonly insert: "insert" extends infer T ? T extends "insert" ? T extends keyof Mapping ? Mapping[T] extends (arg: any) => any ? ReturnType : Self : Self : never : never; readonly json: "json" extends infer T_1 ? T_1 extends "json" ? T_1 extends keyof Mapping ? Mapping[T_1] extends (arg: any) => any ? ReturnType : Self : Self : never : never; readonly jsonCreate: "jsonCreate" extends infer T_2 ? T_2 extends "jsonCreate" ? T_2 extends keyof Mapping ? Mapping[T_2] extends (arg: any) => any ? ReturnType : Self : Self : never : never; readonly jsonUpdate: "jsonUpdate" extends infer T_3 ? T_3 extends "jsonUpdate" ? T_3 extends keyof Mapping ? Mapping[T_3] extends (arg: any) => any ? ReturnType : Self : Self : never : never; readonly select: "select" extends infer T_4 ? T_4 extends "select" ? T_4 extends keyof Mapping ? Mapping[T_4] extends (arg: any) => any ? ReturnType : Self : Self : never : never; readonly update: "update" extends infer T_5 ? T_5 extends "update" ? T_5 extends keyof Mapping ? Mapping[T_5] extends (arg: any) => any ? ReturnType : Self : Self : never : never; }>; | Schema.Top, const Mapping_1 extends (Self extends VariantSchema.Field ? { readonly [K in keyof S]?: (variant: S[K]) => Schema.Top; } : { readonly [K in "insert" | "json" | "jsonCreate" | "jsonUpdate" | "select" | "update"]?: (variant: Self) => Schema.Top; })>(self: Self, f: Mapping_1): VariantSchema.Field ? { readonly [K in keyof S]: K extends keyof Mapping_1 ? Mapping_1[K] extends (arg: any) => any ? ReturnType : S[K] : S[K]; } : { readonly insert: "insert" extends infer T ? T extends "insert" ? T extends keyof Mapping_1 ? Mapping_1[T] extends (arg: any) => any ? ReturnType : Self : Self : never : never; readonly json: "json" extends infer T_1 ? T_1 extends "json" ? T_1 extends keyof Mapping_1 ? Mapping_1[T_1] extends (arg: any) => any ? ReturnType : Self : Self : never : never; readonly jsonCreate: "jsonCreate" extends infer T_2 ? T_2 extends "jsonCreate" ? T_2 extends keyof Mapping_1 ? Mapping_1[T_2] extends (arg: any) => any ? ReturnType : Self : Self : never : never; readonly jsonUpdate: "jsonUpdate" extends infer T_3 ? T_3 extends "jsonUpdate" ? T_3 extends keyof Mapping_1 ? Mapping_1[T_3] extends (arg: any) => any ? ReturnType : Self : Self : never : never; readonly select: "select" extends infer T_4 ? T_4 extends "select" ? T_4 extends keyof Mapping_1 ? Mapping_1[T_4] extends (arg: any) => any ? ReturnType : Self : Self : never : never; readonly update: "update" extends infer T_5 ? T_5 extends "update" ? T_5 extends keyof Mapping_1 ? Mapping_1[T_5] extends (arg: any) => any ? ReturnType : Self : Self : never : never; }>; }; /** * @since 1.0.0 * @category models */ export type Any = Schema.Top & { readonly fields: Schema.Struct.Fields; readonly insert: Schema.Top; readonly update: Schema.Top; readonly json: Schema.Top; readonly jsonCreate: Schema.Top; readonly jsonUpdate: Schema.Top; }; /** * @since 1.0.0 * @category models */ export type VariantsDatabase = "select" | "insert" | "update"; /** * @since 1.0.0 * @category models */ export type VariantsJson = "json" | "jsonCreate" | "jsonUpdate"; export { /** * A base class used for creating domain model schemas. * * It supports common variants for database and JSON apis. * * @since 1.0.0 * @category constructors * @example * import { Schema } from "effect" * import { Model } from "effect/unstable/schema" * * export const GroupId = Schema.Number.pipe(Schema.brand("GroupId")) * * export class Group extends Model.Class("Group")({ * id: Model.Generated(GroupId), * name: Schema.String, * createdAt: Model.DateTimeInsertFromDate, * updatedAt: Model.DateTimeUpdateFromDate * }) {} * * // schema used for selects * Group * * // schema used for inserts * Group.insert * * // schema used for updates * Group.update * * // schema used for json api * Group.json * Group.jsonCreate * Group.jsonUpdate * * // you can also turn them into classes * class GroupJson extends Schema.Class("GroupJson")(Group.json) { * get upperName() { * return this.name.toUpperCase() * } * } */ Class, /** * @since 1.0.0 * @category extraction */ extract, /** * @since 1.0.0 * @category fields */ Field, /** * @since 1.0.0 * @category fields */ fieldEvolve, /** * @since 1.0.0 * @category fields */ FieldExcept, /** * @since 1.0.0 * @category fields */ FieldOnly, /** * @since 1.0.0 * @category constructors */ Struct, /** * @since 1.0.0 * @category constructors */ Union }; /** * @since 1.0.0 * @category fields */ export declare const fields: >(self: A) => A[typeof VariantSchema.TypeId]; /** * @since 1.0.0 * @category overrideable */ export declare const Override: (value: A) => A & Brand<"Override">; /** * @since 1.0.0 * @category generated */ export interface Generated extends VariantSchema.Field<{ readonly select: S; readonly update: S; readonly json: S; }> { } /** * A field that represents a column that is generated by the database. * * It is available for selection and update, but not for insertion. * * @since 1.0.0 * @category generated */ export declare const Generated: (schema: S) => Generated; /** * @since 1.0.0 * @category generated */ export interface GeneratedByApp extends VariantSchema.Field<{ readonly select: S; readonly insert: S; readonly update: S; readonly json: S; }> { } /** * A field that represents a column that is generated by the application. * * It is required by the database, but not by the JSON variants. * * @since 1.0.0 * @category generated */ export declare const GeneratedByApp: (schema: S) => GeneratedByApp; /** * @since 1.0.0 * @category sensitive */ export interface Sensitive extends VariantSchema.Field<{ readonly select: S; readonly insert: S; readonly update: S; }> { } /** * A field that represents a sensitive value that should not be exposed in the * JSON variants. * * @since 1.0.0 * @category sensitive */ export declare const Sensitive: (schema: S) => Sensitive; /** * @since 1.0.0 * @category optional */ export interface optionalOption extends Schema.decodeTo>, Schema.optionalKey>> { } /** * @since 1.0.0 * @category optional */ export declare const optionalOption: (schema: S) => optionalOption; /** * Convert a field to one that is optional for all variants. * * For the database variants, it will accept `null`able values. * For the JSON variants, it will also accept missing keys. * * @since 1.0.0 * @category optional */ export interface FieldOption extends VariantSchema.Field<{ readonly select: Schema.OptionFromNullOr; readonly insert: Schema.OptionFromNullOr; readonly update: Schema.OptionFromNullOr; readonly json: optionalOption; readonly jsonCreate: optionalOption; readonly jsonUpdate: optionalOption; }> { } /** * Convert a field to one that is optional for all variants. * * For the database variants, it will accept `null`able values. * For the JSON variants, it will also accept missing keys. * * @since 1.0.0 * @category optional */ export declare const FieldOption: | Schema.Top>(self: Field) => Field extends Schema.Top ? FieldOption : Field extends VariantSchema.Field ? VariantSchema.Field<{ readonly [K in keyof S]: S[K] extends Schema.Top ? K extends VariantsDatabase ? Schema.OptionFromNullOr : optionalOption : never; }> : never; /** * @since 1.0.0 * @category date & time */ export interface Date extends Schema.decodeTo, Schema.String> { } /** * A schema for a `DateTime.Utc` that is serialized as a date string in the * format `YYYY-MM-DD`. * * @since 1.0.0 * @category date & time */ export declare const Date: Date; /** * @since 1.0.0 * @category date & time */ export declare const DateWithNow: VariantSchema.Overrideable; /** * @since 1.0.0 * @category date & time */ export declare const DateTimeWithNow: VariantSchema.Overrideable; /** * @since 1.0.0 * @category date & time */ export declare const DateTimeFromDateWithNow: VariantSchema.Overrideable; /** * @since 1.0.0 * @category date & time */ export declare const DateTimeFromNumberWithNow: VariantSchema.Overrideable; /** * @since 1.0.0 * @category date & time */ export interface DateTimeInsert extends VariantSchema.Field<{ readonly select: Schema.DateTimeUtcFromString; readonly insert: VariantSchema.Overrideable; readonly json: Schema.DateTimeUtcFromString; }> { } /** * A field that represents a date-time value that is inserted as the current * `DateTime.Utc`. It is serialized as a string for the database. * * It is omitted from updates and is available for selection. * * @since 1.0.0 * @category date & time */ export declare const DateTimeInsert: DateTimeInsert; /** * @since 1.0.0 * @category date & time */ export interface DateTimeInsertFromDate extends VariantSchema.Field<{ readonly select: Schema.DateTimeUtcFromDate; readonly insert: VariantSchema.Overrideable; readonly json: Schema.DateTimeUtcFromString; }> { } /** * A field that represents a date-time value that is inserted as the current * `DateTime.Utc`. It is serialized as a `Date` for the database. * * It is omitted from updates and is available for selection. * * @since 1.0.0 * @category date & time */ export declare const DateTimeInsertFromDate: DateTimeInsertFromDate; /** * @since 1.0.0 * @category date & time */ export interface DateTimeInsertFromNumber extends VariantSchema.Field<{ readonly select: Schema.DateTimeUtcFromMillis; readonly insert: VariantSchema.Overrideable; readonly json: Schema.DateTimeUtcFromMillis; }> { } /** * A field that represents a date-time value that is inserted as the current * `DateTime.Utc`. It is serialized as a `number`. * * It is omitted from updates and is available for selection. * * @since 1.0.0 * @category date & time */ export declare const DateTimeInsertFromNumber: DateTimeInsertFromNumber; /** * @since 1.0.0 * @category date & time */ export interface DateTimeUpdate extends VariantSchema.Field<{ readonly select: Schema.DateTimeUtcFromString; readonly insert: VariantSchema.Overrideable; readonly update: VariantSchema.Overrideable; readonly json: Schema.DateTimeUtcFromString; }> { } /** * A field that represents a date-time value that is updated as the current * `DateTime.Utc`. It is serialized as a string for the database. * * It is set to the current `DateTime.Utc` on updates and inserts and is * available for selection. * * @since 1.0.0 * @category date & time */ export declare const DateTimeUpdate: DateTimeUpdate; /** * @since 1.0.0 * @category date & time */ export interface DateTimeUpdateFromDate extends VariantSchema.Field<{ readonly select: Schema.DateTimeUtcFromDate; readonly insert: VariantSchema.Overrideable; readonly update: VariantSchema.Overrideable; readonly json: Schema.DateTimeUtcFromString; }> { } /** * A field that represents a date-time value that is updated as the current * `DateTime.Utc`. It is serialized as a `Date` for the database. * * It is set to the current `DateTime.Utc` on updates and inserts and is * available for selection. * * @since 1.0.0 * @category date & time */ export declare const DateTimeUpdateFromDate: DateTimeUpdateFromDate; /** * @since 1.0.0 * @category date & time */ export interface DateTimeUpdateFromNumber extends VariantSchema.Field<{ readonly select: Schema.DateTimeUtcFromMillis; readonly insert: VariantSchema.Overrideable; readonly update: VariantSchema.Overrideable; readonly json: Schema.DateTimeUtcFromMillis; }> { } /** * A field that represents a date-time value that is updated as the current * `DateTime.Utc`. It is serialized as a `number`. * * It is set to the current `DateTime.Utc` on updates and inserts and is * available for selection. * * @since 1.0.0 * @category date & time */ export declare const DateTimeUpdateFromNumber: DateTimeUpdateFromNumber; /** * @since 1.0.0 * @category json */ export interface JsonFromString extends VariantSchema.Field<{ readonly select: Schema.fromJsonString>; readonly insert: Schema.fromJsonString>; readonly update: Schema.fromJsonString>; readonly json: S; readonly jsonCreate: S; readonly jsonUpdate: S; }> { } /** * A field that represents a JSON value stored as text in the database. * * The "json" variants will use the object schema directly. * * @since 1.0.0 * @category json */ export declare const JsonFromString: (schema: S) => JsonFromString; /** * Create a simple CRUD repository from a model. * * @since 1.0.0 * @category repository */ export declare const makeRepository: (Model: S, options: { readonly tableName: string; readonly spanPrefix: string; readonly idColumn: Id; readonly versionColumn?: string | undefined; }) => Effect.Effect<{ readonly insert: (insert: S["insert"]["Type"]) => Effect.Effect; readonly insertVoid: (insert: S["insert"]["Type"]) => Effect.Effect; readonly update: (update: S["update"]["Type"]) => Effect.Effect; readonly updateVoid: (update: S["update"]["Type"]) => Effect.Effect; readonly findById: (id: S["fields"][Id]["Type"]) => Effect.Effect, Schema.SchemaError, S["DecodingServices"] | S["fields"][Id]["EncodingServices"]>; readonly delete: (id: S["fields"][Id]["Type"]) => Effect.Effect; }, never, SqlClient>; /** * Create some simple data loaders from a model. * * @since 1.0.0 * @category repository */ export declare const makeDataLoaders: (Model: S, options: { readonly tableName: string; readonly spanPrefix: string; readonly idColumn: Id; readonly window: Input; readonly maxBatchSize?: number | undefined; }) => Effect.Effect<{ readonly insert: (insert: S["insert"]["Type"]) => Effect.Effect; readonly insertVoid: (insert: S["insert"]["Type"]) => Effect.Effect; readonly findById: (id: S["fields"][Id]["Type"]) => Effect.Effect; readonly delete: (id: S["fields"][Id]["Type"]) => Effect.Effect; }, never, SqlClient | Scope>; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9kZWwuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hZGFwdGVycy9TUUwvTW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBVUEsT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQ3pDLE9BQU8sS0FBSyxRQUFRLE1BQU0saUJBQWlCLENBQUE7QUFDM0MsT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDNUMsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUE7QUFFdkMsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUE7QUFHdkMsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUE7QUFHdkMsT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQ3pDLE9BQU8sS0FBSyxhQUFhLE1BQU0sc0NBQXNDLENBQUE7QUFDckUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLCtCQUErQixDQUFBO0FBSXpELFFBQUEsTUFDRSxLQUFLOzs7Ozs7O0dBQ0wsS0FBSywwUkFDTCxXQUFXLDhaQUNYLFNBQVMsMk5BQ1QsTUFBTSxpTUFDTixLQUFLLHFPQUNMLE9BQU87OztHQUNQLFdBQVc7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBSVgsQ0FBQTtBQUVGOzs7R0FHRztBQUNILE1BQU0sTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsR0FBRztJQUM3QixRQUFRLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFBO0lBQ3JDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQTtJQUMzQixRQUFRLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUE7SUFDM0IsUUFBUSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFBO0lBQ3pCLFFBQVEsQ0FBQyxVQUFVLEVBQUUsTUFBTSxD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