drizzle-orm 0.41.0 → 0.43.0-e2b296d
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/gel-core/dialect.cjs +7 -22
- package/gel-core/dialect.cjs.map +1 -1
- package/gel-core/dialect.d.cts +1 -0
- package/gel-core/dialect.d.ts +1 -0
- package/gel-core/dialect.js +7 -22
- package/gel-core/dialect.js.map +1 -1
- package/gel-core/expressions.cjs +3 -3
- package/gel-core/expressions.cjs.map +1 -1
- package/gel-core/expressions.d.cts +1 -1
- package/gel-core/expressions.d.ts +1 -1
- package/gel-core/expressions.js +2 -2
- package/gel-core/expressions.js.map +1 -1
- package/gel-core/query-builders/select.cjs +80 -14
- package/gel-core/query-builders/select.cjs.map +1 -1
- package/gel-core/query-builders/select.d.cts +78 -13
- package/gel-core/query-builders/select.d.ts +78 -13
- package/gel-core/query-builders/select.js +80 -14
- package/gel-core/query-builders/select.js.map +1 -1
- package/gel-core/query-builders/select.types.cjs.map +1 -1
- package/gel-core/query-builders/select.types.d.cts +1 -1
- package/gel-core/query-builders/select.types.d.ts +1 -1
- package/index.cjs +0 -2
- package/index.cjs.map +1 -1
- package/index.d.cts +0 -1
- package/index.d.ts +0 -1
- package/index.js +0 -1
- package/index.js.map +1 -1
- package/mysql-core/columns/enum.cjs +40 -5
- package/mysql-core/columns/enum.cjs.map +1 -1
- package/mysql-core/columns/enum.d.cts +25 -2
- package/mysql-core/columns/enum.d.ts +25 -2
- package/mysql-core/columns/enum.js +38 -5
- package/mysql-core/columns/enum.js.map +1 -1
- package/mysql-core/dialect.cjs +5 -4
- package/mysql-core/dialect.cjs.map +1 -1
- package/mysql-core/dialect.js +5 -4
- package/mysql-core/dialect.js.map +1 -1
- package/mysql-core/expressions.cjs +3 -3
- package/mysql-core/expressions.cjs.map +1 -1
- package/mysql-core/expressions.d.cts +1 -1
- package/mysql-core/expressions.d.ts +1 -1
- package/mysql-core/expressions.js +2 -2
- package/mysql-core/expressions.js.map +1 -1
- package/mysql-core/query-builders/select.cjs +72 -34
- package/mysql-core/query-builders/select.cjs.map +1 -1
- package/mysql-core/query-builders/select.d.cts +66 -25
- package/mysql-core/query-builders/select.d.ts +66 -25
- package/mysql-core/query-builders/select.js +72 -34
- package/mysql-core/query-builders/select.js.map +1 -1
- package/mysql-core/query-builders/select.types.cjs.map +1 -1
- package/mysql-core/query-builders/select.types.d.cts +5 -4
- package/mysql-core/query-builders/select.types.d.ts +5 -4
- package/operations.cjs.map +1 -1
- package/operations.d.cts +5 -1
- package/operations.d.ts +5 -1
- package/package.json +55 -65
- package/pg-core/columns/enum.cjs +46 -2
- package/pg-core/columns/enum.cjs.map +1 -1
- package/pg-core/columns/enum.d.cts +39 -1
- package/pg-core/columns/enum.d.ts +39 -1
- package/pg-core/columns/enum.js +43 -2
- package/pg-core/columns/enum.js.map +1 -1
- package/pg-core/columns/text.cjs.map +1 -1
- package/pg-core/columns/text.d.cts +1 -2
- package/pg-core/columns/text.d.ts +1 -2
- package/pg-core/columns/text.js.map +1 -1
- package/pg-core/dialect.cjs +4 -3
- package/pg-core/dialect.cjs.map +1 -1
- package/pg-core/dialect.js +4 -3
- package/pg-core/dialect.js.map +1 -1
- package/pg-core/expressions.cjs +3 -3
- package/pg-core/expressions.cjs.map +1 -1
- package/pg-core/expressions.d.cts +1 -1
- package/pg-core/expressions.d.ts +1 -1
- package/pg-core/expressions.js +2 -2
- package/pg-core/expressions.js.map +1 -1
- package/pg-core/query-builders/select.cjs +80 -14
- package/pg-core/query-builders/select.cjs.map +1 -1
- package/pg-core/query-builders/select.d.cts +78 -13
- package/pg-core/query-builders/select.d.ts +78 -13
- package/pg-core/query-builders/select.js +80 -14
- package/pg-core/query-builders/select.js.map +1 -1
- package/pg-core/query-builders/select.types.cjs.map +1 -1
- package/pg-core/query-builders/select.types.d.cts +1 -1
- package/pg-core/query-builders/select.types.d.ts +1 -1
- package/pg-core/schema.cjs +6 -2
- package/pg-core/schema.cjs.map +1 -1
- package/pg-core/schema.d.cts +1 -2
- package/pg-core/schema.d.ts +1 -2
- package/pg-core/schema.js +7 -3
- package/pg-core/schema.js.map +1 -1
- package/planetscale-serverless/session.cjs.map +1 -1
- package/planetscale-serverless/session.js.map +1 -1
- package/query-builders/select.types.cjs.map +1 -1
- package/query-builders/select.types.d.cts +3 -1
- package/query-builders/select.types.d.ts +3 -1
- package/relations.d.cts +6 -6
- package/relations.d.ts +6 -6
- package/singlestore/driver.cjs +24 -2
- package/singlestore/driver.cjs.map +1 -1
- package/singlestore/driver.d.cts +3 -5
- package/singlestore/driver.d.ts +3 -5
- package/singlestore/driver.js +24 -2
- package/singlestore/driver.js.map +1 -1
- package/singlestore-core/dialect.cjs +5 -4
- package/singlestore-core/dialect.cjs.map +1 -1
- package/singlestore-core/dialect.js +5 -4
- package/singlestore-core/dialect.js.map +1 -1
- package/singlestore-core/expressions.cjs +3 -3
- package/singlestore-core/expressions.cjs.map +1 -1
- package/singlestore-core/expressions.d.cts +1 -1
- package/singlestore-core/expressions.d.ts +1 -1
- package/singlestore-core/expressions.js +2 -2
- package/singlestore-core/expressions.js.map +1 -1
- package/singlestore-core/query-builders/select.cjs +80 -14
- package/singlestore-core/query-builders/select.cjs.map +1 -1
- package/singlestore-core/query-builders/select.d.cts +78 -13
- package/singlestore-core/query-builders/select.d.ts +78 -13
- package/singlestore-core/query-builders/select.js +80 -14
- package/singlestore-core/query-builders/select.js.map +1 -1
- package/singlestore-core/query-builders/select.types.cjs.map +1 -1
- package/singlestore-core/query-builders/select.types.d.cts +1 -2
- package/singlestore-core/query-builders/select.types.d.ts +1 -2
- package/sql/expressions/conditions.cjs.map +1 -1
- package/sql/expressions/conditions.d.cts +2 -2
- package/sql/expressions/conditions.d.ts +2 -2
- package/sql/expressions/conditions.js.map +1 -1
- package/sqlite-core/dialect.cjs +3 -2
- package/sqlite-core/dialect.cjs.map +1 -1
- package/sqlite-core/dialect.js +3 -2
- package/sqlite-core/dialect.js.map +1 -1
- package/sqlite-core/expressions.cjs +3 -3
- package/sqlite-core/expressions.cjs.map +1 -1
- package/sqlite-core/expressions.d.cts +1 -1
- package/sqlite-core/expressions.d.ts +1 -1
- package/sqlite-core/expressions.js +2 -2
- package/sqlite-core/expressions.js.map +1 -1
- package/sqlite-core/query-builders/select.cjs +36 -8
- package/sqlite-core/query-builders/select.cjs.map +1 -1
- package/sqlite-core/query-builders/select.d.cts +40 -13
- package/sqlite-core/query-builders/select.d.ts +40 -13
- package/sqlite-core/query-builders/select.js +36 -8
- package/sqlite-core/query-builders/select.js.map +1 -1
- package/sqlite-core/query-builders/select.types.cjs.map +1 -1
- package/sqlite-core/query-builders/select.types.d.cts +1 -1
- package/sqlite-core/query-builders/select.types.d.ts +1 -1
- package/table.cjs.map +1 -1
- package/table.d.cts +3 -0
- package/table.d.ts +3 -0
- package/table.js.map +1 -1
- package/utils.cjs.map +1 -1
- package/utils.d.cts +1 -0
- package/utils.d.ts +1 -0
- package/utils.js.map +1 -1
- package/version.cjs +1 -1
- package/version.d.cts +1 -1
- package/version.d.ts +1 -1
- package/version.js +1 -1
- package/expressions.cjs +0 -23
- package/expressions.cjs.map +0 -1
- package/expressions.d.cts +0 -1
- package/expressions.d.ts +0 -1
- package/expressions.js +0 -2
- package/expressions.js.map +0 -1
|
@@ -11,11 +11,12 @@ import type { MySqlPreparedQueryConfig, PreparedQueryHKTBase, PreparedQueryKind
|
|
|
11
11
|
import type { MySqlViewBase } from "../view-base.cjs";
|
|
12
12
|
import type { MySqlViewWithSelection } from "../view.cjs";
|
|
13
13
|
import type { IndexConfig, MySqlSelectBase, MySqlSelectQueryBuilderBase } from "./select.cjs";
|
|
14
|
+
export type MySqlJoinType = Exclude<JoinType, 'full'>;
|
|
14
15
|
export interface MySqlSelectJoinConfig {
|
|
15
16
|
on: SQL | undefined;
|
|
16
17
|
table: MySqlTable | Subquery | MySqlViewBase | SQL;
|
|
17
18
|
alias: string | undefined;
|
|
18
|
-
joinType:
|
|
19
|
+
joinType: MySqlJoinType;
|
|
19
20
|
lateral?: boolean;
|
|
20
21
|
useIndex?: string[];
|
|
21
22
|
forceIndex?: string[];
|
|
@@ -54,8 +55,8 @@ export interface MySqlSelectConfig {
|
|
|
54
55
|
forceIndex?: string[];
|
|
55
56
|
ignoreIndex?: string[];
|
|
56
57
|
}
|
|
57
|
-
export type MySqlJoin<T extends AnyMySqlSelectQueryBuilder, TDynamic extends boolean, TJoinType extends
|
|
58
|
-
export type MySqlJoinFn<T extends AnyMySqlSelectQueryBuilder, TDynamic extends boolean, TJoinType extends
|
|
58
|
+
export type MySqlJoin<T extends AnyMySqlSelectQueryBuilder, TDynamic extends boolean, TJoinType extends MySqlJoinType, TJoinedTable extends MySqlTable | Subquery | MySqlViewBase | SQL, TJoinedName extends GetSelectTableName<TJoinedTable> = GetSelectTableName<TJoinedTable>> = T extends any ? MySqlSelectWithout<MySqlSelectKind<T['_']['hkt'], T['_']['tableName'], AppendToResult<T['_']['tableName'], T['_']['selection'], TJoinedName, TJoinedTable extends MySqlTable ? TJoinedTable['_']['columns'] : TJoinedTable extends Subquery | View ? Assume<TJoinedTable['_']['selectedFields'], SelectedFields> : never, T['_']['selectMode']>, T['_']['selectMode'] extends 'partial' ? T['_']['selectMode'] : 'multiple', T['_']['preparedQueryHKT'], AppendToNullabilityMap<T['_']['nullabilityMap'], TJoinedName, TJoinType>, TDynamic, T['_']['excludedMethods']>, TDynamic, T['_']['excludedMethods']> : never;
|
|
59
|
+
export type MySqlJoinFn<T extends AnyMySqlSelectQueryBuilder, TDynamic extends boolean, TJoinType extends MySqlJoinType, TIsLateral extends boolean> = 'cross' extends TJoinType ? <TJoinedTable extends (TIsLateral extends true ? Subquery | SQL : MySqlTable | Subquery | MySqlViewBase | SQL), TJoinedName extends GetSelectTableName<TJoinedTable> = GetSelectTableName<TJoinedTable>>(table: TJoinedTable, onIndex?: (TJoinedTable extends MySqlTable ? IndexConfig : 'Index hint configuration is allowed only for MySqlTable and not for subqueries or views') | undefined) => MySqlJoin<T, TDynamic, TJoinType, TJoinedTable, TJoinedName> : <TJoinedTable extends (TIsLateral extends true ? Subquery | SQL : MySqlTable | Subquery | MySqlViewBase | SQL), TJoinedName extends GetSelectTableName<TJoinedTable> = GetSelectTableName<TJoinedTable>>(table: TJoinedTable, on: ((aliases: T['_']['selection']) => SQL | undefined) | SQL | undefined, onIndex?: (TJoinedTable extends MySqlTable ? IndexConfig : 'Index hint configuration is allowed only for MySqlTable and not for subqueries or views') | undefined) => MySqlJoin<T, TDynamic, TJoinType, TJoinedTable, TJoinedName>;
|
|
59
60
|
export type SelectedFieldsFlat = SelectedFieldsFlatBase<MySqlColumn>;
|
|
60
61
|
export type SelectedFields = SelectedFieldsBase<MySqlColumn, MySqlTable>;
|
|
61
62
|
export type SelectedFieldsOrdered = SelectedFieldsOrderedBase<MySqlColumn>;
|
|
@@ -99,7 +100,7 @@ export interface MySqlSelectQueryBuilderHKT extends MySqlSelectHKTBase {
|
|
|
99
100
|
export interface MySqlSelectHKT extends MySqlSelectHKTBase {
|
|
100
101
|
_type: MySqlSelectBase<this['tableName'], Assume<this['selection'], ColumnsSelection>, this['selectMode'], Assume<this['preparedQueryHKT'], PreparedQueryHKTBase>, Assume<this['nullabilityMap'], Record<string, JoinNullability>>, this['dynamic'], this['excludedMethods'], Assume<this['result'], any[]>, Assume<this['selectedFields'], ColumnsSelection>>;
|
|
101
102
|
}
|
|
102
|
-
export type MySqlSetOperatorExcludedMethods = 'where' | 'having' | 'groupBy' | 'session' | 'leftJoin' | 'rightJoin' | 'innerJoin' | '
|
|
103
|
+
export type MySqlSetOperatorExcludedMethods = 'where' | 'having' | 'groupBy' | 'session' | 'leftJoin' | 'rightJoin' | 'innerJoin' | 'for';
|
|
103
104
|
export type MySqlSelectWithout<T extends AnyMySqlSelectQueryBuilder, TDynamic extends boolean, K extends keyof T & string, TResetExcluded extends boolean = false> = TDynamic extends true ? T : Omit<MySqlSelectKind<T['_']['hkt'], T['_']['tableName'], T['_']['selection'], T['_']['selectMode'], T['_']['preparedQueryHKT'], T['_']['nullabilityMap'], TDynamic, TResetExcluded extends true ? K : T['_']['excludedMethods'] | K, T['_']['result'], T['_']['selectedFields']>, TResetExcluded extends true ? K : T['_']['excludedMethods'] | K>;
|
|
104
105
|
export type MySqlSelectPrepare<T extends AnyMySqlSelect> = PreparedQueryKind<T['_']['preparedQueryHKT'], MySqlPreparedQueryConfig & {
|
|
105
106
|
execute: T['_']['result'];
|
|
@@ -11,11 +11,12 @@ import type { MySqlPreparedQueryConfig, PreparedQueryHKTBase, PreparedQueryKind
|
|
|
11
11
|
import type { MySqlViewBase } from "../view-base.js";
|
|
12
12
|
import type { MySqlViewWithSelection } from "../view.js";
|
|
13
13
|
import type { IndexConfig, MySqlSelectBase, MySqlSelectQueryBuilderBase } from "./select.js";
|
|
14
|
+
export type MySqlJoinType = Exclude<JoinType, 'full'>;
|
|
14
15
|
export interface MySqlSelectJoinConfig {
|
|
15
16
|
on: SQL | undefined;
|
|
16
17
|
table: MySqlTable | Subquery | MySqlViewBase | SQL;
|
|
17
18
|
alias: string | undefined;
|
|
18
|
-
joinType:
|
|
19
|
+
joinType: MySqlJoinType;
|
|
19
20
|
lateral?: boolean;
|
|
20
21
|
useIndex?: string[];
|
|
21
22
|
forceIndex?: string[];
|
|
@@ -54,8 +55,8 @@ export interface MySqlSelectConfig {
|
|
|
54
55
|
forceIndex?: string[];
|
|
55
56
|
ignoreIndex?: string[];
|
|
56
57
|
}
|
|
57
|
-
export type MySqlJoin<T extends AnyMySqlSelectQueryBuilder, TDynamic extends boolean, TJoinType extends
|
|
58
|
-
export type MySqlJoinFn<T extends AnyMySqlSelectQueryBuilder, TDynamic extends boolean, TJoinType extends
|
|
58
|
+
export type MySqlJoin<T extends AnyMySqlSelectQueryBuilder, TDynamic extends boolean, TJoinType extends MySqlJoinType, TJoinedTable extends MySqlTable | Subquery | MySqlViewBase | SQL, TJoinedName extends GetSelectTableName<TJoinedTable> = GetSelectTableName<TJoinedTable>> = T extends any ? MySqlSelectWithout<MySqlSelectKind<T['_']['hkt'], T['_']['tableName'], AppendToResult<T['_']['tableName'], T['_']['selection'], TJoinedName, TJoinedTable extends MySqlTable ? TJoinedTable['_']['columns'] : TJoinedTable extends Subquery | View ? Assume<TJoinedTable['_']['selectedFields'], SelectedFields> : never, T['_']['selectMode']>, T['_']['selectMode'] extends 'partial' ? T['_']['selectMode'] : 'multiple', T['_']['preparedQueryHKT'], AppendToNullabilityMap<T['_']['nullabilityMap'], TJoinedName, TJoinType>, TDynamic, T['_']['excludedMethods']>, TDynamic, T['_']['excludedMethods']> : never;
|
|
59
|
+
export type MySqlJoinFn<T extends AnyMySqlSelectQueryBuilder, TDynamic extends boolean, TJoinType extends MySqlJoinType, TIsLateral extends boolean> = 'cross' extends TJoinType ? <TJoinedTable extends (TIsLateral extends true ? Subquery | SQL : MySqlTable | Subquery | MySqlViewBase | SQL), TJoinedName extends GetSelectTableName<TJoinedTable> = GetSelectTableName<TJoinedTable>>(table: TJoinedTable, onIndex?: (TJoinedTable extends MySqlTable ? IndexConfig : 'Index hint configuration is allowed only for MySqlTable and not for subqueries or views') | undefined) => MySqlJoin<T, TDynamic, TJoinType, TJoinedTable, TJoinedName> : <TJoinedTable extends (TIsLateral extends true ? Subquery | SQL : MySqlTable | Subquery | MySqlViewBase | SQL), TJoinedName extends GetSelectTableName<TJoinedTable> = GetSelectTableName<TJoinedTable>>(table: TJoinedTable, on: ((aliases: T['_']['selection']) => SQL | undefined) | SQL | undefined, onIndex?: (TJoinedTable extends MySqlTable ? IndexConfig : 'Index hint configuration is allowed only for MySqlTable and not for subqueries or views') | undefined) => MySqlJoin<T, TDynamic, TJoinType, TJoinedTable, TJoinedName>;
|
|
59
60
|
export type SelectedFieldsFlat = SelectedFieldsFlatBase<MySqlColumn>;
|
|
60
61
|
export type SelectedFields = SelectedFieldsBase<MySqlColumn, MySqlTable>;
|
|
61
62
|
export type SelectedFieldsOrdered = SelectedFieldsOrderedBase<MySqlColumn>;
|
|
@@ -99,7 +100,7 @@ export interface MySqlSelectQueryBuilderHKT extends MySqlSelectHKTBase {
|
|
|
99
100
|
export interface MySqlSelectHKT extends MySqlSelectHKTBase {
|
|
100
101
|
_type: MySqlSelectBase<this['tableName'], Assume<this['selection'], ColumnsSelection>, this['selectMode'], Assume<this['preparedQueryHKT'], PreparedQueryHKTBase>, Assume<this['nullabilityMap'], Record<string, JoinNullability>>, this['dynamic'], this['excludedMethods'], Assume<this['result'], any[]>, Assume<this['selectedFields'], ColumnsSelection>>;
|
|
101
102
|
}
|
|
102
|
-
export type MySqlSetOperatorExcludedMethods = 'where' | 'having' | 'groupBy' | 'session' | 'leftJoin' | 'rightJoin' | 'innerJoin' | '
|
|
103
|
+
export type MySqlSetOperatorExcludedMethods = 'where' | 'having' | 'groupBy' | 'session' | 'leftJoin' | 'rightJoin' | 'innerJoin' | 'for';
|
|
103
104
|
export type MySqlSelectWithout<T extends AnyMySqlSelectQueryBuilder, TDynamic extends boolean, K extends keyof T & string, TResetExcluded extends boolean = false> = TDynamic extends true ? T : Omit<MySqlSelectKind<T['_']['hkt'], T['_']['tableName'], T['_']['selection'], T['_']['selectMode'], T['_']['preparedQueryHKT'], T['_']['nullabilityMap'], TDynamic, TResetExcluded extends true ? K : T['_']['excludedMethods'] | K, T['_']['result'], T['_']['selectedFields']>, TResetExcluded extends true ? K : T['_']['excludedMethods'] | K>;
|
|
104
105
|
export type MySqlSelectPrepare<T extends AnyMySqlSelect> = PreparedQueryKind<T['_']['preparedQueryHKT'], MySqlPreparedQueryConfig & {
|
|
105
106
|
execute: T['_']['result'];
|
package/operations.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/operations.ts"],"sourcesContent":["import type { AnyColumn, Column } from './column.ts';\nimport type { SQL } from './sql/sql.ts';\nimport type { Table } from './table.ts';\n\nexport type RequiredKeyOnly<TKey extends string, T extends Column> = T extends AnyColumn<{\n\tnotNull: true;\n\thasDefault: false;\n}> ? TKey\n\t: never;\n\nexport type OptionalKeyOnly
|
|
1
|
+
{"version":3,"sources":["../src/operations.ts"],"sourcesContent":["import type { AnyColumn, Column } from './column.ts';\nimport type { SQL } from './sql/sql.ts';\nimport type { Table } from './table.ts';\n\nexport type RequiredKeyOnly<TKey extends string, T extends Column> = T extends AnyColumn<{\n\tnotNull: true;\n\thasDefault: false;\n}> ? TKey\n\t: never;\n\nexport type OptionalKeyOnly<TKey extends string, T extends Column, OverrideT extends boolean | undefined = false> =\n\tTKey extends RequiredKeyOnly<TKey, T> ? never : T extends {\n\t\t_: {\n\t\t\tgenerated: undefined;\n\t\t};\n\t} ? (T extends {\n\t\t\t_: {\n\t\t\t\tidentity: undefined;\n\t\t\t};\n\t\t} ? TKey\n\t\t\t: T['_']['identity'] extends 'always' ? OverrideT extends true ? TKey : never\n\t\t\t: TKey)\n\t: never;\n\n// TODO: SQL -> SQLWrapper\nexport type SelectedFieldsFlat<TColumn extends Column> = Record<\n\tstring,\n\tTColumn | SQL | SQL.Aliased\n>;\n\nexport type SelectedFieldsFlatFull<TColumn extends Column> = Record<\n\tstring,\n\tTColumn | SQL | SQL.Aliased\n>;\n\nexport type SelectedFields<TColumn extends Column, TTable extends Table> = Record<\n\tstring,\n\tSelectedFieldsFlat<TColumn>[string] | TTable | SelectedFieldsFlat<TColumn>\n>;\n\nexport type SelectedFieldsOrdered<TColumn extends Column> = {\n\tpath: string[];\n\tfield: TColumn | SQL | SQL.Aliased;\n}[];\n"],"mappings":";;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
|
package/operations.d.cts
CHANGED
|
@@ -9,7 +9,11 @@ export type OptionalKeyOnly<TKey extends string, T extends Column, OverrideT ext
|
|
|
9
9
|
_: {
|
|
10
10
|
generated: undefined;
|
|
11
11
|
};
|
|
12
|
-
} ? (T
|
|
12
|
+
} ? (T extends {
|
|
13
|
+
_: {
|
|
14
|
+
identity: undefined;
|
|
15
|
+
};
|
|
16
|
+
} ? TKey : T['_']['identity'] extends 'always' ? OverrideT extends true ? TKey : never : TKey) : never;
|
|
13
17
|
export type SelectedFieldsFlat<TColumn extends Column> = Record<string, TColumn | SQL | SQL.Aliased>;
|
|
14
18
|
export type SelectedFieldsFlatFull<TColumn extends Column> = Record<string, TColumn | SQL | SQL.Aliased>;
|
|
15
19
|
export type SelectedFields<TColumn extends Column, TTable extends Table> = Record<string, SelectedFieldsFlat<TColumn>[string] | TTable | SelectedFieldsFlat<TColumn>>;
|
package/operations.d.ts
CHANGED
|
@@ -9,7 +9,11 @@ export type OptionalKeyOnly<TKey extends string, T extends Column, OverrideT ext
|
|
|
9
9
|
_: {
|
|
10
10
|
generated: undefined;
|
|
11
11
|
};
|
|
12
|
-
} ? (T
|
|
12
|
+
} ? (T extends {
|
|
13
|
+
_: {
|
|
14
|
+
identity: undefined;
|
|
15
|
+
};
|
|
16
|
+
} ? TKey : T['_']['identity'] extends 'always' ? OverrideT extends true ? TKey : never : TKey) : never;
|
|
13
17
|
export type SelectedFieldsFlat<TColumn extends Column> = Record<string, TColumn | SQL | SQL.Aliased>;
|
|
14
18
|
export type SelectedFieldsFlatFull<TColumn extends Column> = Record<string, TColumn | SQL | SQL.Aliased>;
|
|
15
19
|
export type SelectedFields<TColumn extends Column, TTable extends Table> = Record<string, SelectedFieldsFlat<TColumn>[string] | TTable | SelectedFieldsFlat<TColumn>>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "drizzle-orm",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.43.0-e2b296d",
|
|
4
4
|
"description": "Drizzle ORM package for SQL databases",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"scripts": {
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
"@neondatabase/serverless": ">=0.10.0",
|
|
54
54
|
"@op-engineering/op-sqlite": ">=2",
|
|
55
55
|
"@opentelemetry/api": "^1.4.1",
|
|
56
|
-
"@planetscale/database": ">=1",
|
|
56
|
+
"@planetscale/database": ">=1.13",
|
|
57
57
|
"@prisma/client": "*",
|
|
58
58
|
"@tidbcloud/serverless": "*",
|
|
59
59
|
"@types/better-sqlite3": "*",
|
|
@@ -64,14 +64,14 @@
|
|
|
64
64
|
"better-sqlite3": ">=7",
|
|
65
65
|
"bun-types": "*",
|
|
66
66
|
"expo-sqlite": ">=14.0.0",
|
|
67
|
+
"gel": ">=2",
|
|
67
68
|
"knex": "*",
|
|
68
69
|
"kysely": "*",
|
|
69
70
|
"mysql2": ">=2",
|
|
70
71
|
"pg": ">=8",
|
|
71
72
|
"postgres": ">=3",
|
|
72
73
|
"sql.js": ">=1",
|
|
73
|
-
"sqlite3": ">=5"
|
|
74
|
-
"gel": ">=2"
|
|
74
|
+
"sqlite3": ">=5"
|
|
75
75
|
},
|
|
76
76
|
"peerDependenciesMeta": {
|
|
77
77
|
"mysql2": {
|
|
@@ -180,11 +180,12 @@
|
|
|
180
180
|
"@types/sql.js": "^1.4.4",
|
|
181
181
|
"@vercel/postgres": "^0.8.0",
|
|
182
182
|
"@xata.io/client": "^0.29.3",
|
|
183
|
-
"better-sqlite3": "^
|
|
183
|
+
"better-sqlite3": "^11.9.1",
|
|
184
184
|
"bun-types": "^1.2.0",
|
|
185
185
|
"cpy": "^10.1.0",
|
|
186
186
|
"expo-sqlite": "^14.0.0",
|
|
187
187
|
"gel": "^2.0.0",
|
|
188
|
+
"glob": "^11.0.1",
|
|
188
189
|
"knex": "^2.4.2",
|
|
189
190
|
"kysely": "^0.25.0",
|
|
190
191
|
"mysql2": "^3.3.3",
|
|
@@ -194,6 +195,7 @@
|
|
|
194
195
|
"react": "^18.2.0",
|
|
195
196
|
"sql.js": "^1.8.0",
|
|
196
197
|
"sqlite3": "^5.1.2",
|
|
198
|
+
"ts-morph": "^25.0.1",
|
|
197
199
|
"tslib": "^2.5.2",
|
|
198
200
|
"tsx": "^3.12.7",
|
|
199
201
|
"vite-tsconfig-paths": "^4.3.2",
|
|
@@ -286,18 +288,6 @@
|
|
|
286
288
|
"types": "./errors.d.ts",
|
|
287
289
|
"default": "./errors.js"
|
|
288
290
|
},
|
|
289
|
-
"./expressions": {
|
|
290
|
-
"import": {
|
|
291
|
-
"types": "./expressions.d.ts",
|
|
292
|
-
"default": "./expressions.js"
|
|
293
|
-
},
|
|
294
|
-
"require": {
|
|
295
|
-
"types": "./expressions.d.cts",
|
|
296
|
-
"default": "./expressions.cjs"
|
|
297
|
-
},
|
|
298
|
-
"types": "./expressions.d.ts",
|
|
299
|
-
"default": "./expressions.js"
|
|
300
|
-
},
|
|
301
291
|
".": {
|
|
302
292
|
"import": {
|
|
303
293
|
"types": "./index.d.ts",
|
|
@@ -514,54 +504,6 @@
|
|
|
514
504
|
"types": "./view-common.d.ts",
|
|
515
505
|
"default": "./view-common.js"
|
|
516
506
|
},
|
|
517
|
-
"./bun-sql/driver": {
|
|
518
|
-
"import": {
|
|
519
|
-
"types": "./bun-sql/driver.d.ts",
|
|
520
|
-
"default": "./bun-sql/driver.js"
|
|
521
|
-
},
|
|
522
|
-
"require": {
|
|
523
|
-
"types": "./bun-sql/driver.d.cts",
|
|
524
|
-
"default": "./bun-sql/driver.cjs"
|
|
525
|
-
},
|
|
526
|
-
"types": "./bun-sql/driver.d.ts",
|
|
527
|
-
"default": "./bun-sql/driver.js"
|
|
528
|
-
},
|
|
529
|
-
"./bun-sql": {
|
|
530
|
-
"import": {
|
|
531
|
-
"types": "./bun-sql/index.d.ts",
|
|
532
|
-
"default": "./bun-sql/index.js"
|
|
533
|
-
},
|
|
534
|
-
"require": {
|
|
535
|
-
"types": "./bun-sql/index.d.cts",
|
|
536
|
-
"default": "./bun-sql/index.cjs"
|
|
537
|
-
},
|
|
538
|
-
"types": "./bun-sql/index.d.ts",
|
|
539
|
-
"default": "./bun-sql/index.js"
|
|
540
|
-
},
|
|
541
|
-
"./bun-sql/migrator": {
|
|
542
|
-
"import": {
|
|
543
|
-
"types": "./bun-sql/migrator.d.ts",
|
|
544
|
-
"default": "./bun-sql/migrator.js"
|
|
545
|
-
},
|
|
546
|
-
"require": {
|
|
547
|
-
"types": "./bun-sql/migrator.d.cts",
|
|
548
|
-
"default": "./bun-sql/migrator.cjs"
|
|
549
|
-
},
|
|
550
|
-
"types": "./bun-sql/migrator.d.ts",
|
|
551
|
-
"default": "./bun-sql/migrator.js"
|
|
552
|
-
},
|
|
553
|
-
"./bun-sql/session": {
|
|
554
|
-
"import": {
|
|
555
|
-
"types": "./bun-sql/session.d.ts",
|
|
556
|
-
"default": "./bun-sql/session.js"
|
|
557
|
-
},
|
|
558
|
-
"require": {
|
|
559
|
-
"types": "./bun-sql/session.d.cts",
|
|
560
|
-
"default": "./bun-sql/session.cjs"
|
|
561
|
-
},
|
|
562
|
-
"types": "./bun-sql/session.d.ts",
|
|
563
|
-
"default": "./bun-sql/session.js"
|
|
564
|
-
},
|
|
565
507
|
"./better-sqlite3/driver": {
|
|
566
508
|
"import": {
|
|
567
509
|
"types": "./better-sqlite3/driver.d.ts",
|
|
@@ -610,6 +552,54 @@
|
|
|
610
552
|
"types": "./better-sqlite3/session.d.ts",
|
|
611
553
|
"default": "./better-sqlite3/session.js"
|
|
612
554
|
},
|
|
555
|
+
"./bun-sql/driver": {
|
|
556
|
+
"import": {
|
|
557
|
+
"types": "./bun-sql/driver.d.ts",
|
|
558
|
+
"default": "./bun-sql/driver.js"
|
|
559
|
+
},
|
|
560
|
+
"require": {
|
|
561
|
+
"types": "./bun-sql/driver.d.cts",
|
|
562
|
+
"default": "./bun-sql/driver.cjs"
|
|
563
|
+
},
|
|
564
|
+
"types": "./bun-sql/driver.d.ts",
|
|
565
|
+
"default": "./bun-sql/driver.js"
|
|
566
|
+
},
|
|
567
|
+
"./bun-sql": {
|
|
568
|
+
"import": {
|
|
569
|
+
"types": "./bun-sql/index.d.ts",
|
|
570
|
+
"default": "./bun-sql/index.js"
|
|
571
|
+
},
|
|
572
|
+
"require": {
|
|
573
|
+
"types": "./bun-sql/index.d.cts",
|
|
574
|
+
"default": "./bun-sql/index.cjs"
|
|
575
|
+
},
|
|
576
|
+
"types": "./bun-sql/index.d.ts",
|
|
577
|
+
"default": "./bun-sql/index.js"
|
|
578
|
+
},
|
|
579
|
+
"./bun-sql/migrator": {
|
|
580
|
+
"import": {
|
|
581
|
+
"types": "./bun-sql/migrator.d.ts",
|
|
582
|
+
"default": "./bun-sql/migrator.js"
|
|
583
|
+
},
|
|
584
|
+
"require": {
|
|
585
|
+
"types": "./bun-sql/migrator.d.cts",
|
|
586
|
+
"default": "./bun-sql/migrator.cjs"
|
|
587
|
+
},
|
|
588
|
+
"types": "./bun-sql/migrator.d.ts",
|
|
589
|
+
"default": "./bun-sql/migrator.js"
|
|
590
|
+
},
|
|
591
|
+
"./bun-sql/session": {
|
|
592
|
+
"import": {
|
|
593
|
+
"types": "./bun-sql/session.d.ts",
|
|
594
|
+
"default": "./bun-sql/session.js"
|
|
595
|
+
},
|
|
596
|
+
"require": {
|
|
597
|
+
"types": "./bun-sql/session.d.cts",
|
|
598
|
+
"default": "./bun-sql/session.cjs"
|
|
599
|
+
},
|
|
600
|
+
"types": "./bun-sql/session.d.ts",
|
|
601
|
+
"default": "./bun-sql/session.js"
|
|
602
|
+
},
|
|
613
603
|
"./bun-sqlite/driver": {
|
|
614
604
|
"import": {
|
|
615
605
|
"types": "./bun-sqlite/driver.d.ts",
|
package/pg-core/columns/enum.cjs
CHANGED
|
@@ -20,13 +20,42 @@ var enum_exports = {};
|
|
|
20
20
|
__export(enum_exports, {
|
|
21
21
|
PgEnumColumn: () => PgEnumColumn,
|
|
22
22
|
PgEnumColumnBuilder: () => PgEnumColumnBuilder,
|
|
23
|
+
PgEnumObjectColumn: () => PgEnumObjectColumn,
|
|
24
|
+
PgEnumObjectColumnBuilder: () => PgEnumObjectColumnBuilder,
|
|
23
25
|
isPgEnum: () => isPgEnum,
|
|
24
26
|
pgEnum: () => pgEnum,
|
|
27
|
+
pgEnumObjectWithSchema: () => pgEnumObjectWithSchema,
|
|
25
28
|
pgEnumWithSchema: () => pgEnumWithSchema
|
|
26
29
|
});
|
|
27
30
|
module.exports = __toCommonJS(enum_exports);
|
|
28
31
|
var import_entity = require("../../entity.cjs");
|
|
29
32
|
var import_common = require("./common.cjs");
|
|
33
|
+
class PgEnumObjectColumnBuilder extends import_common.PgColumnBuilder {
|
|
34
|
+
static [import_entity.entityKind] = "PgEnumObjectColumnBuilder";
|
|
35
|
+
constructor(name, enumInstance) {
|
|
36
|
+
super(name, "string", "PgEnumObjectColumn");
|
|
37
|
+
this.config.enum = enumInstance;
|
|
38
|
+
}
|
|
39
|
+
/** @internal */
|
|
40
|
+
build(table) {
|
|
41
|
+
return new PgEnumObjectColumn(
|
|
42
|
+
table,
|
|
43
|
+
this.config
|
|
44
|
+
);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
class PgEnumObjectColumn extends import_common.PgColumn {
|
|
48
|
+
static [import_entity.entityKind] = "PgEnumObjectColumn";
|
|
49
|
+
enum;
|
|
50
|
+
enumValues = this.config.enum.enumValues;
|
|
51
|
+
constructor(table, config) {
|
|
52
|
+
super(table, config);
|
|
53
|
+
this.enum = config.enum;
|
|
54
|
+
}
|
|
55
|
+
getSQLType() {
|
|
56
|
+
return this.enum.enumName;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
30
59
|
const isPgEnumSym = Symbol.for("drizzle:isPgEnum");
|
|
31
60
|
function isPgEnum(obj) {
|
|
32
61
|
return !!obj && typeof obj === "function" && isPgEnumSym in obj && obj[isPgEnumSym] === true;
|
|
@@ -57,8 +86,8 @@ class PgEnumColumn extends import_common.PgColumn {
|
|
|
57
86
|
return this.enum.enumName;
|
|
58
87
|
}
|
|
59
88
|
}
|
|
60
|
-
function pgEnum(enumName,
|
|
61
|
-
return pgEnumWithSchema(enumName,
|
|
89
|
+
function pgEnum(enumName, input) {
|
|
90
|
+
return Array.isArray(input) ? pgEnumWithSchema(enumName, [...input], void 0) : pgEnumObjectWithSchema(enumName, input, void 0);
|
|
62
91
|
}
|
|
63
92
|
function pgEnumWithSchema(enumName, values, schema) {
|
|
64
93
|
const enumInstance = Object.assign(
|
|
@@ -72,12 +101,27 @@ function pgEnumWithSchema(enumName, values, schema) {
|
|
|
72
101
|
);
|
|
73
102
|
return enumInstance;
|
|
74
103
|
}
|
|
104
|
+
function pgEnumObjectWithSchema(enumName, values, schema) {
|
|
105
|
+
const enumInstance = Object.assign(
|
|
106
|
+
(name) => new PgEnumObjectColumnBuilder(name ?? "", enumInstance),
|
|
107
|
+
{
|
|
108
|
+
enumName,
|
|
109
|
+
enumValues: Object.values(values),
|
|
110
|
+
schema,
|
|
111
|
+
[isPgEnumSym]: true
|
|
112
|
+
}
|
|
113
|
+
);
|
|
114
|
+
return enumInstance;
|
|
115
|
+
}
|
|
75
116
|
// Annotate the CommonJS export names for ESM import in node:
|
|
76
117
|
0 && (module.exports = {
|
|
77
118
|
PgEnumColumn,
|
|
78
119
|
PgEnumColumnBuilder,
|
|
120
|
+
PgEnumObjectColumn,
|
|
121
|
+
PgEnumObjectColumnBuilder,
|
|
79
122
|
isPgEnum,
|
|
80
123
|
pgEnum,
|
|
124
|
+
pgEnumObjectWithSchema,
|
|
81
125
|
pgEnumWithSchema
|
|
82
126
|
});
|
|
83
127
|
//# sourceMappingURL=enum.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/pg-core/columns/enum.ts"],"sourcesContent":["import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, MakeColumnConfig } from '~/column-builder.ts';\nimport type { ColumnBaseConfig } from '~/column.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { AnyPgTable } from '~/pg-core/table.ts';\nimport type { Writable } from '~/utils.ts';\nimport { PgColumn, PgColumnBuilder } from './common.ts';\n\nexport type PgEnumColumnBuilderInitial<TName extends string, TValues extends [string, ...string[]]> =\n\tPgEnumColumnBuilder<{\n\t\tname: TName;\n\t\tdataType: 'string';\n\t\tcolumnType: 'PgEnumColumn';\n\t\tdata: TValues[number];\n\t\tenumValues: TValues;\n\t\tdriverParam: string;\n\t}>;\n\nconst isPgEnumSym = Symbol.for('drizzle:isPgEnum');\nexport interface PgEnum<TValues extends [string, ...string[]]> {\n\t(): PgEnumColumnBuilderInitial<'', TValues>;\n\t<TName extends string>(name: TName): PgEnumColumnBuilderInitial<TName, TValues>;\n\t<TName extends string>(name?: TName): PgEnumColumnBuilderInitial<TName, TValues>;\n\n\treadonly enumName: string;\n\treadonly enumValues: TValues;\n\treadonly schema: string | undefined;\n\t/** @internal */\n\t[isPgEnumSym]: true;\n}\n\nexport function isPgEnum(obj: unknown): obj is PgEnum<[string, ...string[]]> {\n\treturn !!obj && typeof obj === 'function' && isPgEnumSym in obj && obj[isPgEnumSym] === true;\n}\n\nexport class PgEnumColumnBuilder<\n\tT extends ColumnBuilderBaseConfig<'string', 'PgEnumColumn'> & { enumValues: [string, ...string[]] },\n> extends PgColumnBuilder<T, { enum: PgEnum<T['enumValues']> }> {\n\tstatic override readonly [entityKind]: string = 'PgEnumColumnBuilder';\n\n\tconstructor(name: T['name'], enumInstance: PgEnum<T['enumValues']>) {\n\t\tsuper(name, 'string', 'PgEnumColumn');\n\t\tthis.config.enum = enumInstance;\n\t}\n\n\t/** @internal */\n\toverride build<TTableName extends string>(\n\t\ttable: AnyPgTable<{ name: TTableName }>,\n\t): PgEnumColumn<MakeColumnConfig<T, TTableName>> {\n\t\treturn new PgEnumColumn<MakeColumnConfig<T, TTableName>>(\n\t\t\ttable,\n\t\t\tthis.config as ColumnBuilderRuntimeConfig<any, any>,\n\t\t);\n\t}\n}\n\nexport class PgEnumColumn<T extends ColumnBaseConfig<'string', 'PgEnumColumn'> & { enumValues: [string, ...string[]] }>\n\textends PgColumn<T, { enum: PgEnum<T['enumValues']> }>\n{\n\tstatic override readonly [entityKind]: string = 'PgEnumColumn';\n\n\treadonly enum = this.config.enum;\n\toverride readonly enumValues = this.config.enum.enumValues;\n\n\tconstructor(\n\t\ttable: AnyPgTable<{ name: T['tableName'] }>,\n\t\tconfig: PgEnumColumnBuilder<T>['config'],\n\t) {\n\t\tsuper(table, config);\n\t\tthis.enum = config.enum;\n\t}\n\n\tgetSQLType(): string {\n\t\treturn this.enum.enumName;\n\t}\n}\n\
|
|
1
|
+
{"version":3,"sources":["../../../src/pg-core/columns/enum.ts"],"sourcesContent":["import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, MakeColumnConfig } from '~/column-builder.ts';\nimport type { ColumnBaseConfig } from '~/column.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { AnyPgTable } from '~/pg-core/table.ts';\nimport type { NonArray, Writable } from '~/utils.ts';\nimport { PgColumn, PgColumnBuilder } from './common.ts';\n\n// Enum as ts enum\n\nexport type PgEnumObjectColumnBuilderInitial<TName extends string, TValues extends object> = PgEnumObjectColumnBuilder<{\n\tname: TName;\n\tdataType: 'string';\n\tcolumnType: 'PgEnumObjectColumn';\n\tdata: TValues[keyof TValues];\n\tenumValues: string[];\n\tdriverParam: string;\n}>;\n\nexport interface PgEnumObject<TValues extends object> {\n\t(): PgEnumObjectColumnBuilderInitial<'', TValues>;\n\t<TName extends string>(name: TName): PgEnumObjectColumnBuilderInitial<TName, TValues>;\n\t<TName extends string>(name?: TName): PgEnumObjectColumnBuilderInitial<TName, TValues>;\n\n\treadonly enumName: string;\n\treadonly enumValues: string[];\n\treadonly schema: string | undefined;\n\t/** @internal */\n\t[isPgEnumSym]: true;\n}\n\nexport class PgEnumObjectColumnBuilder<\n\tT extends ColumnBuilderBaseConfig<'string', 'PgEnumObjectColumn'> & { enumValues: string[] },\n> extends PgColumnBuilder<T, { enum: PgEnumObject<any> }> {\n\tstatic override readonly [entityKind]: string = 'PgEnumObjectColumnBuilder';\n\n\tconstructor(name: T['name'], enumInstance: PgEnumObject<any>) {\n\t\tsuper(name, 'string', 'PgEnumObjectColumn');\n\t\tthis.config.enum = enumInstance;\n\t}\n\n\t/** @internal */\n\toverride build<TTableName extends string>(\n\t\ttable: AnyPgTable<{ name: TTableName }>,\n\t): PgEnumObjectColumn<MakeColumnConfig<T, TTableName>> {\n\t\treturn new PgEnumObjectColumn<MakeColumnConfig<T, TTableName>>(\n\t\t\ttable,\n\t\t\tthis.config as ColumnBuilderRuntimeConfig<any, any>,\n\t\t);\n\t}\n}\n\nexport class PgEnumObjectColumn<T extends ColumnBaseConfig<'string', 'PgEnumObjectColumn'> & { enumValues: object }>\n\textends PgColumn<T, { enum: PgEnumObject<object> }>\n{\n\tstatic override readonly [entityKind]: string = 'PgEnumObjectColumn';\n\n\treadonly enum;\n\toverride readonly enumValues = this.config.enum.enumValues;\n\n\tconstructor(\n\t\ttable: AnyPgTable<{ name: T['tableName'] }>,\n\t\tconfig: PgEnumObjectColumnBuilder<T>['config'],\n\t) {\n\t\tsuper(table, config);\n\t\tthis.enum = config.enum;\n\t}\n\n\tgetSQLType(): string {\n\t\treturn this.enum.enumName;\n\t}\n}\n\n// Enum as string union\n\nexport type PgEnumColumnBuilderInitial<TName extends string, TValues extends [string, ...string[]]> =\n\tPgEnumColumnBuilder<{\n\t\tname: TName;\n\t\tdataType: 'string';\n\t\tcolumnType: 'PgEnumColumn';\n\t\tdata: TValues[number];\n\t\tenumValues: TValues;\n\t\tdriverParam: string;\n\t}>;\n\nconst isPgEnumSym = Symbol.for('drizzle:isPgEnum');\nexport interface PgEnum<TValues extends [string, ...string[]]> {\n\t(): PgEnumColumnBuilderInitial<'', TValues>;\n\t<TName extends string>(name: TName): PgEnumColumnBuilderInitial<TName, TValues>;\n\t<TName extends string>(name?: TName): PgEnumColumnBuilderInitial<TName, TValues>;\n\n\treadonly enumName: string;\n\treadonly enumValues: TValues;\n\treadonly schema: string | undefined;\n\t/** @internal */\n\t[isPgEnumSym]: true;\n}\n\nexport function isPgEnum(obj: unknown): obj is PgEnum<[string, ...string[]]> {\n\treturn !!obj && typeof obj === 'function' && isPgEnumSym in obj && obj[isPgEnumSym] === true;\n}\n\nexport class PgEnumColumnBuilder<\n\tT extends ColumnBuilderBaseConfig<'string', 'PgEnumColumn'> & { enumValues: [string, ...string[]] },\n> extends PgColumnBuilder<T, { enum: PgEnum<T['enumValues']> }> {\n\tstatic override readonly [entityKind]: string = 'PgEnumColumnBuilder';\n\n\tconstructor(name: T['name'], enumInstance: PgEnum<T['enumValues']>) {\n\t\tsuper(name, 'string', 'PgEnumColumn');\n\t\tthis.config.enum = enumInstance;\n\t}\n\n\t/** @internal */\n\toverride build<TTableName extends string>(\n\t\ttable: AnyPgTable<{ name: TTableName }>,\n\t): PgEnumColumn<MakeColumnConfig<T, TTableName>> {\n\t\treturn new PgEnumColumn<MakeColumnConfig<T, TTableName>>(\n\t\t\ttable,\n\t\t\tthis.config as ColumnBuilderRuntimeConfig<any, any>,\n\t\t);\n\t}\n}\n\nexport class PgEnumColumn<T extends ColumnBaseConfig<'string', 'PgEnumColumn'> & { enumValues: [string, ...string[]] }>\n\textends PgColumn<T, { enum: PgEnum<T['enumValues']> }>\n{\n\tstatic override readonly [entityKind]: string = 'PgEnumColumn';\n\n\treadonly enum = this.config.enum;\n\toverride readonly enumValues = this.config.enum.enumValues;\n\n\tconstructor(\n\t\ttable: AnyPgTable<{ name: T['tableName'] }>,\n\t\tconfig: PgEnumColumnBuilder<T>['config'],\n\t) {\n\t\tsuper(table, config);\n\t\tthis.enum = config.enum;\n\t}\n\n\tgetSQLType(): string {\n\t\treturn this.enum.enumName;\n\t}\n}\n\nexport function pgEnum<U extends string, T extends Readonly<[U, ...U[]]>>(\n\tenumName: string,\n\tvalues: T | Writable<T>,\n): PgEnum<Writable<T>>;\n\nexport function pgEnum<E extends Record<string, string>>(\n\tenumName: string,\n\tenumObj: NonArray<E>,\n): PgEnumObject<E>;\n\nexport function pgEnum(\n\tenumName: any,\n\tinput: any,\n): any {\n\treturn Array.isArray(input)\n\t\t? pgEnumWithSchema(enumName, [...input] as [string, ...string[]], undefined)\n\t\t: pgEnumObjectWithSchema(enumName, input, undefined);\n}\n\n/** @internal */\nexport function pgEnumWithSchema<U extends string, T extends Readonly<[U, ...U[]]>>(\n\tenumName: string,\n\tvalues: T | Writable<T>,\n\tschema?: string,\n): PgEnum<Writable<T>> {\n\tconst enumInstance: PgEnum<Writable<T>> = Object.assign(\n\t\t<TName extends string>(name?: TName): PgEnumColumnBuilderInitial<TName, Writable<T>> =>\n\t\t\tnew PgEnumColumnBuilder(name ?? '' as TName, enumInstance),\n\t\t{\n\t\t\tenumName,\n\t\t\tenumValues: values,\n\t\t\tschema,\n\t\t\t[isPgEnumSym]: true,\n\t\t} as const,\n\t);\n\n\treturn enumInstance;\n}\n\n/** @internal */\nexport function pgEnumObjectWithSchema<T extends object>(\n\tenumName: string,\n\tvalues: T,\n\tschema?: string,\n): PgEnumObject<T> {\n\tconst enumInstance: PgEnumObject<T> = Object.assign(\n\t\t<TName extends string>(name?: TName): PgEnumObjectColumnBuilderInitial<TName, T> =>\n\t\t\tnew PgEnumObjectColumnBuilder(name ?? '' as TName, enumInstance),\n\t\t{\n\t\t\tenumName,\n\t\t\tenumValues: Object.values(values),\n\t\t\tschema,\n\t\t\t[isPgEnumSym]: true,\n\t\t} as const,\n\t);\n\n\treturn enumInstance;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,oBAA2B;AAG3B,oBAA0C;AAyBnC,MAAM,kCAEH,8BAAgD;AAAA,EACzD,QAA0B,wBAAU,IAAY;AAAA,EAEhD,YAAY,MAAiB,cAAiC;AAC7D,UAAM,MAAM,UAAU,oBAAoB;AAC1C,SAAK,OAAO,OAAO;AAAA,EACpB;AAAA;AAAA,EAGS,MACR,OACsD;AACtD,WAAO,IAAI;AAAA,MACV;AAAA,MACA,KAAK;AAAA,IACN;AAAA,EACD;AACD;AAEO,MAAM,2BACJ,uBACT;AAAA,EACC,QAA0B,wBAAU,IAAY;AAAA,EAEvC;AAAA,EACS,aAAa,KAAK,OAAO,KAAK;AAAA,EAEhD,YACC,OACA,QACC;AACD,UAAM,OAAO,MAAM;AACnB,SAAK,OAAO,OAAO;AAAA,EACpB;AAAA,EAEA,aAAqB;AACpB,WAAO,KAAK,KAAK;AAAA,EAClB;AACD;AAcA,MAAM,cAAc,OAAO,IAAI,kBAAkB;AAa1C,SAAS,SAAS,KAAoD;AAC5E,SAAO,CAAC,CAAC,OAAO,OAAO,QAAQ,cAAc,eAAe,OAAO,IAAI,WAAW,MAAM;AACzF;AAEO,MAAM,4BAEH,8BAAsD;AAAA,EAC/D,QAA0B,wBAAU,IAAY;AAAA,EAEhD,YAAY,MAAiB,cAAuC;AACnE,UAAM,MAAM,UAAU,cAAc;AACpC,SAAK,OAAO,OAAO;AAAA,EACpB;AAAA;AAAA,EAGS,MACR,OACgD;AAChD,WAAO,IAAI;AAAA,MACV;AAAA,MACA,KAAK;AAAA,IACN;AAAA,EACD;AACD;AAEO,MAAM,qBACJ,uBACT;AAAA,EACC,QAA0B,wBAAU,IAAY;AAAA,EAEvC,OAAO,KAAK,OAAO;AAAA,EACV,aAAa,KAAK,OAAO,KAAK;AAAA,EAEhD,YACC,OACA,QACC;AACD,UAAM,OAAO,MAAM;AACnB,SAAK,OAAO,OAAO;AAAA,EACpB;AAAA,EAEA,aAAqB;AACpB,WAAO,KAAK,KAAK;AAAA,EAClB;AACD;AAYO,SAAS,OACf,UACA,OACM;AACN,SAAO,MAAM,QAAQ,KAAK,IACvB,iBAAiB,UAAU,CAAC,GAAG,KAAK,GAA4B,MAAS,IACzE,uBAAuB,UAAU,OAAO,MAAS;AACrD;AAGO,SAAS,iBACf,UACA,QACA,QACsB;AACtB,QAAM,eAAoC,OAAO;AAAA,IAChD,CAAuB,SACtB,IAAI,oBAAoB,QAAQ,IAAa,YAAY;AAAA,IAC1D;AAAA,MACC;AAAA,MACA,YAAY;AAAA,MACZ;AAAA,MACA,CAAC,WAAW,GAAG;AAAA,IAChB;AAAA,EACD;AAEA,SAAO;AACR;AAGO,SAAS,uBACf,UACA,QACA,QACkB;AAClB,QAAM,eAAgC,OAAO;AAAA,IAC5C,CAAuB,SACtB,IAAI,0BAA0B,QAAQ,IAAa,YAAY;AAAA,IAChE;AAAA,MACC;AAAA,MACA,YAAY,OAAO,OAAO,MAAM;AAAA,MAChC;AAAA,MACA,CAAC,WAAW,GAAG;AAAA,IAChB;AAAA,EACD;AAEA,SAAO;AACR;","names":[]}
|
|
@@ -2,8 +2,45 @@ import type { ColumnBuilderBaseConfig } from "../../column-builder.cjs";
|
|
|
2
2
|
import type { ColumnBaseConfig } from "../../column.cjs";
|
|
3
3
|
import { entityKind } from "../../entity.cjs";
|
|
4
4
|
import type { AnyPgTable } from "../table.cjs";
|
|
5
|
-
import type { Writable } from "../../utils.cjs";
|
|
5
|
+
import type { NonArray, Writable } from "../../utils.cjs";
|
|
6
6
|
import { PgColumn, PgColumnBuilder } from "./common.cjs";
|
|
7
|
+
export type PgEnumObjectColumnBuilderInitial<TName extends string, TValues extends object> = PgEnumObjectColumnBuilder<{
|
|
8
|
+
name: TName;
|
|
9
|
+
dataType: 'string';
|
|
10
|
+
columnType: 'PgEnumObjectColumn';
|
|
11
|
+
data: TValues[keyof TValues];
|
|
12
|
+
enumValues: string[];
|
|
13
|
+
driverParam: string;
|
|
14
|
+
}>;
|
|
15
|
+
export interface PgEnumObject<TValues extends object> {
|
|
16
|
+
(): PgEnumObjectColumnBuilderInitial<'', TValues>;
|
|
17
|
+
<TName extends string>(name: TName): PgEnumObjectColumnBuilderInitial<TName, TValues>;
|
|
18
|
+
<TName extends string>(name?: TName): PgEnumObjectColumnBuilderInitial<TName, TValues>;
|
|
19
|
+
readonly enumName: string;
|
|
20
|
+
readonly enumValues: string[];
|
|
21
|
+
readonly schema: string | undefined;
|
|
22
|
+
}
|
|
23
|
+
export declare class PgEnumObjectColumnBuilder<T extends ColumnBuilderBaseConfig<'string', 'PgEnumObjectColumn'> & {
|
|
24
|
+
enumValues: string[];
|
|
25
|
+
}> extends PgColumnBuilder<T, {
|
|
26
|
+
enum: PgEnumObject<any>;
|
|
27
|
+
}> {
|
|
28
|
+
static readonly [entityKind]: string;
|
|
29
|
+
constructor(name: T['name'], enumInstance: PgEnumObject<any>);
|
|
30
|
+
}
|
|
31
|
+
export declare class PgEnumObjectColumn<T extends ColumnBaseConfig<'string', 'PgEnumObjectColumn'> & {
|
|
32
|
+
enumValues: object;
|
|
33
|
+
}> extends PgColumn<T, {
|
|
34
|
+
enum: PgEnumObject<object>;
|
|
35
|
+
}> {
|
|
36
|
+
static readonly [entityKind]: string;
|
|
37
|
+
readonly enum: PgEnumObject<any>;
|
|
38
|
+
readonly enumValues: string[];
|
|
39
|
+
constructor(table: AnyPgTable<{
|
|
40
|
+
name: T['tableName'];
|
|
41
|
+
}>, config: PgEnumObjectColumnBuilder<T>['config']);
|
|
42
|
+
getSQLType(): string;
|
|
43
|
+
}
|
|
7
44
|
export type PgEnumColumnBuilderInitial<TName extends string, TValues extends [string, ...string[]]> = PgEnumColumnBuilder<{
|
|
8
45
|
name: TName;
|
|
9
46
|
dataType: 'string';
|
|
@@ -43,3 +80,4 @@ export declare class PgEnumColumn<T extends ColumnBaseConfig<'string', 'PgEnumCo
|
|
|
43
80
|
getSQLType(): string;
|
|
44
81
|
}
|
|
45
82
|
export declare function pgEnum<U extends string, T extends Readonly<[U, ...U[]]>>(enumName: string, values: T | Writable<T>): PgEnum<Writable<T>>;
|
|
83
|
+
export declare function pgEnum<E extends Record<string, string>>(enumName: string, enumObj: NonArray<E>): PgEnumObject<E>;
|
|
@@ -2,8 +2,45 @@ import type { ColumnBuilderBaseConfig } from "../../column-builder.js";
|
|
|
2
2
|
import type { ColumnBaseConfig } from "../../column.js";
|
|
3
3
|
import { entityKind } from "../../entity.js";
|
|
4
4
|
import type { AnyPgTable } from "../table.js";
|
|
5
|
-
import type { Writable } from "../../utils.js";
|
|
5
|
+
import type { NonArray, Writable } from "../../utils.js";
|
|
6
6
|
import { PgColumn, PgColumnBuilder } from "./common.js";
|
|
7
|
+
export type PgEnumObjectColumnBuilderInitial<TName extends string, TValues extends object> = PgEnumObjectColumnBuilder<{
|
|
8
|
+
name: TName;
|
|
9
|
+
dataType: 'string';
|
|
10
|
+
columnType: 'PgEnumObjectColumn';
|
|
11
|
+
data: TValues[keyof TValues];
|
|
12
|
+
enumValues: string[];
|
|
13
|
+
driverParam: string;
|
|
14
|
+
}>;
|
|
15
|
+
export interface PgEnumObject<TValues extends object> {
|
|
16
|
+
(): PgEnumObjectColumnBuilderInitial<'', TValues>;
|
|
17
|
+
<TName extends string>(name: TName): PgEnumObjectColumnBuilderInitial<TName, TValues>;
|
|
18
|
+
<TName extends string>(name?: TName): PgEnumObjectColumnBuilderInitial<TName, TValues>;
|
|
19
|
+
readonly enumName: string;
|
|
20
|
+
readonly enumValues: string[];
|
|
21
|
+
readonly schema: string | undefined;
|
|
22
|
+
}
|
|
23
|
+
export declare class PgEnumObjectColumnBuilder<T extends ColumnBuilderBaseConfig<'string', 'PgEnumObjectColumn'> & {
|
|
24
|
+
enumValues: string[];
|
|
25
|
+
}> extends PgColumnBuilder<T, {
|
|
26
|
+
enum: PgEnumObject<any>;
|
|
27
|
+
}> {
|
|
28
|
+
static readonly [entityKind]: string;
|
|
29
|
+
constructor(name: T['name'], enumInstance: PgEnumObject<any>);
|
|
30
|
+
}
|
|
31
|
+
export declare class PgEnumObjectColumn<T extends ColumnBaseConfig<'string', 'PgEnumObjectColumn'> & {
|
|
32
|
+
enumValues: object;
|
|
33
|
+
}> extends PgColumn<T, {
|
|
34
|
+
enum: PgEnumObject<object>;
|
|
35
|
+
}> {
|
|
36
|
+
static readonly [entityKind]: string;
|
|
37
|
+
readonly enum: PgEnumObject<any>;
|
|
38
|
+
readonly enumValues: string[];
|
|
39
|
+
constructor(table: AnyPgTable<{
|
|
40
|
+
name: T['tableName'];
|
|
41
|
+
}>, config: PgEnumObjectColumnBuilder<T>['config']);
|
|
42
|
+
getSQLType(): string;
|
|
43
|
+
}
|
|
7
44
|
export type PgEnumColumnBuilderInitial<TName extends string, TValues extends [string, ...string[]]> = PgEnumColumnBuilder<{
|
|
8
45
|
name: TName;
|
|
9
46
|
dataType: 'string';
|
|
@@ -43,3 +80,4 @@ export declare class PgEnumColumn<T extends ColumnBaseConfig<'string', 'PgEnumCo
|
|
|
43
80
|
getSQLType(): string;
|
|
44
81
|
}
|
|
45
82
|
export declare function pgEnum<U extends string, T extends Readonly<[U, ...U[]]>>(enumName: string, values: T | Writable<T>): PgEnum<Writable<T>>;
|
|
83
|
+
export declare function pgEnum<E extends Record<string, string>>(enumName: string, enumObj: NonArray<E>): PgEnumObject<E>;
|
package/pg-core/columns/enum.js
CHANGED
|
@@ -1,5 +1,31 @@
|
|
|
1
1
|
import { entityKind } from "../../entity.js";
|
|
2
2
|
import { PgColumn, PgColumnBuilder } from "./common.js";
|
|
3
|
+
class PgEnumObjectColumnBuilder extends PgColumnBuilder {
|
|
4
|
+
static [entityKind] = "PgEnumObjectColumnBuilder";
|
|
5
|
+
constructor(name, enumInstance) {
|
|
6
|
+
super(name, "string", "PgEnumObjectColumn");
|
|
7
|
+
this.config.enum = enumInstance;
|
|
8
|
+
}
|
|
9
|
+
/** @internal */
|
|
10
|
+
build(table) {
|
|
11
|
+
return new PgEnumObjectColumn(
|
|
12
|
+
table,
|
|
13
|
+
this.config
|
|
14
|
+
);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
class PgEnumObjectColumn extends PgColumn {
|
|
18
|
+
static [entityKind] = "PgEnumObjectColumn";
|
|
19
|
+
enum;
|
|
20
|
+
enumValues = this.config.enum.enumValues;
|
|
21
|
+
constructor(table, config) {
|
|
22
|
+
super(table, config);
|
|
23
|
+
this.enum = config.enum;
|
|
24
|
+
}
|
|
25
|
+
getSQLType() {
|
|
26
|
+
return this.enum.enumName;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
3
29
|
const isPgEnumSym = Symbol.for("drizzle:isPgEnum");
|
|
4
30
|
function isPgEnum(obj) {
|
|
5
31
|
return !!obj && typeof obj === "function" && isPgEnumSym in obj && obj[isPgEnumSym] === true;
|
|
@@ -30,8 +56,8 @@ class PgEnumColumn extends PgColumn {
|
|
|
30
56
|
return this.enum.enumName;
|
|
31
57
|
}
|
|
32
58
|
}
|
|
33
|
-
function pgEnum(enumName,
|
|
34
|
-
return pgEnumWithSchema(enumName,
|
|
59
|
+
function pgEnum(enumName, input) {
|
|
60
|
+
return Array.isArray(input) ? pgEnumWithSchema(enumName, [...input], void 0) : pgEnumObjectWithSchema(enumName, input, void 0);
|
|
35
61
|
}
|
|
36
62
|
function pgEnumWithSchema(enumName, values, schema) {
|
|
37
63
|
const enumInstance = Object.assign(
|
|
@@ -45,11 +71,26 @@ function pgEnumWithSchema(enumName, values, schema) {
|
|
|
45
71
|
);
|
|
46
72
|
return enumInstance;
|
|
47
73
|
}
|
|
74
|
+
function pgEnumObjectWithSchema(enumName, values, schema) {
|
|
75
|
+
const enumInstance = Object.assign(
|
|
76
|
+
(name) => new PgEnumObjectColumnBuilder(name ?? "", enumInstance),
|
|
77
|
+
{
|
|
78
|
+
enumName,
|
|
79
|
+
enumValues: Object.values(values),
|
|
80
|
+
schema,
|
|
81
|
+
[isPgEnumSym]: true
|
|
82
|
+
}
|
|
83
|
+
);
|
|
84
|
+
return enumInstance;
|
|
85
|
+
}
|
|
48
86
|
export {
|
|
49
87
|
PgEnumColumn,
|
|
50
88
|
PgEnumColumnBuilder,
|
|
89
|
+
PgEnumObjectColumn,
|
|
90
|
+
PgEnumObjectColumnBuilder,
|
|
51
91
|
isPgEnum,
|
|
52
92
|
pgEnum,
|
|
93
|
+
pgEnumObjectWithSchema,
|
|
53
94
|
pgEnumWithSchema
|
|
54
95
|
};
|
|
55
96
|
//# sourceMappingURL=enum.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/pg-core/columns/enum.ts"],"sourcesContent":["import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, MakeColumnConfig } from '~/column-builder.ts';\nimport type { ColumnBaseConfig } from '~/column.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { AnyPgTable } from '~/pg-core/table.ts';\nimport type { Writable } from '~/utils.ts';\nimport { PgColumn, PgColumnBuilder } from './common.ts';\n\nexport type PgEnumColumnBuilderInitial<TName extends string, TValues extends [string, ...string[]]> =\n\tPgEnumColumnBuilder<{\n\t\tname: TName;\n\t\tdataType: 'string';\n\t\tcolumnType: 'PgEnumColumn';\n\t\tdata: TValues[number];\n\t\tenumValues: TValues;\n\t\tdriverParam: string;\n\t}>;\n\nconst isPgEnumSym = Symbol.for('drizzle:isPgEnum');\nexport interface PgEnum<TValues extends [string, ...string[]]> {\n\t(): PgEnumColumnBuilderInitial<'', TValues>;\n\t<TName extends string>(name: TName): PgEnumColumnBuilderInitial<TName, TValues>;\n\t<TName extends string>(name?: TName): PgEnumColumnBuilderInitial<TName, TValues>;\n\n\treadonly enumName: string;\n\treadonly enumValues: TValues;\n\treadonly schema: string | undefined;\n\t/** @internal */\n\t[isPgEnumSym]: true;\n}\n\nexport function isPgEnum(obj: unknown): obj is PgEnum<[string, ...string[]]> {\n\treturn !!obj && typeof obj === 'function' && isPgEnumSym in obj && obj[isPgEnumSym] === true;\n}\n\nexport class PgEnumColumnBuilder<\n\tT extends ColumnBuilderBaseConfig<'string', 'PgEnumColumn'> & { enumValues: [string, ...string[]] },\n> extends PgColumnBuilder<T, { enum: PgEnum<T['enumValues']> }> {\n\tstatic override readonly [entityKind]: string = 'PgEnumColumnBuilder';\n\n\tconstructor(name: T['name'], enumInstance: PgEnum<T['enumValues']>) {\n\t\tsuper(name, 'string', 'PgEnumColumn');\n\t\tthis.config.enum = enumInstance;\n\t}\n\n\t/** @internal */\n\toverride build<TTableName extends string>(\n\t\ttable: AnyPgTable<{ name: TTableName }>,\n\t): PgEnumColumn<MakeColumnConfig<T, TTableName>> {\n\t\treturn new PgEnumColumn<MakeColumnConfig<T, TTableName>>(\n\t\t\ttable,\n\t\t\tthis.config as ColumnBuilderRuntimeConfig<any, any>,\n\t\t);\n\t}\n}\n\nexport class PgEnumColumn<T extends ColumnBaseConfig<'string', 'PgEnumColumn'> & { enumValues: [string, ...string[]] }>\n\textends PgColumn<T, { enum: PgEnum<T['enumValues']> }>\n{\n\tstatic override readonly [entityKind]: string = 'PgEnumColumn';\n\n\treadonly enum = this.config.enum;\n\toverride readonly enumValues = this.config.enum.enumValues;\n\n\tconstructor(\n\t\ttable: AnyPgTable<{ name: T['tableName'] }>,\n\t\tconfig: PgEnumColumnBuilder<T>['config'],\n\t) {\n\t\tsuper(table, config);\n\t\tthis.enum = config.enum;\n\t}\n\n\tgetSQLType(): string {\n\t\treturn this.enum.enumName;\n\t}\n}\n\
|
|
1
|
+
{"version":3,"sources":["../../../src/pg-core/columns/enum.ts"],"sourcesContent":["import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, MakeColumnConfig } from '~/column-builder.ts';\nimport type { ColumnBaseConfig } from '~/column.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { AnyPgTable } from '~/pg-core/table.ts';\nimport type { NonArray, Writable } from '~/utils.ts';\nimport { PgColumn, PgColumnBuilder } from './common.ts';\n\n// Enum as ts enum\n\nexport type PgEnumObjectColumnBuilderInitial<TName extends string, TValues extends object> = PgEnumObjectColumnBuilder<{\n\tname: TName;\n\tdataType: 'string';\n\tcolumnType: 'PgEnumObjectColumn';\n\tdata: TValues[keyof TValues];\n\tenumValues: string[];\n\tdriverParam: string;\n}>;\n\nexport interface PgEnumObject<TValues extends object> {\n\t(): PgEnumObjectColumnBuilderInitial<'', TValues>;\n\t<TName extends string>(name: TName): PgEnumObjectColumnBuilderInitial<TName, TValues>;\n\t<TName extends string>(name?: TName): PgEnumObjectColumnBuilderInitial<TName, TValues>;\n\n\treadonly enumName: string;\n\treadonly enumValues: string[];\n\treadonly schema: string | undefined;\n\t/** @internal */\n\t[isPgEnumSym]: true;\n}\n\nexport class PgEnumObjectColumnBuilder<\n\tT extends ColumnBuilderBaseConfig<'string', 'PgEnumObjectColumn'> & { enumValues: string[] },\n> extends PgColumnBuilder<T, { enum: PgEnumObject<any> }> {\n\tstatic override readonly [entityKind]: string = 'PgEnumObjectColumnBuilder';\n\n\tconstructor(name: T['name'], enumInstance: PgEnumObject<any>) {\n\t\tsuper(name, 'string', 'PgEnumObjectColumn');\n\t\tthis.config.enum = enumInstance;\n\t}\n\n\t/** @internal */\n\toverride build<TTableName extends string>(\n\t\ttable: AnyPgTable<{ name: TTableName }>,\n\t): PgEnumObjectColumn<MakeColumnConfig<T, TTableName>> {\n\t\treturn new PgEnumObjectColumn<MakeColumnConfig<T, TTableName>>(\n\t\t\ttable,\n\t\t\tthis.config as ColumnBuilderRuntimeConfig<any, any>,\n\t\t);\n\t}\n}\n\nexport class PgEnumObjectColumn<T extends ColumnBaseConfig<'string', 'PgEnumObjectColumn'> & { enumValues: object }>\n\textends PgColumn<T, { enum: PgEnumObject<object> }>\n{\n\tstatic override readonly [entityKind]: string = 'PgEnumObjectColumn';\n\n\treadonly enum;\n\toverride readonly enumValues = this.config.enum.enumValues;\n\n\tconstructor(\n\t\ttable: AnyPgTable<{ name: T['tableName'] }>,\n\t\tconfig: PgEnumObjectColumnBuilder<T>['config'],\n\t) {\n\t\tsuper(table, config);\n\t\tthis.enum = config.enum;\n\t}\n\n\tgetSQLType(): string {\n\t\treturn this.enum.enumName;\n\t}\n}\n\n// Enum as string union\n\nexport type PgEnumColumnBuilderInitial<TName extends string, TValues extends [string, ...string[]]> =\n\tPgEnumColumnBuilder<{\n\t\tname: TName;\n\t\tdataType: 'string';\n\t\tcolumnType: 'PgEnumColumn';\n\t\tdata: TValues[number];\n\t\tenumValues: TValues;\n\t\tdriverParam: string;\n\t}>;\n\nconst isPgEnumSym = Symbol.for('drizzle:isPgEnum');\nexport interface PgEnum<TValues extends [string, ...string[]]> {\n\t(): PgEnumColumnBuilderInitial<'', TValues>;\n\t<TName extends string>(name: TName): PgEnumColumnBuilderInitial<TName, TValues>;\n\t<TName extends string>(name?: TName): PgEnumColumnBuilderInitial<TName, TValues>;\n\n\treadonly enumName: string;\n\treadonly enumValues: TValues;\n\treadonly schema: string | undefined;\n\t/** @internal */\n\t[isPgEnumSym]: true;\n}\n\nexport function isPgEnum(obj: unknown): obj is PgEnum<[string, ...string[]]> {\n\treturn !!obj && typeof obj === 'function' && isPgEnumSym in obj && obj[isPgEnumSym] === true;\n}\n\nexport class PgEnumColumnBuilder<\n\tT extends ColumnBuilderBaseConfig<'string', 'PgEnumColumn'> & { enumValues: [string, ...string[]] },\n> extends PgColumnBuilder<T, { enum: PgEnum<T['enumValues']> }> {\n\tstatic override readonly [entityKind]: string = 'PgEnumColumnBuilder';\n\n\tconstructor(name: T['name'], enumInstance: PgEnum<T['enumValues']>) {\n\t\tsuper(name, 'string', 'PgEnumColumn');\n\t\tthis.config.enum = enumInstance;\n\t}\n\n\t/** @internal */\n\toverride build<TTableName extends string>(\n\t\ttable: AnyPgTable<{ name: TTableName }>,\n\t): PgEnumColumn<MakeColumnConfig<T, TTableName>> {\n\t\treturn new PgEnumColumn<MakeColumnConfig<T, TTableName>>(\n\t\t\ttable,\n\t\t\tthis.config as ColumnBuilderRuntimeConfig<any, any>,\n\t\t);\n\t}\n}\n\nexport class PgEnumColumn<T extends ColumnBaseConfig<'string', 'PgEnumColumn'> & { enumValues: [string, ...string[]] }>\n\textends PgColumn<T, { enum: PgEnum<T['enumValues']> }>\n{\n\tstatic override readonly [entityKind]: string = 'PgEnumColumn';\n\n\treadonly enum = this.config.enum;\n\toverride readonly enumValues = this.config.enum.enumValues;\n\n\tconstructor(\n\t\ttable: AnyPgTable<{ name: T['tableName'] }>,\n\t\tconfig: PgEnumColumnBuilder<T>['config'],\n\t) {\n\t\tsuper(table, config);\n\t\tthis.enum = config.enum;\n\t}\n\n\tgetSQLType(): string {\n\t\treturn this.enum.enumName;\n\t}\n}\n\nexport function pgEnum<U extends string, T extends Readonly<[U, ...U[]]>>(\n\tenumName: string,\n\tvalues: T | Writable<T>,\n): PgEnum<Writable<T>>;\n\nexport function pgEnum<E extends Record<string, string>>(\n\tenumName: string,\n\tenumObj: NonArray<E>,\n): PgEnumObject<E>;\n\nexport function pgEnum(\n\tenumName: any,\n\tinput: any,\n): any {\n\treturn Array.isArray(input)\n\t\t? pgEnumWithSchema(enumName, [...input] as [string, ...string[]], undefined)\n\t\t: pgEnumObjectWithSchema(enumName, input, undefined);\n}\n\n/** @internal */\nexport function pgEnumWithSchema<U extends string, T extends Readonly<[U, ...U[]]>>(\n\tenumName: string,\n\tvalues: T | Writable<T>,\n\tschema?: string,\n): PgEnum<Writable<T>> {\n\tconst enumInstance: PgEnum<Writable<T>> = Object.assign(\n\t\t<TName extends string>(name?: TName): PgEnumColumnBuilderInitial<TName, Writable<T>> =>\n\t\t\tnew PgEnumColumnBuilder(name ?? '' as TName, enumInstance),\n\t\t{\n\t\t\tenumName,\n\t\t\tenumValues: values,\n\t\t\tschema,\n\t\t\t[isPgEnumSym]: true,\n\t\t} as const,\n\t);\n\n\treturn enumInstance;\n}\n\n/** @internal */\nexport function pgEnumObjectWithSchema<T extends object>(\n\tenumName: string,\n\tvalues: T,\n\tschema?: string,\n): PgEnumObject<T> {\n\tconst enumInstance: PgEnumObject<T> = Object.assign(\n\t\t<TName extends string>(name?: TName): PgEnumObjectColumnBuilderInitial<TName, T> =>\n\t\t\tnew PgEnumObjectColumnBuilder(name ?? '' as TName, enumInstance),\n\t\t{\n\t\t\tenumName,\n\t\t\tenumValues: Object.values(values),\n\t\t\tschema,\n\t\t\t[isPgEnumSym]: true,\n\t\t} as const,\n\t);\n\n\treturn enumInstance;\n}\n"],"mappings":"AAEA,SAAS,kBAAkB;AAG3B,SAAS,UAAU,uBAAuB;AAyBnC,MAAM,kCAEH,gBAAgD;AAAA,EACzD,QAA0B,UAAU,IAAY;AAAA,EAEhD,YAAY,MAAiB,cAAiC;AAC7D,UAAM,MAAM,UAAU,oBAAoB;AAC1C,SAAK,OAAO,OAAO;AAAA,EACpB;AAAA;AAAA,EAGS,MACR,OACsD;AACtD,WAAO,IAAI;AAAA,MACV;AAAA,MACA,KAAK;AAAA,IACN;AAAA,EACD;AACD;AAEO,MAAM,2BACJ,SACT;AAAA,EACC,QAA0B,UAAU,IAAY;AAAA,EAEvC;AAAA,EACS,aAAa,KAAK,OAAO,KAAK;AAAA,EAEhD,YACC,OACA,QACC;AACD,UAAM,OAAO,MAAM;AACnB,SAAK,OAAO,OAAO;AAAA,EACpB;AAAA,EAEA,aAAqB;AACpB,WAAO,KAAK,KAAK;AAAA,EAClB;AACD;AAcA,MAAM,cAAc,OAAO,IAAI,kBAAkB;AAa1C,SAAS,SAAS,KAAoD;AAC5E,SAAO,CAAC,CAAC,OAAO,OAAO,QAAQ,cAAc,eAAe,OAAO,IAAI,WAAW,MAAM;AACzF;AAEO,MAAM,4BAEH,gBAAsD;AAAA,EAC/D,QAA0B,UAAU,IAAY;AAAA,EAEhD,YAAY,MAAiB,cAAuC;AACnE,UAAM,MAAM,UAAU,cAAc;AACpC,SAAK,OAAO,OAAO;AAAA,EACpB;AAAA;AAAA,EAGS,MACR,OACgD;AAChD,WAAO,IAAI;AAAA,MACV;AAAA,MACA,KAAK;AAAA,IACN;AAAA,EACD;AACD;AAEO,MAAM,qBACJ,SACT;AAAA,EACC,QAA0B,UAAU,IAAY;AAAA,EAEvC,OAAO,KAAK,OAAO;AAAA,EACV,aAAa,KAAK,OAAO,KAAK;AAAA,EAEhD,YACC,OACA,QACC;AACD,UAAM,OAAO,MAAM;AACnB,SAAK,OAAO,OAAO;AAAA,EACpB;AAAA,EAEA,aAAqB;AACpB,WAAO,KAAK,KAAK;AAAA,EAClB;AACD;AAYO,SAAS,OACf,UACA,OACM;AACN,SAAO,MAAM,QAAQ,KAAK,IACvB,iBAAiB,UAAU,CAAC,GAAG,KAAK,GAA4B,MAAS,IACzE,uBAAuB,UAAU,OAAO,MAAS;AACrD;AAGO,SAAS,iBACf,UACA,QACA,QACsB;AACtB,QAAM,eAAoC,OAAO;AAAA,IAChD,CAAuB,SACtB,IAAI,oBAAoB,QAAQ,IAAa,YAAY;AAAA,IAC1D;AAAA,MACC;AAAA,MACA,YAAY;AAAA,MACZ;AAAA,MACA,CAAC,WAAW,GAAG;AAAA,IAChB;AAAA,EACD;AAEA,SAAO;AACR;AAGO,SAAS,uBACf,UACA,QACA,QACkB;AAClB,QAAM,eAAgC,OAAO;AAAA,IAC5C,CAAuB,SACtB,IAAI,0BAA0B,QAAQ,IAAa,YAAY;AAAA,IAChE;AAAA,MACC;AAAA,MACA,YAAY,OAAO,OAAO,MAAM;AAAA,MAChC;AAAA,MACA,CAAC,WAAW,GAAG;AAAA,IAChB;AAAA,EACD;AAEA,SAAO;AACR;","names":[]}
|