drizzle-fp 0.1.0

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 (212) hide show
  1. package/README.md +9 -0
  2. package/dist/index.js +2 -0
  3. package/dist/index.js.map +1 -0
  4. package/dist/src/TableFuncArgs.js +1 -0
  5. package/dist/src/TableFuncArgs.js.map +1 -0
  6. package/dist/src/columnsAdders/AllowOnlyValidColumnMaps.js +2 -0
  7. package/dist/src/columnsAdders/AllowOnlyValidColumnMaps.js.map +1 -0
  8. package/dist/src/columnsAdders/FunctionExtendingColumnsMap.js +1 -0
  9. package/dist/src/columnsAdders/FunctionExtendingColumnsMap.js.map +1 -0
  10. package/dist/src/columnsAdders/addColumn.js +3 -0
  11. package/dist/src/columnsAdders/addColumn.js.map +1 -0
  12. package/dist/src/columnsAdders/addColumns.js +9 -0
  13. package/dist/src/columnsAdders/addColumns.js.map +1 -0
  14. package/dist/src/columnsAdders/addHappenedAtDateColumns.js +12 -0
  15. package/dist/src/columnsAdders/addHappenedAtDateColumns.js.map +1 -0
  16. package/dist/src/columnsAdders/addRequiredColumn.js +3 -0
  17. package/dist/src/columnsAdders/addRequiredColumn.js.map +1 -0
  18. package/dist/src/columnsAdders/addRequiredColumns.js +6 -0
  19. package/dist/src/columnsAdders/addRequiredColumns.js.map +1 -0
  20. package/dist/src/columnsAdders/addRequiredNameOrDescription.js +8 -0
  21. package/dist/src/columnsAdders/addRequiredNameOrDescription.js.map +1 -0
  22. package/dist/src/columnsAdders/index.js +10 -0
  23. package/dist/src/columnsAdders/index.js.map +1 -0
  24. package/dist/src/columnsAdders/nonNullIdentity.js +6 -0
  25. package/dist/src/columnsAdders/nonNullIdentity.js.map +1 -0
  26. package/dist/src/columnsWithExtraTableConfigsAdders/addAutoGeneratedGloballyUniqueOrderingColumn.js +7 -0
  27. package/dist/src/columnsWithExtraTableConfigsAdders/addAutoGeneratedGloballyUniqueOrderingColumn.js.map +1 -0
  28. package/dist/src/columnsWithExtraTableConfigsAdders/addBigint53IdColumnAsPrimaryKey.js +8 -0
  29. package/dist/src/columnsWithExtraTableConfigsAdders/addBigint53IdColumnAsPrimaryKey.js.map +1 -0
  30. package/dist/src/columnsWithExtraTableConfigsAdders/addBigint53RequiredColumnWithFk.js +4 -0
  31. package/dist/src/columnsWithExtraTableConfigsAdders/addBigint53RequiredColumnWithFk.js.map +1 -0
  32. package/dist/src/columnsWithExtraTableConfigsAdders/addBigint53RequiredColumnsWithCompositeFk.js +4 -0
  33. package/dist/src/columnsWithExtraTableConfigsAdders/addBigint53RequiredColumnsWithCompositeFk.js.map +1 -0
  34. package/dist/src/columnsWithExtraTableConfigsAdders/addBigint53RequiredColumnsWithCompositeFk1to1.js +4 -0
  35. package/dist/src/columnsWithExtraTableConfigsAdders/addBigint53RequiredColumnsWithCompositeFk1to1.js.map +1 -0
  36. package/dist/src/columnsWithExtraTableConfigsAdders/addColumnWithFk.js +5 -0
  37. package/dist/src/columnsWithExtraTableConfigsAdders/addColumnWithFk.js.map +1 -0
  38. package/dist/src/columnsWithExtraTableConfigsAdders/addColumnsOfTheSameTypeWithCompositeFk.js +9 -0
  39. package/dist/src/columnsWithExtraTableConfigsAdders/addColumnsOfTheSameTypeWithCompositeFk.js.map +1 -0
  40. package/dist/src/columnsWithExtraTableConfigsAdders/addColumnsOfTheSameTypeWithCompositeFk1to1.js +3 -0
  41. package/dist/src/columnsWithExtraTableConfigsAdders/addColumnsOfTheSameTypeWithCompositeFk1to1.js.map +1 -0
  42. package/dist/src/columnsWithExtraTableConfigsAdders/addColumnsWithCompositeFk.js +14 -0
  43. package/dist/src/columnsWithExtraTableConfigsAdders/addColumnsWithCompositeFk.js.map +1 -0
  44. package/dist/src/columnsWithExtraTableConfigsAdders/addIntegerIdColumnAsPrimaryKey.js +8 -0
  45. package/dist/src/columnsWithExtraTableConfigsAdders/addIntegerIdColumnAsPrimaryKey.js.map +1 -0
  46. package/dist/src/columnsWithExtraTableConfigsAdders/addIntegerRequiredColumnWithFk.js +4 -0
  47. package/dist/src/columnsWithExtraTableConfigsAdders/addIntegerRequiredColumnWithFk.js.map +1 -0
  48. package/dist/src/columnsWithExtraTableConfigsAdders/addIntegerRequiredColumnsWithCompositeFk.js +4 -0
  49. package/dist/src/columnsWithExtraTableConfigsAdders/addIntegerRequiredColumnsWithCompositeFk.js.map +1 -0
  50. package/dist/src/columnsWithExtraTableConfigsAdders/addIntegerRequiredColumnsWithCompositeFk1to1.js +4 -0
  51. package/dist/src/columnsWithExtraTableConfigsAdders/addIntegerRequiredColumnsWithCompositeFk1to1.js.map +1 -0
  52. package/dist/src/columnsWithExtraTableConfigsAdders/addTextRequiredColumnWithFk.js +4 -0
  53. package/dist/src/columnsWithExtraTableConfigsAdders/addTextRequiredColumnWithFk.js.map +1 -0
  54. package/dist/src/columnsWithExtraTableConfigsAdders/addUuidColumnAsPrimaryKey.js +8 -0
  55. package/dist/src/columnsWithExtraTableConfigsAdders/addUuidColumnAsPrimaryKey.js.map +1 -0
  56. package/dist/src/columnsWithExtraTableConfigsAdders/addUuidRequiredColumnWithFk.js +4 -0
  57. package/dist/src/columnsWithExtraTableConfigsAdders/addUuidRequiredColumnWithFk.js.map +1 -0
  58. package/dist/src/columnsWithExtraTableConfigsAdders/index.js +17 -0
  59. package/dist/src/columnsWithExtraTableConfigsAdders/index.js.map +1 -0
  60. package/dist/src/extraTableConfigsAdders/ForeignTableColumnGetter.js +1 -0
  61. package/dist/src/extraTableConfigsAdders/ForeignTableColumnGetter.js.map +1 -0
  62. package/dist/src/extraTableConfigsAdders/FunctionRequiringColumnsMap.js +1 -0
  63. package/dist/src/extraTableConfigsAdders/FunctionRequiringColumnsMap.js.map +1 -0
  64. package/dist/src/extraTableConfigsAdders/addCompositeFk.js +26 -0
  65. package/dist/src/extraTableConfigsAdders/addCompositeFk.js.map +1 -0
  66. package/dist/src/extraTableConfigsAdders/addCompositePrimaryKey.js +3 -0
  67. package/dist/src/extraTableConfigsAdders/addCompositePrimaryKey.js.map +1 -0
  68. package/dist/src/extraTableConfigsAdders/addExtraConfig.js +6 -0
  69. package/dist/src/extraTableConfigsAdders/addExtraConfig.js.map +1 -0
  70. package/dist/src/extraTableConfigsAdders/addFk.js +32 -0
  71. package/dist/src/extraTableConfigsAdders/addFk.js.map +1 -0
  72. package/dist/src/extraTableConfigsAdders/addPrimaryKey.js +10 -0
  73. package/dist/src/extraTableConfigsAdders/addPrimaryKey.js.map +1 -0
  74. package/dist/src/extraTableConfigsAdders/addUniqueConstraintWithIndex.js +11 -0
  75. package/dist/src/extraTableConfigsAdders/addUniqueConstraintWithIndex.js.map +1 -0
  76. package/dist/src/extraTableConfigsAdders/getCompressedIdentifierName.js +25 -0
  77. package/dist/src/extraTableConfigsAdders/getCompressedIdentifierName.js.map +1 -0
  78. package/dist/src/extraTableConfigsAdders/index.js +10 -0
  79. package/dist/src/extraTableConfigsAdders/index.js.map +1 -0
  80. package/dist/src/finalizePgTable.js +8 -0
  81. package/dist/src/finalizePgTable.js.map +1 -0
  82. package/dist/src/index.js +6 -0
  83. package/dist/src/index.js.map +1 -0
  84. package/dist/src/initPgTable.js +2 -0
  85. package/dist/src/initPgTable.js.map +1 -0
  86. package/dist-types/index.d.ts +2 -0
  87. package/dist-types/index.d.ts.map +1 -0
  88. package/dist-types/src/TableFuncArgs.d.ts +12 -0
  89. package/dist-types/src/TableFuncArgs.d.ts.map +1 -0
  90. package/dist-types/src/columnsAdders/AllowOnlyValidColumnMaps.d.ts +24 -0
  91. package/dist-types/src/columnsAdders/AllowOnlyValidColumnMaps.d.ts.map +1 -0
  92. package/dist-types/src/columnsAdders/FunctionExtendingColumnsMap.d.ts +8 -0
  93. package/dist-types/src/columnsAdders/FunctionExtendingColumnsMap.d.ts.map +1 -0
  94. package/dist-types/src/columnsAdders/addColumn.d.ts +4 -0
  95. package/dist-types/src/columnsAdders/addColumn.d.ts.map +1 -0
  96. package/dist-types/src/columnsAdders/addColumns.d.ts +4 -0
  97. package/dist-types/src/columnsAdders/addColumns.d.ts.map +1 -0
  98. package/dist-types/src/columnsAdders/addHappenedAtDateColumns.d.ts +9 -0
  99. package/dist-types/src/columnsAdders/addHappenedAtDateColumns.d.ts.map +1 -0
  100. package/dist-types/src/columnsAdders/addRequiredColumn.d.ts +5 -0
  101. package/dist-types/src/columnsAdders/addRequiredColumn.d.ts.map +1 -0
  102. package/dist-types/src/columnsAdders/addRequiredColumns.d.ts +14 -0
  103. package/dist-types/src/columnsAdders/addRequiredColumns.d.ts.map +1 -0
  104. package/dist-types/src/columnsAdders/addRequiredNameOrDescription.d.ts +12 -0
  105. package/dist-types/src/columnsAdders/addRequiredNameOrDescription.d.ts.map +1 -0
  106. package/dist-types/src/columnsAdders/index.d.ts +10 -0
  107. package/dist-types/src/columnsAdders/index.d.ts.map +1 -0
  108. package/dist-types/src/columnsAdders/nonNullIdentity.d.ts +9 -0
  109. package/dist-types/src/columnsAdders/nonNullIdentity.d.ts.map +1 -0
  110. package/dist-types/src/columnsWithExtraTableConfigsAdders/addAutoGeneratedGloballyUniqueOrderingColumn.d.ts +4 -0
  111. package/dist-types/src/columnsWithExtraTableConfigsAdders/addAutoGeneratedGloballyUniqueOrderingColumn.d.ts.map +1 -0
  112. package/dist-types/src/columnsWithExtraTableConfigsAdders/addBigint53IdColumnAsPrimaryKey.d.ts +10 -0
  113. package/dist-types/src/columnsWithExtraTableConfigsAdders/addBigint53IdColumnAsPrimaryKey.d.ts.map +1 -0
  114. package/dist-types/src/columnsWithExtraTableConfigsAdders/addBigint53RequiredColumnWithFk.d.ts +4 -0
  115. package/dist-types/src/columnsWithExtraTableConfigsAdders/addBigint53RequiredColumnWithFk.d.ts.map +1 -0
  116. package/dist-types/src/columnsWithExtraTableConfigsAdders/addBigint53RequiredColumnsWithCompositeFk.d.ts +4 -0
  117. package/dist-types/src/columnsWithExtraTableConfigsAdders/addBigint53RequiredColumnsWithCompositeFk.d.ts.map +1 -0
  118. package/dist-types/src/columnsWithExtraTableConfigsAdders/addBigint53RequiredColumnsWithCompositeFk1to1.d.ts +4 -0
  119. package/dist-types/src/columnsWithExtraTableConfigsAdders/addBigint53RequiredColumnsWithCompositeFk1to1.d.ts.map +1 -0
  120. package/dist-types/src/columnsWithExtraTableConfigsAdders/addColumnWithFk.d.ts +5 -0
  121. package/dist-types/src/columnsWithExtraTableConfigsAdders/addColumnWithFk.d.ts.map +1 -0
  122. package/dist-types/src/columnsWithExtraTableConfigsAdders/addColumnsOfTheSameTypeWithCompositeFk.d.ts +4 -0
  123. package/dist-types/src/columnsWithExtraTableConfigsAdders/addColumnsOfTheSameTypeWithCompositeFk.d.ts.map +1 -0
  124. package/dist-types/src/columnsWithExtraTableConfigsAdders/addColumnsOfTheSameTypeWithCompositeFk1to1.d.ts +4 -0
  125. package/dist-types/src/columnsWithExtraTableConfigsAdders/addColumnsOfTheSameTypeWithCompositeFk1to1.d.ts.map +1 -0
  126. package/dist-types/src/columnsWithExtraTableConfigsAdders/addColumnsWithCompositeFk.d.ts +11 -0
  127. package/dist-types/src/columnsWithExtraTableConfigsAdders/addColumnsWithCompositeFk.d.ts.map +1 -0
  128. package/dist-types/src/columnsWithExtraTableConfigsAdders/addIntegerIdColumnAsPrimaryKey.d.ts +9 -0
  129. package/dist-types/src/columnsWithExtraTableConfigsAdders/addIntegerIdColumnAsPrimaryKey.d.ts.map +1 -0
  130. package/dist-types/src/columnsWithExtraTableConfigsAdders/addIntegerRequiredColumnWithFk.d.ts +4 -0
  131. package/dist-types/src/columnsWithExtraTableConfigsAdders/addIntegerRequiredColumnWithFk.d.ts.map +1 -0
  132. package/dist-types/src/columnsWithExtraTableConfigsAdders/addIntegerRequiredColumnsWithCompositeFk.d.ts +4 -0
  133. package/dist-types/src/columnsWithExtraTableConfigsAdders/addIntegerRequiredColumnsWithCompositeFk.d.ts.map +1 -0
  134. package/dist-types/src/columnsWithExtraTableConfigsAdders/addIntegerRequiredColumnsWithCompositeFk1to1.d.ts +4 -0
  135. package/dist-types/src/columnsWithExtraTableConfigsAdders/addIntegerRequiredColumnsWithCompositeFk1to1.d.ts.map +1 -0
  136. package/dist-types/src/columnsWithExtraTableConfigsAdders/addTextRequiredColumnWithFk.d.ts +4 -0
  137. package/dist-types/src/columnsWithExtraTableConfigsAdders/addTextRequiredColumnWithFk.d.ts.map +1 -0
  138. package/dist-types/src/columnsWithExtraTableConfigsAdders/addUuidColumnAsPrimaryKey.d.ts +9 -0
  139. package/dist-types/src/columnsWithExtraTableConfigsAdders/addUuidColumnAsPrimaryKey.d.ts.map +1 -0
  140. package/dist-types/src/columnsWithExtraTableConfigsAdders/addUuidRequiredColumnWithFk.d.ts +4 -0
  141. package/dist-types/src/columnsWithExtraTableConfigsAdders/addUuidRequiredColumnWithFk.d.ts.map +1 -0
  142. package/dist-types/src/columnsWithExtraTableConfigsAdders/index.d.ts +17 -0
  143. package/dist-types/src/columnsWithExtraTableConfigsAdders/index.d.ts.map +1 -0
  144. package/dist-types/src/extraTableConfigsAdders/ForeignTableColumnGetter.d.ts +5 -0
  145. package/dist-types/src/extraTableConfigsAdders/ForeignTableColumnGetter.d.ts.map +1 -0
  146. package/dist-types/src/extraTableConfigsAdders/FunctionRequiringColumnsMap.d.ts +4 -0
  147. package/dist-types/src/extraTableConfigsAdders/FunctionRequiringColumnsMap.d.ts.map +1 -0
  148. package/dist-types/src/extraTableConfigsAdders/addCompositeFk.d.ts +4 -0
  149. package/dist-types/src/extraTableConfigsAdders/addCompositeFk.d.ts.map +1 -0
  150. package/dist-types/src/extraTableConfigsAdders/addCompositePrimaryKey.d.ts +3 -0
  151. package/dist-types/src/extraTableConfigsAdders/addCompositePrimaryKey.d.ts.map +1 -0
  152. package/dist-types/src/extraTableConfigsAdders/addExtraConfig.d.ts +6 -0
  153. package/dist-types/src/extraTableConfigsAdders/addExtraConfig.d.ts.map +1 -0
  154. package/dist-types/src/extraTableConfigsAdders/addFk.d.ts +4 -0
  155. package/dist-types/src/extraTableConfigsAdders/addFk.d.ts.map +1 -0
  156. package/dist-types/src/extraTableConfigsAdders/addPrimaryKey.d.ts +3 -0
  157. package/dist-types/src/extraTableConfigsAdders/addPrimaryKey.d.ts.map +1 -0
  158. package/dist-types/src/extraTableConfigsAdders/addUniqueConstraintWithIndex.d.ts +3 -0
  159. package/dist-types/src/extraTableConfigsAdders/addUniqueConstraintWithIndex.d.ts.map +1 -0
  160. package/dist-types/src/extraTableConfigsAdders/getCompressedIdentifierName.d.ts +2 -0
  161. package/dist-types/src/extraTableConfigsAdders/getCompressedIdentifierName.d.ts.map +1 -0
  162. package/dist-types/src/extraTableConfigsAdders/index.d.ts +10 -0
  163. package/dist-types/src/extraTableConfigsAdders/index.d.ts.map +1 -0
  164. package/dist-types/src/finalizePgTable.d.ts +130 -0
  165. package/dist-types/src/finalizePgTable.d.ts.map +1 -0
  166. package/dist-types/src/index.d.ts +6 -0
  167. package/dist-types/src/index.d.ts.map +1 -0
  168. package/dist-types/src/initPgTable.d.ts +3 -0
  169. package/dist-types/src/initPgTable.d.ts.map +1 -0
  170. package/index.ts +1 -0
  171. package/package.json +92 -0
  172. package/src/TableFuncArgs.ts +21 -0
  173. package/src/columnsAdders/AllowOnlyValidColumnMaps.ts +69 -0
  174. package/src/columnsAdders/FunctionExtendingColumnsMap.ts +24 -0
  175. package/src/columnsAdders/addColumn.ts +14 -0
  176. package/src/columnsAdders/addColumns.ts +18 -0
  177. package/src/columnsAdders/addHappenedAtDateColumns.ts +24 -0
  178. package/src/columnsAdders/addRequiredColumn.ts +20 -0
  179. package/src/columnsAdders/addRequiredColumns.ts +41 -0
  180. package/src/columnsAdders/addRequiredNameOrDescription.ts +14 -0
  181. package/src/columnsAdders/index.ts +9 -0
  182. package/src/columnsAdders/nonNullIdentity.ts +11 -0
  183. package/src/columnsWithExtraTableConfigsAdders/addAutoGeneratedGloballyUniqueOrderingColumn.ts +13 -0
  184. package/src/columnsWithExtraTableConfigsAdders/addBigint53IdColumnAsPrimaryKey.ts +30 -0
  185. package/src/columnsWithExtraTableConfigsAdders/addBigint53RequiredColumnWithFk.ts +21 -0
  186. package/src/columnsWithExtraTableConfigsAdders/addBigint53RequiredColumnsWithCompositeFk.ts +26 -0
  187. package/src/columnsWithExtraTableConfigsAdders/addBigint53RequiredColumnsWithCompositeFk1to1.ts +25 -0
  188. package/src/columnsWithExtraTableConfigsAdders/addColumnWithFk.ts +27 -0
  189. package/src/columnsWithExtraTableConfigsAdders/addColumnsOfTheSameTypeWithCompositeFk.ts +36 -0
  190. package/src/columnsWithExtraTableConfigsAdders/addColumnsOfTheSameTypeWithCompositeFk1to1.ts +23 -0
  191. package/src/columnsWithExtraTableConfigsAdders/addColumnsWithCompositeFk.ts +60 -0
  192. package/src/columnsWithExtraTableConfigsAdders/addIntegerIdColumnAsPrimaryKey.ts +27 -0
  193. package/src/columnsWithExtraTableConfigsAdders/addIntegerRequiredColumnWithFk.ts +21 -0
  194. package/src/columnsWithExtraTableConfigsAdders/addIntegerRequiredColumnsWithCompositeFk.ts +26 -0
  195. package/src/columnsWithExtraTableConfigsAdders/addIntegerRequiredColumnsWithCompositeFk1to1.ts +25 -0
  196. package/src/columnsWithExtraTableConfigsAdders/addTextRequiredColumnWithFk.ts +21 -0
  197. package/src/columnsWithExtraTableConfigsAdders/addUuidColumnAsPrimaryKey.ts +25 -0
  198. package/src/columnsWithExtraTableConfigsAdders/addUuidRequiredColumnWithFk.ts +21 -0
  199. package/src/columnsWithExtraTableConfigsAdders/index.ts +16 -0
  200. package/src/extraTableConfigsAdders/ForeignTableColumnGetter.ts +3 -0
  201. package/src/extraTableConfigsAdders/FunctionRequiringColumnsMap.ts +13 -0
  202. package/src/extraTableConfigsAdders/addCompositeFk.ts +47 -0
  203. package/src/extraTableConfigsAdders/addCompositePrimaryKey.ts +9 -0
  204. package/src/extraTableConfigsAdders/addExtraConfig.ts +21 -0
  205. package/src/extraTableConfigsAdders/addFk.ts +51 -0
  206. package/src/extraTableConfigsAdders/addPrimaryKey.ts +17 -0
  207. package/src/extraTableConfigsAdders/addUniqueConstraintWithIndex.ts +20 -0
  208. package/src/extraTableConfigsAdders/getCompressedIdentifierName.ts +24 -0
  209. package/src/extraTableConfigsAdders/index.ts +9 -0
  210. package/src/finalizePgTable.ts +22 -0
  211. package/src/index.ts +5 -0
  212. package/src/initPgTable.ts +5 -0
@@ -0,0 +1,27 @@
1
+ import type { PgColumnBuilderBase } from 'drizzle-orm/pg-core'
2
+
3
+ import { flow } from 'effect/Function'
4
+
5
+ import {
6
+ addColumn,
7
+ type FunctionExtendingColumnsMap,
8
+ } from '../columnsAdders/index.ts'
9
+ import {
10
+ addFk,
11
+ type ForeignTableColumnGetter,
12
+ } from '../extraTableConfigsAdders/index.ts'
13
+
14
+ export const addColumnWithFk = <
15
+ const NameOfColumnInCurrentTable extends string,
16
+ ColumnBuilder extends PgColumnBuilderBase,
17
+ >(
18
+ nameOfColumnInCurrentTable: NameOfColumnInCurrentTable,
19
+ buildColumn: () => ColumnBuilder,
20
+ getColumnOfForeignTable: ForeignTableColumnGetter,
21
+ ): FunctionExtendingColumnsMap<{
22
+ [Key in NameOfColumnInCurrentTable]: ColumnBuilder
23
+ }> =>
24
+ flow(
25
+ addColumn(nameOfColumnInCurrentTable, buildColumn),
26
+ addFk(nameOfColumnInCurrentTable, getColumnOfForeignTable),
27
+ ) as any
@@ -0,0 +1,36 @@
1
+ import type { AnyPgTable, PgColumnBuilderBase } from 'drizzle-orm/pg-core'
2
+
3
+ import type {
4
+ AllowOnlyNonEmptyObjectsWithActualKeys,
5
+ FunctionExtendingColumnsMap,
6
+ } from '../columnsAdders/index.ts'
7
+ import { addColumnsWithCompositeFk } from './addColumnsWithCompositeFk.ts'
8
+
9
+ export const addColumnsOfTheSameTypeWithCompositeFk = <
10
+ const FkConfig extends [FkConfig] extends [infer U]
11
+ ? AllowOnlyNonEmptyObjectsWithActualKeys<U, keyof NoInfer<TTable>>
12
+ : never,
13
+ TTable extends AnyPgTable,
14
+ ColumnBuilder extends PgColumnBuilderBase,
15
+ >(
16
+ getForeignTable: () => TTable,
17
+ buildColumn: () => ColumnBuilder,
18
+ fkConfig: FkConfig,
19
+ ): FunctionExtendingColumnsMap<
20
+ Record<keyof NoInfer<FkConfig>, ColumnBuilder>
21
+ > =>
22
+ addColumnsWithCompositeFk(
23
+ getForeignTable,
24
+ () =>
25
+ Object.fromEntries(
26
+ Object.entries(
27
+ fkConfig as unknown as Record<string, keyof NoInfer<TTable>>,
28
+ ).map(([ownColumnName, foreignColumnName]) => [
29
+ ownColumnName,
30
+ {
31
+ currentColumnBuilder: buildColumn(),
32
+ foreignColumnName,
33
+ },
34
+ ]),
35
+ ) as any,
36
+ )
@@ -0,0 +1,23 @@
1
+ import type { AnyPgTable, PgColumnBuilderBase } from 'drizzle-orm/pg-core'
2
+
3
+ import type { FunctionExtendingColumnsMap } from '../columnsAdders/index.ts'
4
+ import { addColumnsOfTheSameTypeWithCompositeFk } from './addColumnsOfTheSameTypeWithCompositeFk.ts'
5
+
6
+ export const addColumnsOfTheSameTypeWithCompositeFk1to1 = <
7
+ const FkConfig extends readonly [
8
+ keyof TTable,
9
+ keyof TTable,
10
+ ...(keyof TTable)[],
11
+ ],
12
+ TTable extends AnyPgTable,
13
+ ColumnBuilder extends PgColumnBuilderBase,
14
+ >(
15
+ getForeignTable: () => TTable,
16
+ buildColumn: () => ColumnBuilder,
17
+ fkConfig: FkConfig,
18
+ ): FunctionExtendingColumnsMap<Record<FkConfig[number], ColumnBuilder>> =>
19
+ addColumnsOfTheSameTypeWithCompositeFk(
20
+ getForeignTable,
21
+ buildColumn,
22
+ Object.fromEntries(fkConfig.map(column => [column, column])) as any,
23
+ )
@@ -0,0 +1,60 @@
1
+ import type { AnyPgTable, PgColumnBuilderBase } from 'drizzle-orm/pg-core'
2
+
3
+ import { flow } from 'effect/Function'
4
+
5
+ import {
6
+ type AllowOnlyNonEmptyObjectsWithActualKeys,
7
+ addColumns,
8
+ type FunctionExtendingColumnsMap,
9
+ } from '../columnsAdders/index.ts'
10
+ import { addCompositeFk } from '../extraTableConfigsAdders/addCompositeFk.ts'
11
+
12
+ export const addColumnsWithCompositeFk = <
13
+ const FkConfig extends [FkConfig] extends [infer U]
14
+ ? AllowOnlyNonEmptyObjectsWithActualKeys<
15
+ U,
16
+ BatchColumnAdderValueOfRecord<TTable>
17
+ >
18
+ : never,
19
+ TTable extends AnyPgTable,
20
+ >(
21
+ getForeignTable: () => TTable,
22
+ fkConfig: () => FkConfig,
23
+ ): FunctionExtendingColumnsMap<{
24
+ [ColumnName in keyof FkConfig]: FkConfig[ColumnName] extends {
25
+ currentColumnBuilder: infer U
26
+ }
27
+ ? U
28
+ : never
29
+ }> => {
30
+ type Entry = [string, BatchColumnAdderValueOfRecord<TTable>]
31
+
32
+ const compositeFkConfig = Object.fromEntries(
33
+ (Object.entries(fkConfig()) as unknown as Entry[]).map(
34
+ ([ownColumnName, { foreignColumnName }]) => [
35
+ ownColumnName,
36
+ foreignColumnName,
37
+ ],
38
+ ),
39
+ )
40
+
41
+ return flow(
42
+ addColumns(
43
+ () =>
44
+ Object.fromEntries(
45
+ (Object.entries(fkConfig()) as unknown as Entry[]).map(
46
+ ([ownColumnName, { currentColumnBuilder }]) => [
47
+ ownColumnName,
48
+ currentColumnBuilder,
49
+ ],
50
+ ),
51
+ ) as any,
52
+ ),
53
+ addCompositeFk(getForeignTable, compositeFkConfig),
54
+ ) as any
55
+ }
56
+
57
+ type BatchColumnAdderValueOfRecord<TTable> = {
58
+ currentColumnBuilder: PgColumnBuilderBase
59
+ foreignColumnName: keyof NoInfer<TTable>
60
+ }
@@ -0,0 +1,27 @@
1
+ import type { IsIdentity, NotNull } from 'drizzle-orm'
2
+ import { integer, type PgIntegerBuilderInitial } from 'drizzle-orm/pg-core'
3
+
4
+ import { pipe } from 'effect/Function'
5
+
6
+ import { addColumns, type GeneralColumnMap } from '../columnsAdders/index.ts'
7
+ import { addPrimaryKey } from '../extraTableConfigsAdders/index.ts'
8
+ import type { TableFuncArgs } from '../TableFuncArgs.ts'
9
+
10
+ export const addIntegerIdColumnAsPrimaryKey = <
11
+ const TTableName extends string,
12
+ TColumnsMap extends GeneralColumnMap,
13
+ >(
14
+ args: TableFuncArgs<TTableName, TColumnsMap>,
15
+ ): TableFuncArgs<
16
+ TTableName,
17
+ TColumnsMap & { id: PgIntegerGeneratedAlwaysAsIdentity<TTableName> }
18
+ > =>
19
+ pipe(
20
+ addColumns(() => ({
21
+ id: integer(`${args[0]}_id`).generatedAlwaysAsIdentity(),
22
+ }))(args),
23
+ addPrimaryKey('id'),
24
+ )
25
+
26
+ export type PgIntegerGeneratedAlwaysAsIdentity<TTableName extends string> =
27
+ IsIdentity<NotNull<PgIntegerBuilderInitial<`${TTableName}_id`>>, 'always'>
@@ -0,0 +1,21 @@
1
+ import {
2
+ type FunctionExtendingColumnsMap,
3
+ type NonNullInteger,
4
+ nonNullInteger,
5
+ } from '../columnsAdders/index.ts'
6
+ import type { ForeignTableColumnGetter } from '../extraTableConfigsAdders/index.ts'
7
+ import { addColumnWithFk } from './addColumnWithFk.ts'
8
+
9
+ export const addIntegerRequiredColumnWithFk = <
10
+ const NameOfColumnInCurrentTable extends string,
11
+ >(
12
+ nameOfColumnInCurrentTable: NameOfColumnInCurrentTable,
13
+ getColumnOfForeignTable: ForeignTableColumnGetter,
14
+ ): FunctionExtendingColumnsMap<
15
+ Record<NameOfColumnInCurrentTable, NonNullInteger>
16
+ > =>
17
+ addColumnWithFk(
18
+ nameOfColumnInCurrentTable,
19
+ nonNullInteger,
20
+ getColumnOfForeignTable,
21
+ )
@@ -0,0 +1,26 @@
1
+ import type { AnyPgTable } from 'drizzle-orm/pg-core'
2
+
3
+ import {
4
+ type AllowOnlyNonEmptyObjectsWithActualKeys,
5
+ type FunctionExtendingColumnsMap,
6
+ type NonNullInteger,
7
+ nonNullInteger,
8
+ } from '../columnsAdders/index.ts'
9
+ import { addColumnsOfTheSameTypeWithCompositeFk } from './addColumnsOfTheSameTypeWithCompositeFk.ts'
10
+
11
+ export const addIntegerRequiredColumnsWithCompositeFk = <
12
+ const FkConfig extends [FkConfig] extends [infer U]
13
+ ? AllowOnlyNonEmptyObjectsWithActualKeys<U, keyof NoInfer<TTable>>
14
+ : never,
15
+ TTable extends AnyPgTable,
16
+ >(
17
+ getForeignTable: () => TTable,
18
+ fkConfig: FkConfig,
19
+ ): FunctionExtendingColumnsMap<
20
+ Record<keyof NoInfer<FkConfig>, NonNullInteger>
21
+ > =>
22
+ addColumnsOfTheSameTypeWithCompositeFk(
23
+ getForeignTable,
24
+ nonNullInteger,
25
+ fkConfig,
26
+ )
@@ -0,0 +1,25 @@
1
+ import type { AnyPgTable } from 'drizzle-orm/pg-core'
2
+
3
+ import {
4
+ type FunctionExtendingColumnsMap,
5
+ type NonNullInteger,
6
+ nonNullInteger,
7
+ } from '../columnsAdders/index.ts'
8
+ import { addColumnsOfTheSameTypeWithCompositeFk1to1 } from './addColumnsOfTheSameTypeWithCompositeFk1to1.ts'
9
+
10
+ export const addIntegerRequiredColumnsWithCompositeFk1to1 = <
11
+ const FkConfig extends readonly [
12
+ keyof TTable,
13
+ keyof TTable,
14
+ ...(keyof TTable)[],
15
+ ],
16
+ TTable extends AnyPgTable,
17
+ >(
18
+ getForeignTable: () => TTable,
19
+ fkConfig: FkConfig,
20
+ ): FunctionExtendingColumnsMap<Record<FkConfig[number], NonNullInteger>> =>
21
+ addColumnsOfTheSameTypeWithCompositeFk1to1(
22
+ getForeignTable,
23
+ nonNullInteger,
24
+ fkConfig,
25
+ )
@@ -0,0 +1,21 @@
1
+ import {
2
+ type FunctionExtendingColumnsMap,
3
+ type NonNullText,
4
+ nonNullText,
5
+ } from '../columnsAdders/index.ts'
6
+ import type { ForeignTableColumnGetter } from '../extraTableConfigsAdders/index.ts'
7
+ import { addColumnWithFk } from './addColumnWithFk.ts'
8
+
9
+ export const addTextRequiredColumnWithFk = <
10
+ const NameOfColumnInCurrentTable extends string,
11
+ >(
12
+ nameOfColumnInCurrentTable: NameOfColumnInCurrentTable,
13
+ getColumnOfForeignTable: ForeignTableColumnGetter,
14
+ ): FunctionExtendingColumnsMap<
15
+ Record<NameOfColumnInCurrentTable, NonNullText>
16
+ > =>
17
+ addColumnWithFk(
18
+ nameOfColumnInCurrentTable,
19
+ nonNullText,
20
+ getColumnOfForeignTable,
21
+ )
@@ -0,0 +1,25 @@
1
+ import type { NotNull } from 'drizzle-orm'
2
+ import { type PgUUIDBuilderInitial, uuid } from 'drizzle-orm/pg-core'
3
+
4
+ import { pipe } from 'effect/Function'
5
+
6
+ import { addColumns, type GeneralColumnMap } from '../columnsAdders/index.ts'
7
+ import { addPrimaryKey } from '../extraTableConfigsAdders/index.ts'
8
+ import type { TableFuncArgs } from '../TableFuncArgs.ts'
9
+
10
+ export const addUuidColumnAsPrimaryKey = <
11
+ const TTableName extends string,
12
+ TColumnsMap extends GeneralColumnMap,
13
+ >(
14
+ args: TableFuncArgs<TTableName, TColumnsMap>,
15
+ ): TableFuncArgs<TTableName, TColumnsMap & { id: PgUUID<TTableName> }> =>
16
+ pipe(
17
+ addColumns(() => ({
18
+ id: uuid(`${args[0]}_uuid`).notNull(),
19
+ }))(args),
20
+ addPrimaryKey('id'),
21
+ )
22
+
23
+ export type PgUUID<TTableName extends string> = NotNull<
24
+ PgUUIDBuilderInitial<`${TTableName}_uuid`>
25
+ >
@@ -0,0 +1,21 @@
1
+ import {
2
+ type FunctionExtendingColumnsMap,
3
+ type NonNullUUID,
4
+ nonNullUuid,
5
+ } from '../columnsAdders/index.ts'
6
+ import type { ForeignTableColumnGetter } from '../extraTableConfigsAdders/index.ts'
7
+ import { addColumnWithFk } from './addColumnWithFk.ts'
8
+
9
+ export const addUuidRequiredColumnWithFk = <
10
+ const NameOfColumnInCurrentTable extends string,
11
+ >(
12
+ nameOfColumnInCurrentTable: NameOfColumnInCurrentTable,
13
+ getColumnOfForeignTable: ForeignTableColumnGetter,
14
+ ): FunctionExtendingColumnsMap<
15
+ Record<NameOfColumnInCurrentTable, NonNullUUID>
16
+ > =>
17
+ addColumnWithFk(
18
+ nameOfColumnInCurrentTable,
19
+ nonNullUuid,
20
+ getColumnOfForeignTable,
21
+ )
@@ -0,0 +1,16 @@
1
+ export * from './addAutoGeneratedGloballyUniqueOrderingColumn.ts'
2
+ export * from './addBigint53IdColumnAsPrimaryKey.ts'
3
+ export * from './addBigint53RequiredColumnsWithCompositeFk.ts'
4
+ export * from './addBigint53RequiredColumnsWithCompositeFk1to1.ts'
5
+ export * from './addBigint53RequiredColumnWithFk.ts'
6
+ export * from './addColumnsOfTheSameTypeWithCompositeFk.ts'
7
+ export * from './addColumnsOfTheSameTypeWithCompositeFk1to1.ts'
8
+ export * from './addColumnsWithCompositeFk.ts'
9
+ export * from './addColumnWithFk.ts'
10
+ export * from './addIntegerIdColumnAsPrimaryKey.ts'
11
+ export * from './addIntegerRequiredColumnsWithCompositeFk.ts'
12
+ export * from './addIntegerRequiredColumnsWithCompositeFk1to1.ts'
13
+ export * from './addIntegerRequiredColumnWithFk.ts'
14
+ export * from './addTextRequiredColumnWithFk.ts'
15
+ export * from './addUuidColumnAsPrimaryKey.ts'
16
+ export * from './addUuidRequiredColumnWithFk.ts'
@@ -0,0 +1,3 @@
1
+ import type { AnyPgColumn } from 'drizzle-orm/pg-core'
2
+
3
+ export type ForeignTableColumnGetter = () => AnyPgColumn<{ tableName: string }>
@@ -0,0 +1,13 @@
1
+ import type { ColumnMap } from '../columnsAdders/index.ts'
2
+ import type { TableFuncArgs } from '../TableFuncArgs.ts'
3
+
4
+ export type FunctionRequiringColumnsMap<
5
+ TRequiredPresenceOfColumnNames extends string,
6
+ > = <
7
+ const TTableName extends string,
8
+ TColumnsMap extends ColumnMap<TRequiredPresenceOfColumnNames> &
9
+ ColumnMap<string>,
10
+ >([snakeCaseTableName, options, extraConfig]: TableFuncArgs<
11
+ TTableName,
12
+ TColumnsMap
13
+ >) => TableFuncArgs<TTableName, TColumnsMap>
@@ -0,0 +1,47 @@
1
+ import { strSnakeCase } from '@nevware21/ts-utils'
2
+ import type { AnyPgTable } from 'drizzle-orm/pg-core'
3
+ import { foreignKey } from 'drizzle-orm/pg-core'
4
+
5
+ import { addExtraConfig } from './addExtraConfig.ts'
6
+ import type { FunctionRequiringColumnsMap } from './FunctionRequiringColumnsMap.ts'
7
+ import { getCompressedIdentifierName } from './getCompressedIdentifierName.ts'
8
+
9
+ export const addCompositeFk =
10
+ <
11
+ const TRequiredPresenceOfColumnNames extends string,
12
+ TTable extends AnyPgTable,
13
+ >(
14
+ getForeignTable: () => TTable,
15
+ fkConfig: Record<TRequiredPresenceOfColumnNames, keyof NoInfer<TTable>>,
16
+ ): FunctionRequiringColumnsMap<TRequiredPresenceOfColumnNames> =>
17
+ args =>
18
+ addExtraConfig(table => {
19
+ const currentTableName = args[0]
20
+ const ownColumnNamesInitial = Object.keys(fkConfig)
21
+ const ownColumnNamesSnakeCasedCloseToSQL = ownColumnNamesInitial.map(
22
+ name => strSnakeCase(table[name]?.name || name),
23
+ )
24
+
25
+ const foreignTable = getForeignTable() as any
26
+ const foreignTableName = foreignTable[Symbol.for('drizzle:Name')]
27
+
28
+ const foreignColumnNames = Object.values(fkConfig) as [any]
29
+ const foreignColumnNamesSnakeCasedCloseToSQL = foreignColumnNames.map(
30
+ name => strSnakeCase(foreignTable[name].name || name),
31
+ )
32
+
33
+ return [
34
+ foreignKey({
35
+ name: getCompressedIdentifierName('FK', [
36
+ currentTableName,
37
+ ...ownColumnNamesSnakeCasedCloseToSQL,
38
+ foreignTableName,
39
+ ...foreignColumnNamesSnakeCasedCloseToSQL,
40
+ ]),
41
+ columns: ownColumnNamesInitial.map(name => table[name]) as [any],
42
+ foreignColumns: foreignColumnNames.map(
43
+ name => foreignTable[name],
44
+ ) as [any],
45
+ }),
46
+ ]
47
+ })(args)
@@ -0,0 +1,9 @@
1
+ import { addPrimaryKey } from './addPrimaryKey.ts'
2
+ import type { FunctionRequiringColumnsMap } from './FunctionRequiringColumnsMap.ts'
3
+
4
+ export const addCompositePrimaryKey = <
5
+ const TColumnNames extends [string, string, ...string[]],
6
+ >(
7
+ ...columnNames: TColumnNames
8
+ ): FunctionRequiringColumnsMap<TColumnNames[number]> =>
9
+ addPrimaryKey(...columnNames)
@@ -0,0 +1,21 @@
1
+ import type { PgTableExtraConfigValue } from 'drizzle-orm/pg-core'
2
+
3
+ import type { ColumnMap, GeneralColumnMap } from '../columnsAdders/index.ts'
4
+ import type { RemapToTableArgumentOfExtraConfigRenderer } from '../TableFuncArgs.ts'
5
+ import type { FunctionRequiringColumnsMap } from './FunctionRequiringColumnsMap.ts'
6
+
7
+ export const addExtraConfig =
8
+ <TRequiredPresenceOfColumnNames extends string = never>(
9
+ additionalExtraConfig: <
10
+ TColumnsMap extends GeneralColumnMap = GeneralColumnMap,
11
+ >(
12
+ table: RemapToTableArgumentOfExtraConfigRenderer<
13
+ TColumnsMap & ColumnMap<NoInfer<TRequiredPresenceOfColumnNames>>
14
+ >,
15
+ ) => PgTableExtraConfigValue[],
16
+ ): FunctionRequiringColumnsMap<TRequiredPresenceOfColumnNames> =>
17
+ ([snakeCaseTableName, options, extraConfig]) => [
18
+ snakeCaseTableName,
19
+ options,
20
+ table => [...extraConfig(table), ...additionalExtraConfig(table)],
21
+ ]
@@ -0,0 +1,51 @@
1
+ import { strSnakeCase } from '@nevware21/ts-utils'
2
+ import { foreignKey } from 'drizzle-orm/pg-core'
3
+
4
+ import { addExtraConfig } from './addExtraConfig.ts'
5
+ import type { ForeignTableColumnGetter } from './ForeignTableColumnGetter.ts'
6
+ import type { FunctionRequiringColumnsMap } from './FunctionRequiringColumnsMap.ts'
7
+ import { getCompressedIdentifierName } from './getCompressedIdentifierName.ts'
8
+
9
+ export const addFk =
10
+ <const NameOfColumnInCurrentTable extends string>(
11
+ ownInitialColumnName: NameOfColumnInCurrentTable,
12
+ getColumnOfForeignTable: ForeignTableColumnGetter,
13
+ ): FunctionRequiringColumnsMap<NameOfColumnInCurrentTable> =>
14
+ args =>
15
+ addExtraConfig(table => {
16
+ const currentTableName = args[0]
17
+ const ownColumnNameSnakeCasedCloseToSQL = strSnakeCase(
18
+ table[ownInitialColumnName].name || ownInitialColumnName,
19
+ )
20
+
21
+ const foreignColumn = getColumnOfForeignTable()
22
+ const foreignTableName = (foreignColumn.table as any)[
23
+ Symbol.for('drizzle:Name')
24
+ ] as string
25
+ const foreignColumnNamesSnakeCasedCloseToSQL = foreignColumn.name
26
+
27
+ const isForeignColumnNameAPrimitiveId =
28
+ `${foreignTableName}_id` === foreignColumnNamesSnakeCasedCloseToSQL
29
+
30
+ const doOwnAndForeignColumnNamesMatch =
31
+ ownColumnNameSnakeCasedCloseToSQL ===
32
+ foreignColumnNamesSnakeCasedCloseToSQL
33
+
34
+ return [
35
+ foreignKey({
36
+ name: getCompressedIdentifierName('FK', [
37
+ currentTableName,
38
+ ownColumnNameSnakeCasedCloseToSQL,
39
+ ...(isForeignColumnNameAPrimitiveId &&
40
+ doOwnAndForeignColumnNamesMatch
41
+ ? []
42
+ : isForeignColumnNameAPrimitiveId ||
43
+ doOwnAndForeignColumnNamesMatch
44
+ ? [foreignTableName]
45
+ : [foreignTableName, foreignColumnNamesSnakeCasedCloseToSQL]),
46
+ ]),
47
+ columns: [table[ownInitialColumnName]],
48
+ foreignColumns: [foreignColumn],
49
+ }),
50
+ ]
51
+ })(args)
@@ -0,0 +1,17 @@
1
+ import { primaryKey } from 'drizzle-orm/pg-core'
2
+
3
+ import { addExtraConfig } from './addExtraConfig.ts'
4
+ import type { FunctionRequiringColumnsMap } from './FunctionRequiringColumnsMap.ts'
5
+ import { getCompressedIdentifierName } from './getCompressedIdentifierName.ts'
6
+
7
+ export const addPrimaryKey =
8
+ <const TColumnNames extends [string, ...string[]]>(
9
+ ...columnNames: TColumnNames
10
+ ): FunctionRequiringColumnsMap<TColumnNames[number]> =>
11
+ args =>
12
+ addExtraConfig(table => [
13
+ primaryKey({
14
+ name: getCompressedIdentifierName('PK', [args[0]]),
15
+ columns: columnNames.map(name => table[name]) as any,
16
+ }),
17
+ ])(args)
@@ -0,0 +1,20 @@
1
+ import { strSnakeCase } from '@nevware21/ts-utils'
2
+ import { unique } from 'drizzle-orm/pg-core'
3
+
4
+ import { addExtraConfig } from './addExtraConfig.ts'
5
+ import type { FunctionRequiringColumnsMap } from './FunctionRequiringColumnsMap.ts'
6
+ import { getCompressedIdentifierName } from './getCompressedIdentifierName.ts'
7
+
8
+ export const addUniqueConstraintWithIndex =
9
+ <const TColumnNames extends [string, ...string[]]>(
10
+ ...columnNames: TColumnNames
11
+ ): FunctionRequiringColumnsMap<TColumnNames[number]> =>
12
+ args =>
13
+ addExtraConfig(table => [
14
+ unique(
15
+ getCompressedIdentifierName('UQ', [
16
+ args[0],
17
+ ...columnNames.map(name => strSnakeCase(table[name]?.name || name)),
18
+ ]),
19
+ ).on(...(columnNames.map(columnName => table[columnName]) as [any])),
20
+ ])(args)
@@ -0,0 +1,24 @@
1
+ export function getCompressedIdentifierName(prefix: string, tokens: string[]) {
2
+ {
3
+ const wide = prefix + '_' + tokens.join('_')
4
+ if (wide.length <= 63) return wide
5
+ }
6
+ tokens = tokens.flatMap(e => e.split('_')).filter(Boolean)
7
+ const render = () =>
8
+ prefix + '_' + tokens.map(e => e[0]?.toUpperCase() + e.slice(1)).join('')
9
+ let rendered = render()
10
+
11
+ while (rendered.length > 63) {
12
+ const maxLength = Math.max(...tokens.map(e => e.length))
13
+ if (maxLength === 1) {
14
+ rendered = rendered.slice(0, 63)
15
+ break
16
+ }
17
+ const index = tokens.findLastIndex(e => e.length === maxLength)
18
+ if (index in tokens) tokens[index] = tokens[index]!.slice(0, 1)
19
+ else throw new Error('wtf in getCompressedIdentifierName')
20
+ rendered = render()
21
+ }
22
+
23
+ return rendered
24
+ }
@@ -0,0 +1,9 @@
1
+ export * from './addCompositeFk.ts'
2
+ export * from './addCompositePrimaryKey.ts'
3
+ export * from './addExtraConfig.ts'
4
+ export * from './addFk.ts'
5
+ export * from './addPrimaryKey.ts'
6
+ export * from './addUniqueConstraintWithIndex.ts'
7
+ export * from './ForeignTableColumnGetter.ts'
8
+ export * from './FunctionRequiringColumnsMap.ts'
9
+ export * from './getCompressedIdentifierName.ts'
@@ -0,0 +1,22 @@
1
+ import { strCamelCase } from '@nevware21/ts-utils'
2
+ import { pgTable } from 'drizzle-orm/pg-core'
3
+ import type { CamelCase } from 'type-fest'
4
+
5
+ import type { GeneralColumnMap } from './columnsAdders/AllowOnlyValidColumnMaps.ts'
6
+ import type { TableFuncArgs } from './TableFuncArgs.ts'
7
+
8
+ export const finalizePgTable = <
9
+ const TTableName extends string,
10
+ TColumnsMap extends GeneralColumnMap = GeneralColumnMap,
11
+ >(
12
+ args: TableFuncArgs<TTableName, TColumnsMap>,
13
+ ) => {
14
+ const table = pgTable(...args)
15
+
16
+ const exportName = strCamelCase(args[0])
17
+ type ExportName = CamelCase<TTableName>
18
+
19
+ return { [exportName]: table } as {
20
+ [key in ExportName]: typeof table
21
+ }
22
+ }
package/src/index.ts ADDED
@@ -0,0 +1,5 @@
1
+ export * from './columnsAdders/index.ts'
2
+ export * from './columnsWithExtraTableConfigsAdders/index.ts'
3
+ export * from './extraTableConfigsAdders/index.ts'
4
+ export * from './finalizePgTable.ts'
5
+ export * from './initPgTable.ts'
@@ -0,0 +1,5 @@
1
+ import type { TableFuncArgs } from './TableFuncArgs.ts'
2
+
3
+ export const initPgTable = <const TTableName extends string>(
4
+ snakeCaseTableName: TTableName,
5
+ ): TableFuncArgs<TTableName, {}> => [snakeCaseTableName, {}, () => []]