Libraries
    Preparing search index...
    ddlExtension: ExtensionDescriptor<
        {
            boolean: {
                columnType(
                    this: BooleanSchemaBuilder<any, any, any, any, any, any, any>,
                    type: string,
                ): BooleanSchemaBuilder<any, any, any, any, any, any, any>;
                defaultTo(
                    this: BooleanSchemaBuilder<any, any, any, any, any, any, any>,
                    value: boolean,
                ): BooleanSchemaBuilder<any, any, any, any, any, any, any>;
                index(
                    this: BooleanSchemaBuilder<any, any, any, any, any, any, any>,
                    name?: string,
                ): BooleanSchemaBuilder<any, any, any, any, any, any, any>;
                unique(
                    this: BooleanSchemaBuilder<any, any, any, any, any, any, any>,
                    name?: string,
                ): BooleanSchemaBuilder<any, any, any, any, any, any, any>;
            };
            date: {
                columnType(
                    this: DateSchemaBuilder<any, any, any, any, any>,
                    type: string,
                ): DateSchemaBuilder<any, any, any, any, any>;
                dateOnly(
                    this: DateSchemaBuilder<any, any, any, any, any>,
                ): DateSchemaBuilder<any, any, any, any, any>;
                defaultTo(
                    this: DateSchemaBuilder<any, any, any, any, any>,
                    value: "now",
                ): DateSchemaBuilder<any, any, any, any, any>;
                defaultToRaw(
                    this: DateSchemaBuilder<any, any, any, any, any>,
                    expression: string,
                ): DateSchemaBuilder<any, any, any, any, any>;
                index(
                    this: DateSchemaBuilder<any, any, any, any, any>,
                    name?: string,
                ): DateSchemaBuilder<any, any, any, any, any>;
                rowVersion(
                    this: DateSchemaBuilder<any, any, any, any, any>,
                ): DateSchemaBuilder<any, any, any, any, any>;
                timestamptz(
                    this: DateSchemaBuilder<any, any, any, any, any>,
                ): DateSchemaBuilder<any, any, any, any, any>;
            };
            number: {
                bigint(
                    this: NumberSchemaBuilder<any, any, any, any, any>,
                ): NumberSchemaBuilder<any, any, any, any, any>;
                columnType(
                    this: NumberSchemaBuilder<any, any, any, any, any>,
                    type: string,
                ): NumberSchemaBuilder<any, any, any, any, any>;
                decimal(
                    this: NumberSchemaBuilder<any, any, any, any, any>,
                    precision: number,
                    scale: number,
                ): NumberSchemaBuilder<any, any, any, any, any>;
                defaultTo(
                    this: NumberSchemaBuilder<any, any, any, any, any>,
                    value: number | "auto_increment",
                ): NumberSchemaBuilder<any, any, any, any, any>;
                defaultToRaw(
                    this: NumberSchemaBuilder<any, any, any, any, any>,
                    expression: string,
                ): NumberSchemaBuilder<any, any, any, any, any>;
                index(
                    this: NumberSchemaBuilder<any, any, any, any, any>,
                    name?: string,
                ): NumberSchemaBuilder<any, any, any, any, any>;
                onDelete(
                    this: NumberSchemaBuilder<any, any, any, any, any>,
                    action: FKAction,
                ): NumberSchemaBuilder<any, any, any, any, any>;
                onUpdate(
                    this: NumberSchemaBuilder<any, any, any, any, any>,
                    action: FKAction,
                ): NumberSchemaBuilder<any, any, any, any, any>;
                references(
                    this: NumberSchemaBuilder<any, any, any, any, any>,
                    table: string,
                    column?: string,
                ): NumberSchemaBuilder<any, any, any, any, any>;
                rowVersion(
                    this: NumberSchemaBuilder<any, any, any, any, any>,
                    opts?: { strategy?: "increment" | "manual" },
                ): NumberSchemaBuilder<any, any, any, any, any>;
                smallint(
                    this: NumberSchemaBuilder<any, any, any, any, any>,
                ): NumberSchemaBuilder<any, any, any, any, any>;
                unique(
                    this: NumberSchemaBuilder<any, any, any, any, any>,
                    name?: string,
                ): NumberSchemaBuilder<any, any, any, any, any>;
            };
            object: {
                afterInsert(
                    this: ObjectSchemaBuilder<any, any, any, any, any, any, any>,
                    fn: Function,
                ): ObjectSchemaBuilder<any, any, any, any, any, any, any>;
                beforeDelete(
                    this: ObjectSchemaBuilder<any, any, any, any, any, any, any>,
                    fn: Function,
                ): ObjectSchemaBuilder<any, any, any, any, any, any, any>;
                beforeInsert(
                    this: ObjectSchemaBuilder<any, any, any, any, any, any, any>,
                    fn: Function,
                ): ObjectSchemaBuilder<any, any, any, any, any, any, any>;
                beforeUpdate(
                    this: ObjectSchemaBuilder<any, any, any, any, any, any, any>,
                    fn: Function,
                ): ObjectSchemaBuilder<any, any, any, any, any, any, any>;
                belongsTo(
                    this: ObjectSchemaBuilder<any, any, any, any, any, any, any>,
                    name: string,
                    opts: { foreignKey: any; schema: any },
                ): ObjectSchemaBuilder<any, any, any, any, any, any, any>;
                belongsToMany(
                    this: ObjectSchemaBuilder<any, any, any, any, any, any, any>,
                    name: string,
                    opts: {
                        schema: any;
                        through: { foreignKey: string; localKey: string; table: string };
                    },
                ): ObjectSchemaBuilder<any, any, any, any, any, any, any>;
                columnType(
                    this: ObjectSchemaBuilder<any, any, any, any, any, any, any>,
                    type: string,
                ): ObjectSchemaBuilder<any, any, any, any, any, any, any>;
                defaultScope(
                    this: ObjectSchemaBuilder<any, any, any, any, any, any, any>,
                    fn: Function,
                ): ObjectSchemaBuilder<any, any, any, any, any, any, any>;
                hasCheck(
                    this: ObjectSchemaBuilder<any, any, any, any, any, any, any>,
                    sql: string,
                ): ObjectSchemaBuilder<any, any, any, any, any, any, any>;
                hasIndex(
                    this: ObjectSchemaBuilder<any, any, any, any, any, any, any>,
                    columns: string[],
                    opts?: { name?: string; unique?: boolean },
                ): ObjectSchemaBuilder<any, any, any, any, any, any, any>;
                hasMany(
                    this: ObjectSchemaBuilder<any, any, any, any, any, any, any>,
                    name: string,
                    opts: { foreignKey: any; schema: any },
                ): ObjectSchemaBuilder<any, any, any, any, any, any, any>;
                hasOne(
                    this: ObjectSchemaBuilder<any, any, any, any, any, any, any>,
                    name: string,
                    opts: { foreignKey: any; schema: any },
                ): ObjectSchemaBuilder<any, any, any, any, any, any, any>;
                hasRawColumn(
                    this: ObjectSchemaBuilder<any, any, any, any, any, any, any>,
                    name: string,
                    definition: string,
                ): ObjectSchemaBuilder<any, any, any, any, any, any, any>;
                hasRawIndex(
                    this: ObjectSchemaBuilder<any, any, any, any, any, any, any>,
                    sql: string,
                ): ObjectSchemaBuilder<any, any, any, any, any, any, any>;
                hasTimestamps(
                    this: ObjectSchemaBuilder<any, any, any, any, any, any, any>,
                    opts?: { createdAt?: string; updatedAt?: string },
                ): ObjectSchemaBuilder<any, any, any, any, any, any, any>;
                hasUnique(
                    this: ObjectSchemaBuilder<any, any, any, any, any, any, any>,
                    columns: string[],
                    name?: string,
                ): ObjectSchemaBuilder<any, any, any, any, any, any, any>;
                json(
                    this: ObjectSchemaBuilder<any, any, any, any, any, any, any>,
                ): ObjectSchemaBuilder<any, any, any, any, any, any, any>;
                jsonb(
                    this: ObjectSchemaBuilder<any, any, any, any, any, any, any>,
                ): ObjectSchemaBuilder<any, any, any, any, any, any, any>;
                projection<
                    TProperties extends
                        Record<string, SchemaBuilder<any, any, any, any, any>>,
                    const N extends string,
                    const TKey extends string,
                >(
                    this: ObjectSchemaBuilder<TProperties, any, any, any, any, any, any>,
                    name: N,
                    ...columns: readonly (
                        | TKey
                        | (
                            (
                                t: PropertyDescriptorTree<
                                    ObjectSchemaBuilder<TProperties, any, any, any, any, any, any>,
                                    ObjectSchemaBuilder<TProperties, any, any, any, any, any, any>,
                                >,
                            ) => PropertyDescriptor<any, any, any, TKey>
                        )
                    )[],
                ): ObjectSchemaBuilder<TProperties, any, any, any, any, any, any> & {
                    __cleverbrush_extra_type_brand__?: { [P in string]: readonly TKey[] };
                };
                scope<N extends string>(
                    this: ObjectSchemaBuilder<any, any, any, any, any, any, any>,
                    name: N,
                    fn: Function,
                ): ObjectSchemaBuilder<any, any, any, any, any, any, any> & {
                    __cleverbrush_method_literal_brand__?: N;
                };
                softDelete(
                    this: ObjectSchemaBuilder<any, any, any, any, any, any, any>,
                    opts?: { column?: string },
                ): ObjectSchemaBuilder<any, any, any, any, any, any, any>;
            };
            string: {
                asUuid(
                    this: StringSchemaBuilder<any, any, any, any, any>,
                ): StringSchemaBuilder<any, any, any, any, any>;
                check(
                    this: StringSchemaBuilder<any, any, any, any, any>,
                    sql: string,
                ): StringSchemaBuilder<any, any, any, any, any>;
                citext(
                    this: StringSchemaBuilder<any, any, any, any, any>,
                ): StringSchemaBuilder<any, any, any, any, any>;
                columnType(
                    this: StringSchemaBuilder<any, any, any, any, any>,
                    type: string,
                ): StringSchemaBuilder<any, any, any, any, any>;
                defaultTo(
                    this: StringSchemaBuilder<any, any, any, any, any>,
                    value: string,
                ): StringSchemaBuilder<any, any, any, any, any>;
                defaultToRaw(
                    this: StringSchemaBuilder<any, any, any, any, any>,
                    expression: string,
                ): StringSchemaBuilder<any, any, any, any, any>;
                index(
                    this: StringSchemaBuilder<any, any, any, any, any>,
                    name?: string,
                ): StringSchemaBuilder<any, any, any, any, any>;
                jsonb(
                    this: StringSchemaBuilder<any, any, any, any, any>,
                ): StringSchemaBuilder<any, any, any, any, any>;
                onDelete(
                    this: StringSchemaBuilder<any, any, any, any, any>,
                    action: FKAction,
                ): StringSchemaBuilder<any, any, any, any, any>;
                onUpdate(
                    this: StringSchemaBuilder<any, any, any, any, any>,
                    action: FKAction,
                ): StringSchemaBuilder<any, any, any, any, any>;
                references(
                    this: StringSchemaBuilder<any, any, any, any, any>,
                    table: string,
                    column?: string,
                ): StringSchemaBuilder<any, any, any, any, any>;
                rowVersion(
                    this: StringSchemaBuilder<any, any, any, any, any>,
                ): StringSchemaBuilder<any, any, any, any, any>;
                text(
                    this: StringSchemaBuilder<any, any, any, any, any>,
                ): StringSchemaBuilder<any, any, any, any, any>;
                tsvector(
                    this: StringSchemaBuilder<any, any, any, any, any>,
                ): StringSchemaBuilder<any, any, any, any, any>;
                unique(
                    this: StringSchemaBuilder<any, any, any, any, any>,
                    name?: string,
                ): StringSchemaBuilder<any, any, any, any, any>;
            };
        },
    > = ...

    DDL and ORM extension that adds database DDL metadata, relationship definitions, and ORM conveniences to schema builders.

    Column-level methods: .primaryKey(), .references(), .unique(), .index(), .defaultTo(), .columnType(), .check(), .defaultToRaw().

    Object-level methods: .hasIndex(), .hasUnique(), .hasCheck(), .hasPrimaryKey(), .hasRawColumn(), .hasRawIndex(), .hasMany(), .hasOne(), .belongsTo(), .belongsToMany(), .hasTimestamps(), .softDelete(), .scope(), .defaultScope(), .beforeInsert(), .afterInsert(), .beforeUpdate(), .beforeDelete().