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.
Files changed (164) hide show
  1. package/gel-core/dialect.cjs +7 -22
  2. package/gel-core/dialect.cjs.map +1 -1
  3. package/gel-core/dialect.d.cts +1 -0
  4. package/gel-core/dialect.d.ts +1 -0
  5. package/gel-core/dialect.js +7 -22
  6. package/gel-core/dialect.js.map +1 -1
  7. package/gel-core/expressions.cjs +3 -3
  8. package/gel-core/expressions.cjs.map +1 -1
  9. package/gel-core/expressions.d.cts +1 -1
  10. package/gel-core/expressions.d.ts +1 -1
  11. package/gel-core/expressions.js +2 -2
  12. package/gel-core/expressions.js.map +1 -1
  13. package/gel-core/query-builders/select.cjs +80 -14
  14. package/gel-core/query-builders/select.cjs.map +1 -1
  15. package/gel-core/query-builders/select.d.cts +78 -13
  16. package/gel-core/query-builders/select.d.ts +78 -13
  17. package/gel-core/query-builders/select.js +80 -14
  18. package/gel-core/query-builders/select.js.map +1 -1
  19. package/gel-core/query-builders/select.types.cjs.map +1 -1
  20. package/gel-core/query-builders/select.types.d.cts +1 -1
  21. package/gel-core/query-builders/select.types.d.ts +1 -1
  22. package/index.cjs +0 -2
  23. package/index.cjs.map +1 -1
  24. package/index.d.cts +0 -1
  25. package/index.d.ts +0 -1
  26. package/index.js +0 -1
  27. package/index.js.map +1 -1
  28. package/mysql-core/columns/enum.cjs +40 -5
  29. package/mysql-core/columns/enum.cjs.map +1 -1
  30. package/mysql-core/columns/enum.d.cts +25 -2
  31. package/mysql-core/columns/enum.d.ts +25 -2
  32. package/mysql-core/columns/enum.js +38 -5
  33. package/mysql-core/columns/enum.js.map +1 -1
  34. package/mysql-core/dialect.cjs +5 -4
  35. package/mysql-core/dialect.cjs.map +1 -1
  36. package/mysql-core/dialect.js +5 -4
  37. package/mysql-core/dialect.js.map +1 -1
  38. package/mysql-core/expressions.cjs +3 -3
  39. package/mysql-core/expressions.cjs.map +1 -1
  40. package/mysql-core/expressions.d.cts +1 -1
  41. package/mysql-core/expressions.d.ts +1 -1
  42. package/mysql-core/expressions.js +2 -2
  43. package/mysql-core/expressions.js.map +1 -1
  44. package/mysql-core/query-builders/select.cjs +72 -34
  45. package/mysql-core/query-builders/select.cjs.map +1 -1
  46. package/mysql-core/query-builders/select.d.cts +66 -25
  47. package/mysql-core/query-builders/select.d.ts +66 -25
  48. package/mysql-core/query-builders/select.js +72 -34
  49. package/mysql-core/query-builders/select.js.map +1 -1
  50. package/mysql-core/query-builders/select.types.cjs.map +1 -1
  51. package/mysql-core/query-builders/select.types.d.cts +5 -4
  52. package/mysql-core/query-builders/select.types.d.ts +5 -4
  53. package/operations.cjs.map +1 -1
  54. package/operations.d.cts +5 -1
  55. package/operations.d.ts +5 -1
  56. package/package.json +55 -65
  57. package/pg-core/columns/enum.cjs +46 -2
  58. package/pg-core/columns/enum.cjs.map +1 -1
  59. package/pg-core/columns/enum.d.cts +39 -1
  60. package/pg-core/columns/enum.d.ts +39 -1
  61. package/pg-core/columns/enum.js +43 -2
  62. package/pg-core/columns/enum.js.map +1 -1
  63. package/pg-core/columns/text.cjs.map +1 -1
  64. package/pg-core/columns/text.d.cts +1 -2
  65. package/pg-core/columns/text.d.ts +1 -2
  66. package/pg-core/columns/text.js.map +1 -1
  67. package/pg-core/dialect.cjs +4 -3
  68. package/pg-core/dialect.cjs.map +1 -1
  69. package/pg-core/dialect.js +4 -3
  70. package/pg-core/dialect.js.map +1 -1
  71. package/pg-core/expressions.cjs +3 -3
  72. package/pg-core/expressions.cjs.map +1 -1
  73. package/pg-core/expressions.d.cts +1 -1
  74. package/pg-core/expressions.d.ts +1 -1
  75. package/pg-core/expressions.js +2 -2
  76. package/pg-core/expressions.js.map +1 -1
  77. package/pg-core/query-builders/select.cjs +80 -14
  78. package/pg-core/query-builders/select.cjs.map +1 -1
  79. package/pg-core/query-builders/select.d.cts +78 -13
  80. package/pg-core/query-builders/select.d.ts +78 -13
  81. package/pg-core/query-builders/select.js +80 -14
  82. package/pg-core/query-builders/select.js.map +1 -1
  83. package/pg-core/query-builders/select.types.cjs.map +1 -1
  84. package/pg-core/query-builders/select.types.d.cts +1 -1
  85. package/pg-core/query-builders/select.types.d.ts +1 -1
  86. package/pg-core/schema.cjs +6 -2
  87. package/pg-core/schema.cjs.map +1 -1
  88. package/pg-core/schema.d.cts +1 -2
  89. package/pg-core/schema.d.ts +1 -2
  90. package/pg-core/schema.js +7 -3
  91. package/pg-core/schema.js.map +1 -1
  92. package/planetscale-serverless/session.cjs.map +1 -1
  93. package/planetscale-serverless/session.js.map +1 -1
  94. package/query-builders/select.types.cjs.map +1 -1
  95. package/query-builders/select.types.d.cts +3 -1
  96. package/query-builders/select.types.d.ts +3 -1
  97. package/relations.d.cts +6 -6
  98. package/relations.d.ts +6 -6
  99. package/singlestore/driver.cjs +24 -2
  100. package/singlestore/driver.cjs.map +1 -1
  101. package/singlestore/driver.d.cts +3 -5
  102. package/singlestore/driver.d.ts +3 -5
  103. package/singlestore/driver.js +24 -2
  104. package/singlestore/driver.js.map +1 -1
  105. package/singlestore-core/dialect.cjs +5 -4
  106. package/singlestore-core/dialect.cjs.map +1 -1
  107. package/singlestore-core/dialect.js +5 -4
  108. package/singlestore-core/dialect.js.map +1 -1
  109. package/singlestore-core/expressions.cjs +3 -3
  110. package/singlestore-core/expressions.cjs.map +1 -1
  111. package/singlestore-core/expressions.d.cts +1 -1
  112. package/singlestore-core/expressions.d.ts +1 -1
  113. package/singlestore-core/expressions.js +2 -2
  114. package/singlestore-core/expressions.js.map +1 -1
  115. package/singlestore-core/query-builders/select.cjs +80 -14
  116. package/singlestore-core/query-builders/select.cjs.map +1 -1
  117. package/singlestore-core/query-builders/select.d.cts +78 -13
  118. package/singlestore-core/query-builders/select.d.ts +78 -13
  119. package/singlestore-core/query-builders/select.js +80 -14
  120. package/singlestore-core/query-builders/select.js.map +1 -1
  121. package/singlestore-core/query-builders/select.types.cjs.map +1 -1
  122. package/singlestore-core/query-builders/select.types.d.cts +1 -2
  123. package/singlestore-core/query-builders/select.types.d.ts +1 -2
  124. package/sql/expressions/conditions.cjs.map +1 -1
  125. package/sql/expressions/conditions.d.cts +2 -2
  126. package/sql/expressions/conditions.d.ts +2 -2
  127. package/sql/expressions/conditions.js.map +1 -1
  128. package/sqlite-core/dialect.cjs +3 -2
  129. package/sqlite-core/dialect.cjs.map +1 -1
  130. package/sqlite-core/dialect.js +3 -2
  131. package/sqlite-core/dialect.js.map +1 -1
  132. package/sqlite-core/expressions.cjs +3 -3
  133. package/sqlite-core/expressions.cjs.map +1 -1
  134. package/sqlite-core/expressions.d.cts +1 -1
  135. package/sqlite-core/expressions.d.ts +1 -1
  136. package/sqlite-core/expressions.js +2 -2
  137. package/sqlite-core/expressions.js.map +1 -1
  138. package/sqlite-core/query-builders/select.cjs +36 -8
  139. package/sqlite-core/query-builders/select.cjs.map +1 -1
  140. package/sqlite-core/query-builders/select.d.cts +40 -13
  141. package/sqlite-core/query-builders/select.d.ts +40 -13
  142. package/sqlite-core/query-builders/select.js +36 -8
  143. package/sqlite-core/query-builders/select.js.map +1 -1
  144. package/sqlite-core/query-builders/select.types.cjs.map +1 -1
  145. package/sqlite-core/query-builders/select.types.d.cts +1 -1
  146. package/sqlite-core/query-builders/select.types.d.ts +1 -1
  147. package/table.cjs.map +1 -1
  148. package/table.d.cts +3 -0
  149. package/table.d.ts +3 -0
  150. package/table.js.map +1 -1
  151. package/utils.cjs.map +1 -1
  152. package/utils.d.cts +1 -0
  153. package/utils.d.ts +1 -0
  154. package/utils.js.map +1 -1
  155. package/version.cjs +1 -1
  156. package/version.d.cts +1 -1
  157. package/version.d.ts +1 -1
  158. package/version.js +1 -1
  159. package/expressions.cjs +0 -23
  160. package/expressions.cjs.map +0 -1
  161. package/expressions.d.cts +0 -1
  162. package/expressions.d.ts +0 -1
  163. package/expressions.js +0 -2
  164. 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: 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 JoinType, 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;
58
- export type MySqlJoinFn<T extends AnyMySqlSelectQueryBuilder, TDynamic extends boolean, TJoinType extends JoinType> = <TJoinedTable extends 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') => MySqlJoin<T, TDynamic, TJoinType, TJoinedTable, TJoinedName>;
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' | 'fullJoin' | 'for';
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: 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 JoinType, 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;
58
- export type MySqlJoinFn<T extends AnyMySqlSelectQueryBuilder, TDynamic extends boolean, TJoinType extends JoinType> = <TJoinedTable extends 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') => MySqlJoin<T, TDynamic, TJoinType, TJoinedTable, TJoinedName>;
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' | 'fullJoin' | 'for';
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'];
@@ -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<\n\tTKey extends string,\n\tT extends Column,\n\tOverrideT extends boolean | undefined = false,\n> = TKey extends RequiredKeyOnly<TKey, T> ? never\n\t: T extends {\n\t\t_: {\n\t\t\tgenerated: undefined;\n\t\t};\n\t} ? (\n\t\t\tT['_']['identity'] extends 'always' ? OverrideT extends true ? TKey : never\n\t\t\t\t: TKey\n\t\t)\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":[]}
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['_']['identity'] extends 'always' ? OverrideT extends true ? TKey : never : TKey) : never;
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['_']['identity'] extends 'always' ? OverrideT extends true ? TKey : never : TKey) : never;
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.41.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": "^8.4.0",
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",
@@ -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, values) {
61
- return pgEnumWithSchema(enumName, values, void 0);
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\n// Gratitude to zod for the enum function types\nexport function pgEnum<U extends string, T extends Readonly<[U, ...U[]]>>(\n\tenumName: string,\n\tvalues: T | Writable<T>,\n): PgEnum<Writable<T>> {\n\treturn pgEnumWithSchema(enumName, values, 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"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,oBAA2B;AAG3B,oBAA0C;AAY1C,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;AAGO,SAAS,OACf,UACA,QACsB;AACtB,SAAO,iBAAiB,UAAU,QAAQ,MAAS;AACpD;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;","names":[]}
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>;
@@ -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, values) {
34
- return pgEnumWithSchema(enumName, values, void 0);
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\n// Gratitude to zod for the enum function types\nexport function pgEnum<U extends string, T extends Readonly<[U, ...U[]]>>(\n\tenumName: string,\n\tvalues: T | Writable<T>,\n): PgEnum<Writable<T>> {\n\treturn pgEnumWithSchema(enumName, values, 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"],"mappings":"AAEA,SAAS,kBAAkB;AAG3B,SAAS,UAAU,uBAAuB;AAY1C,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;AAGO,SAAS,OACf,UACA,QACsB;AACtB,SAAO,iBAAiB,UAAU,QAAQ,MAAS;AACpD;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;","names":[]}
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":[]}