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.
- package/README.md +9 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/src/TableFuncArgs.js +1 -0
- package/dist/src/TableFuncArgs.js.map +1 -0
- package/dist/src/columnsAdders/AllowOnlyValidColumnMaps.js +2 -0
- package/dist/src/columnsAdders/AllowOnlyValidColumnMaps.js.map +1 -0
- package/dist/src/columnsAdders/FunctionExtendingColumnsMap.js +1 -0
- package/dist/src/columnsAdders/FunctionExtendingColumnsMap.js.map +1 -0
- package/dist/src/columnsAdders/addColumn.js +3 -0
- package/dist/src/columnsAdders/addColumn.js.map +1 -0
- package/dist/src/columnsAdders/addColumns.js +9 -0
- package/dist/src/columnsAdders/addColumns.js.map +1 -0
- package/dist/src/columnsAdders/addHappenedAtDateColumns.js +12 -0
- package/dist/src/columnsAdders/addHappenedAtDateColumns.js.map +1 -0
- package/dist/src/columnsAdders/addRequiredColumn.js +3 -0
- package/dist/src/columnsAdders/addRequiredColumn.js.map +1 -0
- package/dist/src/columnsAdders/addRequiredColumns.js +6 -0
- package/dist/src/columnsAdders/addRequiredColumns.js.map +1 -0
- package/dist/src/columnsAdders/addRequiredNameOrDescription.js +8 -0
- package/dist/src/columnsAdders/addRequiredNameOrDescription.js.map +1 -0
- package/dist/src/columnsAdders/index.js +10 -0
- package/dist/src/columnsAdders/index.js.map +1 -0
- package/dist/src/columnsAdders/nonNullIdentity.js +6 -0
- package/dist/src/columnsAdders/nonNullIdentity.js.map +1 -0
- package/dist/src/columnsWithExtraTableConfigsAdders/addAutoGeneratedGloballyUniqueOrderingColumn.js +7 -0
- package/dist/src/columnsWithExtraTableConfigsAdders/addAutoGeneratedGloballyUniqueOrderingColumn.js.map +1 -0
- package/dist/src/columnsWithExtraTableConfigsAdders/addBigint53IdColumnAsPrimaryKey.js +8 -0
- package/dist/src/columnsWithExtraTableConfigsAdders/addBigint53IdColumnAsPrimaryKey.js.map +1 -0
- package/dist/src/columnsWithExtraTableConfigsAdders/addBigint53RequiredColumnWithFk.js +4 -0
- package/dist/src/columnsWithExtraTableConfigsAdders/addBigint53RequiredColumnWithFk.js.map +1 -0
- package/dist/src/columnsWithExtraTableConfigsAdders/addBigint53RequiredColumnsWithCompositeFk.js +4 -0
- package/dist/src/columnsWithExtraTableConfigsAdders/addBigint53RequiredColumnsWithCompositeFk.js.map +1 -0
- package/dist/src/columnsWithExtraTableConfigsAdders/addBigint53RequiredColumnsWithCompositeFk1to1.js +4 -0
- package/dist/src/columnsWithExtraTableConfigsAdders/addBigint53RequiredColumnsWithCompositeFk1to1.js.map +1 -0
- package/dist/src/columnsWithExtraTableConfigsAdders/addColumnWithFk.js +5 -0
- package/dist/src/columnsWithExtraTableConfigsAdders/addColumnWithFk.js.map +1 -0
- package/dist/src/columnsWithExtraTableConfigsAdders/addColumnsOfTheSameTypeWithCompositeFk.js +9 -0
- package/dist/src/columnsWithExtraTableConfigsAdders/addColumnsOfTheSameTypeWithCompositeFk.js.map +1 -0
- package/dist/src/columnsWithExtraTableConfigsAdders/addColumnsOfTheSameTypeWithCompositeFk1to1.js +3 -0
- package/dist/src/columnsWithExtraTableConfigsAdders/addColumnsOfTheSameTypeWithCompositeFk1to1.js.map +1 -0
- package/dist/src/columnsWithExtraTableConfigsAdders/addColumnsWithCompositeFk.js +14 -0
- package/dist/src/columnsWithExtraTableConfigsAdders/addColumnsWithCompositeFk.js.map +1 -0
- package/dist/src/columnsWithExtraTableConfigsAdders/addIntegerIdColumnAsPrimaryKey.js +8 -0
- package/dist/src/columnsWithExtraTableConfigsAdders/addIntegerIdColumnAsPrimaryKey.js.map +1 -0
- package/dist/src/columnsWithExtraTableConfigsAdders/addIntegerRequiredColumnWithFk.js +4 -0
- package/dist/src/columnsWithExtraTableConfigsAdders/addIntegerRequiredColumnWithFk.js.map +1 -0
- package/dist/src/columnsWithExtraTableConfigsAdders/addIntegerRequiredColumnsWithCompositeFk.js +4 -0
- package/dist/src/columnsWithExtraTableConfigsAdders/addIntegerRequiredColumnsWithCompositeFk.js.map +1 -0
- package/dist/src/columnsWithExtraTableConfigsAdders/addIntegerRequiredColumnsWithCompositeFk1to1.js +4 -0
- package/dist/src/columnsWithExtraTableConfigsAdders/addIntegerRequiredColumnsWithCompositeFk1to1.js.map +1 -0
- package/dist/src/columnsWithExtraTableConfigsAdders/addTextRequiredColumnWithFk.js +4 -0
- package/dist/src/columnsWithExtraTableConfigsAdders/addTextRequiredColumnWithFk.js.map +1 -0
- package/dist/src/columnsWithExtraTableConfigsAdders/addUuidColumnAsPrimaryKey.js +8 -0
- package/dist/src/columnsWithExtraTableConfigsAdders/addUuidColumnAsPrimaryKey.js.map +1 -0
- package/dist/src/columnsWithExtraTableConfigsAdders/addUuidRequiredColumnWithFk.js +4 -0
- package/dist/src/columnsWithExtraTableConfigsAdders/addUuidRequiredColumnWithFk.js.map +1 -0
- package/dist/src/columnsWithExtraTableConfigsAdders/index.js +17 -0
- package/dist/src/columnsWithExtraTableConfigsAdders/index.js.map +1 -0
- package/dist/src/extraTableConfigsAdders/ForeignTableColumnGetter.js +1 -0
- package/dist/src/extraTableConfigsAdders/ForeignTableColumnGetter.js.map +1 -0
- package/dist/src/extraTableConfigsAdders/FunctionRequiringColumnsMap.js +1 -0
- package/dist/src/extraTableConfigsAdders/FunctionRequiringColumnsMap.js.map +1 -0
- package/dist/src/extraTableConfigsAdders/addCompositeFk.js +26 -0
- package/dist/src/extraTableConfigsAdders/addCompositeFk.js.map +1 -0
- package/dist/src/extraTableConfigsAdders/addCompositePrimaryKey.js +3 -0
- package/dist/src/extraTableConfigsAdders/addCompositePrimaryKey.js.map +1 -0
- package/dist/src/extraTableConfigsAdders/addExtraConfig.js +6 -0
- package/dist/src/extraTableConfigsAdders/addExtraConfig.js.map +1 -0
- package/dist/src/extraTableConfigsAdders/addFk.js +32 -0
- package/dist/src/extraTableConfigsAdders/addFk.js.map +1 -0
- package/dist/src/extraTableConfigsAdders/addPrimaryKey.js +10 -0
- package/dist/src/extraTableConfigsAdders/addPrimaryKey.js.map +1 -0
- package/dist/src/extraTableConfigsAdders/addUniqueConstraintWithIndex.js +11 -0
- package/dist/src/extraTableConfigsAdders/addUniqueConstraintWithIndex.js.map +1 -0
- package/dist/src/extraTableConfigsAdders/getCompressedIdentifierName.js +25 -0
- package/dist/src/extraTableConfigsAdders/getCompressedIdentifierName.js.map +1 -0
- package/dist/src/extraTableConfigsAdders/index.js +10 -0
- package/dist/src/extraTableConfigsAdders/index.js.map +1 -0
- package/dist/src/finalizePgTable.js +8 -0
- package/dist/src/finalizePgTable.js.map +1 -0
- package/dist/src/index.js +6 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/initPgTable.js +2 -0
- package/dist/src/initPgTable.js.map +1 -0
- package/dist-types/index.d.ts +2 -0
- package/dist-types/index.d.ts.map +1 -0
- package/dist-types/src/TableFuncArgs.d.ts +12 -0
- package/dist-types/src/TableFuncArgs.d.ts.map +1 -0
- package/dist-types/src/columnsAdders/AllowOnlyValidColumnMaps.d.ts +24 -0
- package/dist-types/src/columnsAdders/AllowOnlyValidColumnMaps.d.ts.map +1 -0
- package/dist-types/src/columnsAdders/FunctionExtendingColumnsMap.d.ts +8 -0
- package/dist-types/src/columnsAdders/FunctionExtendingColumnsMap.d.ts.map +1 -0
- package/dist-types/src/columnsAdders/addColumn.d.ts +4 -0
- package/dist-types/src/columnsAdders/addColumn.d.ts.map +1 -0
- package/dist-types/src/columnsAdders/addColumns.d.ts +4 -0
- package/dist-types/src/columnsAdders/addColumns.d.ts.map +1 -0
- package/dist-types/src/columnsAdders/addHappenedAtDateColumns.d.ts +9 -0
- package/dist-types/src/columnsAdders/addHappenedAtDateColumns.d.ts.map +1 -0
- package/dist-types/src/columnsAdders/addRequiredColumn.d.ts +5 -0
- package/dist-types/src/columnsAdders/addRequiredColumn.d.ts.map +1 -0
- package/dist-types/src/columnsAdders/addRequiredColumns.d.ts +14 -0
- package/dist-types/src/columnsAdders/addRequiredColumns.d.ts.map +1 -0
- package/dist-types/src/columnsAdders/addRequiredNameOrDescription.d.ts +12 -0
- package/dist-types/src/columnsAdders/addRequiredNameOrDescription.d.ts.map +1 -0
- package/dist-types/src/columnsAdders/index.d.ts +10 -0
- package/dist-types/src/columnsAdders/index.d.ts.map +1 -0
- package/dist-types/src/columnsAdders/nonNullIdentity.d.ts +9 -0
- package/dist-types/src/columnsAdders/nonNullIdentity.d.ts.map +1 -0
- package/dist-types/src/columnsWithExtraTableConfigsAdders/addAutoGeneratedGloballyUniqueOrderingColumn.d.ts +4 -0
- package/dist-types/src/columnsWithExtraTableConfigsAdders/addAutoGeneratedGloballyUniqueOrderingColumn.d.ts.map +1 -0
- package/dist-types/src/columnsWithExtraTableConfigsAdders/addBigint53IdColumnAsPrimaryKey.d.ts +10 -0
- package/dist-types/src/columnsWithExtraTableConfigsAdders/addBigint53IdColumnAsPrimaryKey.d.ts.map +1 -0
- package/dist-types/src/columnsWithExtraTableConfigsAdders/addBigint53RequiredColumnWithFk.d.ts +4 -0
- package/dist-types/src/columnsWithExtraTableConfigsAdders/addBigint53RequiredColumnWithFk.d.ts.map +1 -0
- package/dist-types/src/columnsWithExtraTableConfigsAdders/addBigint53RequiredColumnsWithCompositeFk.d.ts +4 -0
- package/dist-types/src/columnsWithExtraTableConfigsAdders/addBigint53RequiredColumnsWithCompositeFk.d.ts.map +1 -0
- package/dist-types/src/columnsWithExtraTableConfigsAdders/addBigint53RequiredColumnsWithCompositeFk1to1.d.ts +4 -0
- package/dist-types/src/columnsWithExtraTableConfigsAdders/addBigint53RequiredColumnsWithCompositeFk1to1.d.ts.map +1 -0
- package/dist-types/src/columnsWithExtraTableConfigsAdders/addColumnWithFk.d.ts +5 -0
- package/dist-types/src/columnsWithExtraTableConfigsAdders/addColumnWithFk.d.ts.map +1 -0
- package/dist-types/src/columnsWithExtraTableConfigsAdders/addColumnsOfTheSameTypeWithCompositeFk.d.ts +4 -0
- package/dist-types/src/columnsWithExtraTableConfigsAdders/addColumnsOfTheSameTypeWithCompositeFk.d.ts.map +1 -0
- package/dist-types/src/columnsWithExtraTableConfigsAdders/addColumnsOfTheSameTypeWithCompositeFk1to1.d.ts +4 -0
- package/dist-types/src/columnsWithExtraTableConfigsAdders/addColumnsOfTheSameTypeWithCompositeFk1to1.d.ts.map +1 -0
- package/dist-types/src/columnsWithExtraTableConfigsAdders/addColumnsWithCompositeFk.d.ts +11 -0
- package/dist-types/src/columnsWithExtraTableConfigsAdders/addColumnsWithCompositeFk.d.ts.map +1 -0
- package/dist-types/src/columnsWithExtraTableConfigsAdders/addIntegerIdColumnAsPrimaryKey.d.ts +9 -0
- package/dist-types/src/columnsWithExtraTableConfigsAdders/addIntegerIdColumnAsPrimaryKey.d.ts.map +1 -0
- package/dist-types/src/columnsWithExtraTableConfigsAdders/addIntegerRequiredColumnWithFk.d.ts +4 -0
- package/dist-types/src/columnsWithExtraTableConfigsAdders/addIntegerRequiredColumnWithFk.d.ts.map +1 -0
- package/dist-types/src/columnsWithExtraTableConfigsAdders/addIntegerRequiredColumnsWithCompositeFk.d.ts +4 -0
- package/dist-types/src/columnsWithExtraTableConfigsAdders/addIntegerRequiredColumnsWithCompositeFk.d.ts.map +1 -0
- package/dist-types/src/columnsWithExtraTableConfigsAdders/addIntegerRequiredColumnsWithCompositeFk1to1.d.ts +4 -0
- package/dist-types/src/columnsWithExtraTableConfigsAdders/addIntegerRequiredColumnsWithCompositeFk1to1.d.ts.map +1 -0
- package/dist-types/src/columnsWithExtraTableConfigsAdders/addTextRequiredColumnWithFk.d.ts +4 -0
- package/dist-types/src/columnsWithExtraTableConfigsAdders/addTextRequiredColumnWithFk.d.ts.map +1 -0
- package/dist-types/src/columnsWithExtraTableConfigsAdders/addUuidColumnAsPrimaryKey.d.ts +9 -0
- package/dist-types/src/columnsWithExtraTableConfigsAdders/addUuidColumnAsPrimaryKey.d.ts.map +1 -0
- package/dist-types/src/columnsWithExtraTableConfigsAdders/addUuidRequiredColumnWithFk.d.ts +4 -0
- package/dist-types/src/columnsWithExtraTableConfigsAdders/addUuidRequiredColumnWithFk.d.ts.map +1 -0
- package/dist-types/src/columnsWithExtraTableConfigsAdders/index.d.ts +17 -0
- package/dist-types/src/columnsWithExtraTableConfigsAdders/index.d.ts.map +1 -0
- package/dist-types/src/extraTableConfigsAdders/ForeignTableColumnGetter.d.ts +5 -0
- package/dist-types/src/extraTableConfigsAdders/ForeignTableColumnGetter.d.ts.map +1 -0
- package/dist-types/src/extraTableConfigsAdders/FunctionRequiringColumnsMap.d.ts +4 -0
- package/dist-types/src/extraTableConfigsAdders/FunctionRequiringColumnsMap.d.ts.map +1 -0
- package/dist-types/src/extraTableConfigsAdders/addCompositeFk.d.ts +4 -0
- package/dist-types/src/extraTableConfigsAdders/addCompositeFk.d.ts.map +1 -0
- package/dist-types/src/extraTableConfigsAdders/addCompositePrimaryKey.d.ts +3 -0
- package/dist-types/src/extraTableConfigsAdders/addCompositePrimaryKey.d.ts.map +1 -0
- package/dist-types/src/extraTableConfigsAdders/addExtraConfig.d.ts +6 -0
- package/dist-types/src/extraTableConfigsAdders/addExtraConfig.d.ts.map +1 -0
- package/dist-types/src/extraTableConfigsAdders/addFk.d.ts +4 -0
- package/dist-types/src/extraTableConfigsAdders/addFk.d.ts.map +1 -0
- package/dist-types/src/extraTableConfigsAdders/addPrimaryKey.d.ts +3 -0
- package/dist-types/src/extraTableConfigsAdders/addPrimaryKey.d.ts.map +1 -0
- package/dist-types/src/extraTableConfigsAdders/addUniqueConstraintWithIndex.d.ts +3 -0
- package/dist-types/src/extraTableConfigsAdders/addUniqueConstraintWithIndex.d.ts.map +1 -0
- package/dist-types/src/extraTableConfigsAdders/getCompressedIdentifierName.d.ts +2 -0
- package/dist-types/src/extraTableConfigsAdders/getCompressedIdentifierName.d.ts.map +1 -0
- package/dist-types/src/extraTableConfigsAdders/index.d.ts +10 -0
- package/dist-types/src/extraTableConfigsAdders/index.d.ts.map +1 -0
- package/dist-types/src/finalizePgTable.d.ts +130 -0
- package/dist-types/src/finalizePgTable.d.ts.map +1 -0
- package/dist-types/src/index.d.ts +6 -0
- package/dist-types/src/index.d.ts.map +1 -0
- package/dist-types/src/initPgTable.d.ts +3 -0
- package/dist-types/src/initPgTable.d.ts.map +1 -0
- package/index.ts +1 -0
- package/package.json +92 -0
- package/src/TableFuncArgs.ts +21 -0
- package/src/columnsAdders/AllowOnlyValidColumnMaps.ts +69 -0
- package/src/columnsAdders/FunctionExtendingColumnsMap.ts +24 -0
- package/src/columnsAdders/addColumn.ts +14 -0
- package/src/columnsAdders/addColumns.ts +18 -0
- package/src/columnsAdders/addHappenedAtDateColumns.ts +24 -0
- package/src/columnsAdders/addRequiredColumn.ts +20 -0
- package/src/columnsAdders/addRequiredColumns.ts +41 -0
- package/src/columnsAdders/addRequiredNameOrDescription.ts +14 -0
- package/src/columnsAdders/index.ts +9 -0
- package/src/columnsAdders/nonNullIdentity.ts +11 -0
- package/src/columnsWithExtraTableConfigsAdders/addAutoGeneratedGloballyUniqueOrderingColumn.ts +13 -0
- package/src/columnsWithExtraTableConfigsAdders/addBigint53IdColumnAsPrimaryKey.ts +30 -0
- package/src/columnsWithExtraTableConfigsAdders/addBigint53RequiredColumnWithFk.ts +21 -0
- package/src/columnsWithExtraTableConfigsAdders/addBigint53RequiredColumnsWithCompositeFk.ts +26 -0
- package/src/columnsWithExtraTableConfigsAdders/addBigint53RequiredColumnsWithCompositeFk1to1.ts +25 -0
- package/src/columnsWithExtraTableConfigsAdders/addColumnWithFk.ts +27 -0
- package/src/columnsWithExtraTableConfigsAdders/addColumnsOfTheSameTypeWithCompositeFk.ts +36 -0
- package/src/columnsWithExtraTableConfigsAdders/addColumnsOfTheSameTypeWithCompositeFk1to1.ts +23 -0
- package/src/columnsWithExtraTableConfigsAdders/addColumnsWithCompositeFk.ts +60 -0
- package/src/columnsWithExtraTableConfigsAdders/addIntegerIdColumnAsPrimaryKey.ts +27 -0
- package/src/columnsWithExtraTableConfigsAdders/addIntegerRequiredColumnWithFk.ts +21 -0
- package/src/columnsWithExtraTableConfigsAdders/addIntegerRequiredColumnsWithCompositeFk.ts +26 -0
- package/src/columnsWithExtraTableConfigsAdders/addIntegerRequiredColumnsWithCompositeFk1to1.ts +25 -0
- package/src/columnsWithExtraTableConfigsAdders/addTextRequiredColumnWithFk.ts +21 -0
- package/src/columnsWithExtraTableConfigsAdders/addUuidColumnAsPrimaryKey.ts +25 -0
- package/src/columnsWithExtraTableConfigsAdders/addUuidRequiredColumnWithFk.ts +21 -0
- package/src/columnsWithExtraTableConfigsAdders/index.ts +16 -0
- package/src/extraTableConfigsAdders/ForeignTableColumnGetter.ts +3 -0
- package/src/extraTableConfigsAdders/FunctionRequiringColumnsMap.ts +13 -0
- package/src/extraTableConfigsAdders/addCompositeFk.ts +47 -0
- package/src/extraTableConfigsAdders/addCompositePrimaryKey.ts +9 -0
- package/src/extraTableConfigsAdders/addExtraConfig.ts +21 -0
- package/src/extraTableConfigsAdders/addFk.ts +51 -0
- package/src/extraTableConfigsAdders/addPrimaryKey.ts +17 -0
- package/src/extraTableConfigsAdders/addUniqueConstraintWithIndex.ts +20 -0
- package/src/extraTableConfigsAdders/getCompressedIdentifierName.ts +24 -0
- package/src/extraTableConfigsAdders/index.ts +9 -0
- package/src/finalizePgTable.ts +22 -0
- package/src/index.ts +5 -0
- package/src/initPgTable.ts +5 -0
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import type { CamelCase } from 'type-fest';
|
|
2
|
+
import type { GeneralColumnMap } from './columnsAdders/AllowOnlyValidColumnMaps.ts';
|
|
3
|
+
import type { TableFuncArgs } from './TableFuncArgs.ts';
|
|
4
|
+
export declare const finalizePgTable: <const TTableName extends string, TColumnsMap extends GeneralColumnMap = GeneralColumnMap>(args: TableFuncArgs<TTableName, TColumnsMap>) => { [key in CamelCase<TTableName>]: import("drizzle-orm/pg-core").PgTableWithColumns<{
|
|
5
|
+
name: TTableName;
|
|
6
|
+
schema: undefined;
|
|
7
|
+
columns: { [Key in keyof TColumnsMap]: import("drizzle-orm/pg-core").PgColumn<{
|
|
8
|
+
name: (Omit<TColumnsMap[Key]["_"], "name"> & {
|
|
9
|
+
name: TColumnsMap[Key]["_"]["name"] extends "" ? import("drizzle-orm").Assume<Key, string> : TColumnsMap[Key]["_"]["name"];
|
|
10
|
+
})["name"];
|
|
11
|
+
tableName: TTableName;
|
|
12
|
+
dataType: (Omit<TColumnsMap[Key]["_"], "name"> & {
|
|
13
|
+
name: TColumnsMap[Key]["_"]["name"] extends "" ? import("drizzle-orm").Assume<Key, string> : TColumnsMap[Key]["_"]["name"];
|
|
14
|
+
})["dataType"];
|
|
15
|
+
columnType: (Omit<TColumnsMap[Key]["_"], "name"> & {
|
|
16
|
+
name: TColumnsMap[Key]["_"]["name"] extends "" ? import("drizzle-orm").Assume<Key, string> : TColumnsMap[Key]["_"]["name"];
|
|
17
|
+
})["columnType"];
|
|
18
|
+
data: Omit<TColumnsMap[Key]["_"], "name"> & {
|
|
19
|
+
name: TColumnsMap[Key]["_"]["name"] extends "" ? import("drizzle-orm").Assume<Key, string> : TColumnsMap[Key]["_"]["name"];
|
|
20
|
+
} extends infer T ? T extends Omit<TColumnsMap[Key]["_"], "name"> & {
|
|
21
|
+
name: TColumnsMap[Key]["_"]["name"] extends "" ? import("drizzle-orm").Assume<Key, string> : TColumnsMap[Key]["_"]["name"];
|
|
22
|
+
} ? T extends {
|
|
23
|
+
$type: infer U;
|
|
24
|
+
} ? U : T["data"] : never : never;
|
|
25
|
+
driverParam: (Omit<TColumnsMap[Key]["_"], "name"> & {
|
|
26
|
+
name: TColumnsMap[Key]["_"]["name"] extends "" ? import("drizzle-orm").Assume<Key, string> : TColumnsMap[Key]["_"]["name"];
|
|
27
|
+
})["driverParam"];
|
|
28
|
+
notNull: Omit<TColumnsMap[Key]["_"], "name"> & {
|
|
29
|
+
name: TColumnsMap[Key]["_"]["name"] extends "" ? import("drizzle-orm").Assume<Key, string> : TColumnsMap[Key]["_"]["name"];
|
|
30
|
+
} extends infer T_1 ? T_1 extends Omit<TColumnsMap[Key]["_"], "name"> & {
|
|
31
|
+
name: TColumnsMap[Key]["_"]["name"] extends "" ? import("drizzle-orm").Assume<Key, string> : TColumnsMap[Key]["_"]["name"];
|
|
32
|
+
} ? T_1 extends {
|
|
33
|
+
notNull: true;
|
|
34
|
+
} ? true : false : never : never;
|
|
35
|
+
hasDefault: Omit<TColumnsMap[Key]["_"], "name"> & {
|
|
36
|
+
name: TColumnsMap[Key]["_"]["name"] extends "" ? import("drizzle-orm").Assume<Key, string> : TColumnsMap[Key]["_"]["name"];
|
|
37
|
+
} extends infer T_2 ? T_2 extends Omit<TColumnsMap[Key]["_"], "name"> & {
|
|
38
|
+
name: TColumnsMap[Key]["_"]["name"] extends "" ? import("drizzle-orm").Assume<Key, string> : TColumnsMap[Key]["_"]["name"];
|
|
39
|
+
} ? T_2 extends {
|
|
40
|
+
hasDefault: true;
|
|
41
|
+
} ? true : false : never : never;
|
|
42
|
+
isPrimaryKey: Omit<TColumnsMap[Key]["_"], "name"> & {
|
|
43
|
+
name: TColumnsMap[Key]["_"]["name"] extends "" ? import("drizzle-orm").Assume<Key, string> : TColumnsMap[Key]["_"]["name"];
|
|
44
|
+
} extends infer T_3 ? T_3 extends Omit<TColumnsMap[Key]["_"], "name"> & {
|
|
45
|
+
name: TColumnsMap[Key]["_"]["name"] extends "" ? import("drizzle-orm").Assume<Key, string> : TColumnsMap[Key]["_"]["name"];
|
|
46
|
+
} ? T_3 extends {
|
|
47
|
+
isPrimaryKey: true;
|
|
48
|
+
} ? true : false : never : never;
|
|
49
|
+
isAutoincrement: Omit<TColumnsMap[Key]["_"], "name"> & {
|
|
50
|
+
name: TColumnsMap[Key]["_"]["name"] extends "" ? import("drizzle-orm").Assume<Key, string> : TColumnsMap[Key]["_"]["name"];
|
|
51
|
+
} extends infer T_4 ? T_4 extends Omit<TColumnsMap[Key]["_"], "name"> & {
|
|
52
|
+
name: TColumnsMap[Key]["_"]["name"] extends "" ? import("drizzle-orm").Assume<Key, string> : TColumnsMap[Key]["_"]["name"];
|
|
53
|
+
} ? T_4 extends {
|
|
54
|
+
isAutoincrement: true;
|
|
55
|
+
} ? true : false : never : never;
|
|
56
|
+
hasRuntimeDefault: Omit<TColumnsMap[Key]["_"], "name"> & {
|
|
57
|
+
name: TColumnsMap[Key]["_"]["name"] extends "" ? import("drizzle-orm").Assume<Key, string> : TColumnsMap[Key]["_"]["name"];
|
|
58
|
+
} extends infer T_5 ? T_5 extends Omit<TColumnsMap[Key]["_"], "name"> & {
|
|
59
|
+
name: TColumnsMap[Key]["_"]["name"] extends "" ? import("drizzle-orm").Assume<Key, string> : TColumnsMap[Key]["_"]["name"];
|
|
60
|
+
} ? T_5 extends {
|
|
61
|
+
hasRuntimeDefault: true;
|
|
62
|
+
} ? true : false : never : never;
|
|
63
|
+
enumValues: (Omit<TColumnsMap[Key]["_"], "name"> & {
|
|
64
|
+
name: TColumnsMap[Key]["_"]["name"] extends "" ? import("drizzle-orm").Assume<Key, string> : TColumnsMap[Key]["_"]["name"];
|
|
65
|
+
})["enumValues"];
|
|
66
|
+
baseColumn: Omit<TColumnsMap[Key]["_"], "name"> & {
|
|
67
|
+
name: TColumnsMap[Key]["_"]["name"] extends "" ? import("drizzle-orm").Assume<Key, string> : TColumnsMap[Key]["_"]["name"];
|
|
68
|
+
} extends infer T_6 ? T_6 extends Omit<TColumnsMap[Key]["_"], "name"> & {
|
|
69
|
+
name: TColumnsMap[Key]["_"]["name"] extends "" ? import("drizzle-orm").Assume<Key, string> : TColumnsMap[Key]["_"]["name"];
|
|
70
|
+
} ? T_6 extends {
|
|
71
|
+
baseBuilder: infer U_1 extends import("drizzle-orm").ColumnBuilderBase;
|
|
72
|
+
} ? import("drizzle-orm").Column<{
|
|
73
|
+
name: U_1["_"]["name"];
|
|
74
|
+
tableName: TTableName;
|
|
75
|
+
dataType: U_1["_"]["dataType"];
|
|
76
|
+
columnType: U_1["_"]["columnType"];
|
|
77
|
+
data: U_1["_"] extends infer T_7 ? T_7 extends U_1["_"] ? T_7 extends {
|
|
78
|
+
$type: infer U;
|
|
79
|
+
} ? U : T_7["data"] : never : never;
|
|
80
|
+
driverParam: U_1["_"]["driverParam"];
|
|
81
|
+
notNull: U_1["_"] extends infer T_8 ? T_8 extends U_1["_"] ? T_8 extends {
|
|
82
|
+
notNull: true;
|
|
83
|
+
} ? true : false : never : never;
|
|
84
|
+
hasDefault: U_1["_"] extends infer T_9 ? T_9 extends U_1["_"] ? T_9 extends {
|
|
85
|
+
hasDefault: true;
|
|
86
|
+
} ? true : false : never : never;
|
|
87
|
+
isPrimaryKey: U_1["_"] extends infer T_10 ? T_10 extends U_1["_"] ? T_10 extends {
|
|
88
|
+
isPrimaryKey: true;
|
|
89
|
+
} ? true : false : never : never;
|
|
90
|
+
isAutoincrement: U_1["_"] extends infer T_11 ? T_11 extends U_1["_"] ? T_11 extends {
|
|
91
|
+
isAutoincrement: true;
|
|
92
|
+
} ? true : false : never : never;
|
|
93
|
+
hasRuntimeDefault: U_1["_"] extends infer T_12 ? T_12 extends U_1["_"] ? T_12 extends {
|
|
94
|
+
hasRuntimeDefault: true;
|
|
95
|
+
} ? true : false : never : never;
|
|
96
|
+
enumValues: U_1["_"]["enumValues"];
|
|
97
|
+
baseColumn: U_1["_"] extends infer T_13 ? T_13 extends U_1["_"] ? T_13 extends {
|
|
98
|
+
baseBuilder: infer U_1 extends import("drizzle-orm").ColumnBuilderBase;
|
|
99
|
+
} ? import("drizzle-orm").Column</*elided*/ any, {}, Omit<U_1["_"], "brand" | "name" | "dataType" | "columnType" | "data" | "driverParam" | "notNull" | "hasDefault" | "enumValues" | "identity" | "generated" | "dialect" | "tableName" | "isPrimaryKey" | "isAutoincrement" | "hasRuntimeDefault" | "baseColumn"> extends infer T_14 ? { [K in keyof T_14]: T_14[K]; } : never> : never : never : never;
|
|
100
|
+
identity: U_1["_"] extends infer T_15 ? T_15 extends U_1["_"] ? T_15 extends {
|
|
101
|
+
identity: "always";
|
|
102
|
+
} ? "always" : T_15 extends {
|
|
103
|
+
identity: "byDefault";
|
|
104
|
+
} ? "byDefault" : undefined : never : never;
|
|
105
|
+
generated: U_1["_"] extends infer T_16 ? T_16 extends U_1["_"] ? T_16 extends {
|
|
106
|
+
generated: infer G;
|
|
107
|
+
} ? unknown extends G ? undefined : G extends undefined ? undefined : G : undefined : never : never;
|
|
108
|
+
}, {}, Omit<U_1["_"], "brand" | "name" | "dataType" | "columnType" | "data" | "driverParam" | "notNull" | "hasDefault" | "enumValues" | "identity" | "generated" | "dialect" | "tableName" | "isPrimaryKey" | "isAutoincrement" | "hasRuntimeDefault" | "baseColumn"> extends infer T_17 ? { [K in keyof T_17]: T_17[K]; } : never> : never : never : never;
|
|
109
|
+
identity: Omit<TColumnsMap[Key]["_"], "name"> & {
|
|
110
|
+
name: TColumnsMap[Key]["_"]["name"] extends "" ? import("drizzle-orm").Assume<Key, string> : TColumnsMap[Key]["_"]["name"];
|
|
111
|
+
} extends infer T_18 ? T_18 extends Omit<TColumnsMap[Key]["_"], "name"> & {
|
|
112
|
+
name: TColumnsMap[Key]["_"]["name"] extends "" ? import("drizzle-orm").Assume<Key, string> : TColumnsMap[Key]["_"]["name"];
|
|
113
|
+
} ? T_18 extends {
|
|
114
|
+
identity: "always";
|
|
115
|
+
} ? "always" : T_18 extends {
|
|
116
|
+
identity: "byDefault";
|
|
117
|
+
} ? "byDefault" : undefined : never : never;
|
|
118
|
+
generated: Omit<TColumnsMap[Key]["_"], "name"> & {
|
|
119
|
+
name: TColumnsMap[Key]["_"]["name"] extends "" ? import("drizzle-orm").Assume<Key, string> : TColumnsMap[Key]["_"]["name"];
|
|
120
|
+
} extends infer T_19 ? T_19 extends Omit<TColumnsMap[Key]["_"], "name"> & {
|
|
121
|
+
name: TColumnsMap[Key]["_"]["name"] extends "" ? import("drizzle-orm").Assume<Key, string> : TColumnsMap[Key]["_"]["name"];
|
|
122
|
+
} ? T_19 extends {
|
|
123
|
+
generated: infer G;
|
|
124
|
+
} ? unknown extends G ? undefined : G extends undefined ? undefined : G : undefined : never : never;
|
|
125
|
+
}, {}, Omit<Omit<TColumnsMap[Key]["_"], "name"> & {
|
|
126
|
+
name: TColumnsMap[Key]["_"]["name"] extends "" ? import("drizzle-orm").Assume<Key, string> : TColumnsMap[Key]["_"]["name"];
|
|
127
|
+
}, "brand" | "name" | "dataType" | "columnType" | "data" | "driverParam" | "notNull" | "hasDefault" | "enumValues" | "identity" | "generated" | "dialect" | "tableName" | "isPrimaryKey" | "isAutoincrement" | "hasRuntimeDefault" | "baseColumn"> extends infer T_20 ? { [K_1 in keyof T_20]: T_20[K_1]; } : never>; };
|
|
128
|
+
dialect: "pg";
|
|
129
|
+
}>; };
|
|
130
|
+
//# sourceMappingURL=finalizePgTable.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"finalizePgTable.d.ts","sourceRoot":"","sources":["../../src/finalizePgTable.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAE1C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6CAA6C,CAAA;AACnF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAEvD,eAAO,MAAM,eAAe,GAC1B,KAAK,CAAC,UAAU,SAAS,MAAM,EAC/B,WAAW,SAAS,gBAAgB,GAAG,gBAAgB,EAEvD,MAAM,aAAa,CAAC,UAAU,EAAE,WAAW,CAAC,KAOV,GAC/B,GAAG,yBAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAErB,CAAA"}
|
|
@@ -0,0 +1,6 @@
|
|
|
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';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAA;AACxC,cAAc,+CAA+C,CAAA;AAC7D,cAAc,oCAAoC,CAAA;AAClD,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"initPgTable.d.ts","sourceRoot":"","sources":["../../src/initPgTable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAEvD,eAAO,MAAM,WAAW,GAAI,KAAK,CAAC,UAAU,SAAS,MAAM,EACzD,oBAAoB,UAAU,KAC7B,aAAa,CAAC,UAAU,EAAE,EAAE,CAAuC,CAAA"}
|
package/index.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './src/index.ts'
|
package/package.json
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "drizzle-fp",
|
|
3
|
+
"type": "module",
|
|
4
|
+
"version": "0.1.0",
|
|
5
|
+
"description": "Write drizzle table declarations in functional style, and make reusable table parts easily",
|
|
6
|
+
"devDependencies": {
|
|
7
|
+
"@effect/language-service": "^0.86.2",
|
|
8
|
+
"@evadev/tsconfig": "^1.0.1",
|
|
9
|
+
"@types/pg": "^8.15.6",
|
|
10
|
+
"ts-namespace-import": "nounder/ts-namespace-import",
|
|
11
|
+
"ts-patch": "^4.0.1",
|
|
12
|
+
"typescript": "^6.0.3"
|
|
13
|
+
},
|
|
14
|
+
"peerDependencies": {
|
|
15
|
+
"effect": "^3.19.16"
|
|
16
|
+
},
|
|
17
|
+
"dependencies": {
|
|
18
|
+
"@nevware21/ts-utils": "^0.14.0",
|
|
19
|
+
"drizzle-orm": "^0.45.0",
|
|
20
|
+
"pg": "^8.21.0",
|
|
21
|
+
"type-fest": "^5.4.4"
|
|
22
|
+
},
|
|
23
|
+
"homepage": "https://github.com/nikelborm/effect-garden/tree/main/packages/drizzle-fp#readme",
|
|
24
|
+
"bugs": {
|
|
25
|
+
"url": "https://github.com/nikelborm/effect-garden/issues",
|
|
26
|
+
"email": "evadev@duck.com"
|
|
27
|
+
},
|
|
28
|
+
"repository": {
|
|
29
|
+
"type": "git",
|
|
30
|
+
"url": "git+ssh://git@github.com/nikelborm/effect-garden.git",
|
|
31
|
+
"directory": "packages/drizzle-fp"
|
|
32
|
+
},
|
|
33
|
+
"scripts": {
|
|
34
|
+
"build": "tspc",
|
|
35
|
+
"dev": "tspc --watch"
|
|
36
|
+
},
|
|
37
|
+
"author": {
|
|
38
|
+
"name": "nikelborm",
|
|
39
|
+
"email": "evadev@duck.com",
|
|
40
|
+
"url": "https://github.com/nikelborm"
|
|
41
|
+
},
|
|
42
|
+
"contributors": [
|
|
43
|
+
{
|
|
44
|
+
"name": "nikelborm",
|
|
45
|
+
"email": "evadev@duck.com",
|
|
46
|
+
"url": "https://github.com/nikelborm"
|
|
47
|
+
}
|
|
48
|
+
],
|
|
49
|
+
"maintainers": [
|
|
50
|
+
{
|
|
51
|
+
"name": "nikelborm",
|
|
52
|
+
"email": "evadev@duck.com",
|
|
53
|
+
"url": "https://github.com/nikelborm"
|
|
54
|
+
}
|
|
55
|
+
],
|
|
56
|
+
"license": "MIT",
|
|
57
|
+
"private": false,
|
|
58
|
+
"publishConfig": {
|
|
59
|
+
"access": "public",
|
|
60
|
+
"provenance": false
|
|
61
|
+
},
|
|
62
|
+
"exports": {
|
|
63
|
+
".": {
|
|
64
|
+
"types": "./dist-types/index.d.ts",
|
|
65
|
+
"default": "./dist/index.js"
|
|
66
|
+
},
|
|
67
|
+
"./*.js": {
|
|
68
|
+
"types": "./dist-types/src/*.d.ts",
|
|
69
|
+
"default": "./dist/src/*.js"
|
|
70
|
+
},
|
|
71
|
+
"./*.ts": "./src/*.ts",
|
|
72
|
+
"./*": {
|
|
73
|
+
"types": "./dist-types/src/*.d.ts",
|
|
74
|
+
"default": "./dist/src/*.js"
|
|
75
|
+
},
|
|
76
|
+
"./internal/*": null,
|
|
77
|
+
"./package.json": "./package.json"
|
|
78
|
+
},
|
|
79
|
+
"main": "./dist/index.js",
|
|
80
|
+
"module": "./dist/index.js",
|
|
81
|
+
"types": "./dist-types/index.d.ts",
|
|
82
|
+
"files": [
|
|
83
|
+
"dist-types",
|
|
84
|
+
"dist",
|
|
85
|
+
"index.ts",
|
|
86
|
+
"package.json",
|
|
87
|
+
"src",
|
|
88
|
+
"!**/*.spec.*",
|
|
89
|
+
"!**/*.tsbuildinfo",
|
|
90
|
+
"!**/scratchpad.*"
|
|
91
|
+
]
|
|
92
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { BuildIndexColumn } from 'drizzle-orm'
|
|
2
|
+
import type { PgTableExtraConfigValue } from 'drizzle-orm/pg-core'
|
|
3
|
+
|
|
4
|
+
import type { GeneralColumnMap } from './columnsAdders/index.ts'
|
|
5
|
+
|
|
6
|
+
export type TableFuncArgs<
|
|
7
|
+
TTableName extends string,
|
|
8
|
+
TColumnsMap extends GeneralColumnMap = GeneralColumnMap,
|
|
9
|
+
> = [
|
|
10
|
+
name: TTableName,
|
|
11
|
+
columns: TColumnsMap,
|
|
12
|
+
extraConfig: (
|
|
13
|
+
table: RemapToTableArgumentOfExtraConfigRenderer<TColumnsMap>,
|
|
14
|
+
) => PgTableExtraConfigValue[],
|
|
15
|
+
]
|
|
16
|
+
|
|
17
|
+
export type RemapToTableArgumentOfExtraConfigRenderer<
|
|
18
|
+
TColumnsMap extends GeneralColumnMap = GeneralColumnMap,
|
|
19
|
+
> = {
|
|
20
|
+
[Key in keyof TColumnsMap]: BuildIndexColumn<'pg'>
|
|
21
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import type { PgColumnBuilderBase } from 'drizzle-orm/pg-core'
|
|
2
|
+
|
|
3
|
+
const ErrorMessageBrand = Symbol()
|
|
4
|
+
|
|
5
|
+
export type ErrMsg<Message extends string, Context = any> = {
|
|
6
|
+
message: Message
|
|
7
|
+
brand: typeof ErrorMessageBrand
|
|
8
|
+
context: Context
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export type ColumnMap<Keys extends string> = Record<Keys, PgColumnBuilderBase>
|
|
12
|
+
export type GeneralColumnMap = ColumnMap<string>
|
|
13
|
+
|
|
14
|
+
// TODO: make all validation sound with runtime execution
|
|
15
|
+
|
|
16
|
+
export type AllowOnlyNonEmptyObjectsWithActualKeys<
|
|
17
|
+
ValueToValidate,
|
|
18
|
+
ExpectedRecordValue = any,
|
|
19
|
+
> = [
|
|
20
|
+
AllowOnlyNonEmptyLiteralStringKeys<AllowOnlyNonEmptyObjects<ValueToValidate>>,
|
|
21
|
+
] extends [infer U extends ErrMsg<string>]
|
|
22
|
+
? U
|
|
23
|
+
: Record<string, ExpectedRecordValue>
|
|
24
|
+
|
|
25
|
+
type AllowOnlyNonEmptyLiteralStringKeys<ValueToValidate> =
|
|
26
|
+
ForbidEmptyStringKeys<
|
|
27
|
+
ForbidNonLiteralStringKeys<ForbidNonStringKeys<ValueToValidate>>
|
|
28
|
+
>
|
|
29
|
+
|
|
30
|
+
type AllowOnlyNonEmptyObjects<ValueToValidate> = ForbidNonEmptyObject<
|
|
31
|
+
ForbidNonObjects<ValueToValidate>
|
|
32
|
+
>
|
|
33
|
+
|
|
34
|
+
type ForbidNonEmptyObject<ValueToValidate> = keyof ValueToValidate extends never
|
|
35
|
+
? ErrMsg<'Cannot be empty object', ValueToValidate>
|
|
36
|
+
: ValueToValidate
|
|
37
|
+
|
|
38
|
+
type ForbidNonLiteralStringKeys<ValueToValidate> =
|
|
39
|
+
string extends keyof ValueToValidate
|
|
40
|
+
? ErrMsg<
|
|
41
|
+
'Object parameter keys cannot be general strings, they should be specific string literals',
|
|
42
|
+
ValueToValidate
|
|
43
|
+
>
|
|
44
|
+
: ValueToValidate
|
|
45
|
+
|
|
46
|
+
type ForbidNonObjects<ValueToValidate> = [ValueToValidate] extends [
|
|
47
|
+
Record<symbol | string | number, any>,
|
|
48
|
+
]
|
|
49
|
+
? ValueToValidate
|
|
50
|
+
: ErrMsg<'Should be an object', ValueToValidate>
|
|
51
|
+
|
|
52
|
+
type ForbidEmptyStringKeys<ValueToValidate> = keyof ValueToValidate extends ''
|
|
53
|
+
? ErrMsg<'Object parameter keys cannot be empty string, ValueToValidate'>
|
|
54
|
+
: ValueToValidate
|
|
55
|
+
|
|
56
|
+
type ForbidNonStringKeys<ValueToValidate> = keyof ValueToValidate extends
|
|
57
|
+
| number
|
|
58
|
+
| symbol
|
|
59
|
+
| boolean
|
|
60
|
+
| undefined
|
|
61
|
+
| null
|
|
62
|
+
? ErrMsg<
|
|
63
|
+
'Object parameter keys should be only strings and only literals, and not number, symbol, boolean, undefined or null',
|
|
64
|
+
ValueToValidate
|
|
65
|
+
>
|
|
66
|
+
: ValueToValidate
|
|
67
|
+
|
|
68
|
+
export type AllowOnlyValidColumnMaps<T> =
|
|
69
|
+
AllowOnlyNonEmptyObjectsWithActualKeys<T, PgColumnBuilderBase>
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { TableFuncArgs } from '../TableFuncArgs.ts'
|
|
2
|
+
import type {
|
|
3
|
+
AllowOnlyValidColumnMaps,
|
|
4
|
+
ErrMsg,
|
|
5
|
+
GeneralColumnMap,
|
|
6
|
+
} from './AllowOnlyValidColumnMaps.ts'
|
|
7
|
+
|
|
8
|
+
export type FunctionExtendingColumnsMap<TAdditionalColumnsMap> =
|
|
9
|
+
SwitchEitherToNeverOrToValueOnError<
|
|
10
|
+
AllowOnlyValidColumnMaps<TAdditionalColumnsMap>,
|
|
11
|
+
<
|
|
12
|
+
const TTableName extends string,
|
|
13
|
+
TColumnsMap extends GeneralColumnMap = GeneralColumnMap,
|
|
14
|
+
>([snakeCaseTableName, options, extraConfig]: TableFuncArgs<
|
|
15
|
+
TTableName,
|
|
16
|
+
TColumnsMap
|
|
17
|
+
>) => TableFuncArgs<TTableName, TAdditionalColumnsMap & TColumnsMap>
|
|
18
|
+
>
|
|
19
|
+
|
|
20
|
+
type SwitchEitherToNeverOrToValueOnError<ValueToValidate, SuccessValue> = [
|
|
21
|
+
ValueToValidate,
|
|
22
|
+
] extends [ErrMsg<string>]
|
|
23
|
+
? never
|
|
24
|
+
: SuccessValue
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { PgColumnBuilderBase } from 'drizzle-orm/pg-core'
|
|
2
|
+
|
|
3
|
+
import { addColumns } from './addColumns.ts'
|
|
4
|
+
import type { FunctionExtendingColumnsMap } from './FunctionExtendingColumnsMap.ts'
|
|
5
|
+
|
|
6
|
+
export const addColumn = <
|
|
7
|
+
const NameOfColumnInCurrentTable extends string,
|
|
8
|
+
ColumnBuilder extends PgColumnBuilderBase,
|
|
9
|
+
>(
|
|
10
|
+
nameOfColumnInCurrentTable: NameOfColumnInCurrentTable,
|
|
11
|
+
buildColumn: () => ColumnBuilder,
|
|
12
|
+
): FunctionExtendingColumnsMap<{
|
|
13
|
+
[Key in NameOfColumnInCurrentTable]: ColumnBuilder
|
|
14
|
+
}> => addColumns(() => ({ [nameOfColumnInCurrentTable]: buildColumn() }) as any)
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { AllowOnlyValidColumnMaps } from './AllowOnlyValidColumnMaps.ts'
|
|
2
|
+
import type { FunctionExtendingColumnsMap } from './FunctionExtendingColumnsMap.ts'
|
|
3
|
+
|
|
4
|
+
export const addColumns = <
|
|
5
|
+
TAdditionalColumnsMap extends [TAdditionalColumnsMap] extends [infer U]
|
|
6
|
+
? AllowOnlyValidColumnMaps<U>
|
|
7
|
+
: never,
|
|
8
|
+
>(
|
|
9
|
+
getAdditionalColumnMap: () => TAdditionalColumnsMap,
|
|
10
|
+
): FunctionExtendingColumnsMap<TAdditionalColumnsMap> =>
|
|
11
|
+
(([snakeCaseTableName, options, extraConfig]) => [
|
|
12
|
+
snakeCaseTableName,
|
|
13
|
+
{
|
|
14
|
+
...options,
|
|
15
|
+
...(getAdditionalColumnMap() as any),
|
|
16
|
+
},
|
|
17
|
+
table => extraConfig(table),
|
|
18
|
+
]) as FunctionExtendingColumnsMap<TAdditionalColumnsMap>
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { timestamp } from 'drizzle-orm/pg-core'
|
|
2
|
+
|
|
3
|
+
import { flow } from 'effect/Function'
|
|
4
|
+
|
|
5
|
+
import { addColumn } from './addColumn.ts'
|
|
6
|
+
|
|
7
|
+
const addHappenedAtDateColumn = <const TColumnName extends string>(
|
|
8
|
+
name: TColumnName,
|
|
9
|
+
) =>
|
|
10
|
+
addColumn(name, () =>
|
|
11
|
+
timestamp({
|
|
12
|
+
withTimezone: true,
|
|
13
|
+
mode: 'string',
|
|
14
|
+
})
|
|
15
|
+
.defaultNow()
|
|
16
|
+
.notNull(),
|
|
17
|
+
)
|
|
18
|
+
|
|
19
|
+
export const addCreatedAtDateColumn = addHappenedAtDateColumn('createdAt')
|
|
20
|
+
|
|
21
|
+
export const addCreatedAndUpdatedDateColumns = flow(
|
|
22
|
+
addCreatedAtDateColumn,
|
|
23
|
+
addHappenedAtDateColumn('updatedAt'),
|
|
24
|
+
)
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { NotNull } from 'drizzle-orm'
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
addRequiredColumns,
|
|
5
|
+
type ColumnBuilderWithNotNullMethod,
|
|
6
|
+
} from './addRequiredColumns.ts'
|
|
7
|
+
import type { FunctionExtendingColumnsMap } from './FunctionExtendingColumnsMap.ts'
|
|
8
|
+
|
|
9
|
+
export const addRequiredColumn = <
|
|
10
|
+
const NameOfColumnInCurrentTable extends string,
|
|
11
|
+
ColumnBuilder extends ColumnBuilderWithNotNullMethod,
|
|
12
|
+
>(
|
|
13
|
+
nameOfColumnInCurrentTable: NameOfColumnInCurrentTable,
|
|
14
|
+
buildColumn: () => ColumnBuilder,
|
|
15
|
+
): FunctionExtendingColumnsMap<{
|
|
16
|
+
[Key in NameOfColumnInCurrentTable]: NotNull<ColumnBuilder>
|
|
17
|
+
}> =>
|
|
18
|
+
addRequiredColumns(
|
|
19
|
+
() => ({ [nameOfColumnInCurrentTable]: buildColumn() }) as any,
|
|
20
|
+
)
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { NotNull } from 'drizzle-orm'
|
|
2
|
+
import type { PgColumnBuilderBase } from 'drizzle-orm/pg-core'
|
|
3
|
+
|
|
4
|
+
import type { AllowOnlyNonEmptyObjectsWithActualKeys } from './AllowOnlyValidColumnMaps.ts'
|
|
5
|
+
import { addColumns } from './addColumns.ts'
|
|
6
|
+
import type { FunctionExtendingColumnsMap } from './FunctionExtendingColumnsMap.ts'
|
|
7
|
+
|
|
8
|
+
export const addRequiredColumns = <
|
|
9
|
+
const TAdditionalColumnsMap extends [TAdditionalColumnsMap] extends [infer U]
|
|
10
|
+
? AllowOnlyNonEmptyObjectsWithActualKeys<U, ColumnBuilderWithNotNullMethod>
|
|
11
|
+
: never,
|
|
12
|
+
>(
|
|
13
|
+
getAdditionalColumnMap: () => TAdditionalColumnsMap,
|
|
14
|
+
): BuiltRequiredColumnsAdder<TAdditionalColumnsMap> =>
|
|
15
|
+
addColumns(
|
|
16
|
+
() =>
|
|
17
|
+
Object.fromEntries(
|
|
18
|
+
Object.entries(
|
|
19
|
+
getAdditionalColumnMap() as unknown as Record<
|
|
20
|
+
string,
|
|
21
|
+
ColumnBuilderWithNotNullMethod
|
|
22
|
+
>,
|
|
23
|
+
).map(([ownColumnName, currentColumnBuilder]) => [
|
|
24
|
+
ownColumnName,
|
|
25
|
+
currentColumnBuilder.notNull(),
|
|
26
|
+
]),
|
|
27
|
+
) as any,
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
type BuiltRequiredColumnsAdder<TAdditionalColumnsMap> =
|
|
31
|
+
FunctionExtendingColumnsMap<MakeColumnsInMapNotNull<TAdditionalColumnsMap>>
|
|
32
|
+
|
|
33
|
+
type MakeColumnsInMapNotNull<TColumnsMap> = {
|
|
34
|
+
[ColumnName in keyof TColumnsMap]: TColumnsMap[ColumnName] extends PgColumnBuilderBase
|
|
35
|
+
? NotNull<TColumnsMap[ColumnName]>
|
|
36
|
+
: never
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export type ColumnBuilderWithNotNullMethod = PgColumnBuilderBase & {
|
|
40
|
+
notNull: () => NotNull<PgColumnBuilderBase>
|
|
41
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { varchar } from 'drizzle-orm/pg-core'
|
|
2
|
+
|
|
3
|
+
import { flow } from 'effect/Function'
|
|
4
|
+
|
|
5
|
+
import { addColumn } from './addColumn.ts'
|
|
6
|
+
import { addRequiredColumn } from './addRequiredColumn.ts'
|
|
7
|
+
|
|
8
|
+
export const addRequiredName = addRequiredColumn('name', varchar)
|
|
9
|
+
export const addOptionalDescription = addColumn('description', varchar)
|
|
10
|
+
|
|
11
|
+
export const addRequiredNameWithOptionalDescription = flow(
|
|
12
|
+
addRequiredName,
|
|
13
|
+
addOptionalDescription,
|
|
14
|
+
)
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export * from './AllowOnlyValidColumnMaps.ts'
|
|
2
|
+
export * from './addColumn.ts'
|
|
3
|
+
export * from './addColumns.ts'
|
|
4
|
+
export * from './addHappenedAtDateColumns.ts'
|
|
5
|
+
export * from './addRequiredColumn.ts'
|
|
6
|
+
export * from './addRequiredColumns.ts'
|
|
7
|
+
export * from './addRequiredNameOrDescription.ts'
|
|
8
|
+
export * from './FunctionExtendingColumnsMap.ts'
|
|
9
|
+
export * from './nonNullIdentity.ts'
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { bigint, integer, text, uuid } from 'drizzle-orm/pg-core'
|
|
2
|
+
|
|
3
|
+
export const nonNullInteger = () => integer().notNull()
|
|
4
|
+
export const nonNullBigint53 = () => bigint({ mode: 'number' }).notNull()
|
|
5
|
+
export const nonNullUuid = () => uuid().notNull()
|
|
6
|
+
export const nonNullText = () => text().notNull()
|
|
7
|
+
|
|
8
|
+
export type NonNullInteger = ReturnType<typeof nonNullInteger>
|
|
9
|
+
export type NonNullBigint53 = ReturnType<typeof nonNullBigint53>
|
|
10
|
+
export type NonNullUUID = ReturnType<typeof nonNullUuid>
|
|
11
|
+
export type NonNullText = ReturnType<typeof nonNullText>
|
package/src/columnsWithExtraTableConfigsAdders/addAutoGeneratedGloballyUniqueOrderingColumn.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { serial } from 'drizzle-orm/pg-core'
|
|
2
|
+
|
|
3
|
+
import { flow } from 'effect/Function'
|
|
4
|
+
|
|
5
|
+
import { addRequiredColumn } from '../columnsAdders/index.ts'
|
|
6
|
+
import { addUniqueConstraintWithIndex } from '../extraTableConfigsAdders/index.ts'
|
|
7
|
+
|
|
8
|
+
// TODO: Add also Bigint53 version
|
|
9
|
+
|
|
10
|
+
export const addAutoGeneratedGloballyUniqueOrderingColumn = flow(
|
|
11
|
+
addRequiredColumn('order', serial),
|
|
12
|
+
addUniqueConstraintWithIndex('order'),
|
|
13
|
+
)
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { IsIdentity, NotNull } from 'drizzle-orm'
|
|
2
|
+
import type { PgBigInt53BuilderInitial } from 'drizzle-orm/pg-core'
|
|
3
|
+
import { bigint } from 'drizzle-orm/pg-core'
|
|
4
|
+
|
|
5
|
+
import { pipe } from 'effect/Function'
|
|
6
|
+
|
|
7
|
+
import { addColumn, type GeneralColumnMap } from '../columnsAdders/index.ts'
|
|
8
|
+
import { addPrimaryKey } from '../extraTableConfigsAdders/index.ts'
|
|
9
|
+
import type { TableFuncArgs } from '../TableFuncArgs.ts'
|
|
10
|
+
|
|
11
|
+
export const addBigint53IdColumnAsPrimaryKey = <
|
|
12
|
+
const TTableName extends string,
|
|
13
|
+
TColumnsMap extends GeneralColumnMap,
|
|
14
|
+
>(
|
|
15
|
+
args: TableFuncArgs<TTableName, TColumnsMap>,
|
|
16
|
+
): TableFuncArgs<
|
|
17
|
+
TTableName,
|
|
18
|
+
TColumnsMap & { id: PgBigint53GeneratedAlwaysAsIdentity<TTableName> }
|
|
19
|
+
> =>
|
|
20
|
+
pipe(
|
|
21
|
+
addColumn('id', () =>
|
|
22
|
+
bigint(`${args[0]}_id`, {
|
|
23
|
+
mode: 'number',
|
|
24
|
+
}).generatedAlwaysAsIdentity(),
|
|
25
|
+
)(args),
|
|
26
|
+
addPrimaryKey('id'),
|
|
27
|
+
)
|
|
28
|
+
|
|
29
|
+
type PgBigint53GeneratedAlwaysAsIdentity<TTableName extends string> =
|
|
30
|
+
IsIdentity<NotNull<PgBigInt53BuilderInitial<`${TTableName}_id`>>, 'always'>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import {
|
|
2
|
+
type FunctionExtendingColumnsMap,
|
|
3
|
+
type NonNullBigint53,
|
|
4
|
+
nonNullBigint53,
|
|
5
|
+
} from '../columnsAdders/index.ts'
|
|
6
|
+
import type { ForeignTableColumnGetter } from '../extraTableConfigsAdders/index.ts'
|
|
7
|
+
import { addColumnWithFk } from './addColumnWithFk.ts'
|
|
8
|
+
|
|
9
|
+
export const addBigint53RequiredColumnWithFk = <
|
|
10
|
+
const NameOfColumnInCurrentTable extends string,
|
|
11
|
+
>(
|
|
12
|
+
nameOfColumnInCurrentTable: NameOfColumnInCurrentTable,
|
|
13
|
+
getColumnOfForeignTable: ForeignTableColumnGetter,
|
|
14
|
+
): FunctionExtendingColumnsMap<
|
|
15
|
+
Record<NameOfColumnInCurrentTable, NonNullBigint53>
|
|
16
|
+
> =>
|
|
17
|
+
addColumnWithFk(
|
|
18
|
+
nameOfColumnInCurrentTable,
|
|
19
|
+
nonNullBigint53,
|
|
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 NonNullBigint53,
|
|
7
|
+
nonNullBigint53,
|
|
8
|
+
} from '../columnsAdders/index.ts'
|
|
9
|
+
import { addColumnsOfTheSameTypeWithCompositeFk } from './addColumnsOfTheSameTypeWithCompositeFk.ts'
|
|
10
|
+
|
|
11
|
+
export const addBigint53RequiredColumnsWithCompositeFk = <
|
|
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>, NonNullBigint53>
|
|
21
|
+
> =>
|
|
22
|
+
addColumnsOfTheSameTypeWithCompositeFk(
|
|
23
|
+
getForeignTable,
|
|
24
|
+
nonNullBigint53,
|
|
25
|
+
fkConfig,
|
|
26
|
+
)
|
package/src/columnsWithExtraTableConfigsAdders/addBigint53RequiredColumnsWithCompositeFk1to1.ts
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { AnyPgTable } from 'drizzle-orm/pg-core'
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
type FunctionExtendingColumnsMap,
|
|
5
|
+
type NonNullBigint53,
|
|
6
|
+
nonNullBigint53,
|
|
7
|
+
} from '../columnsAdders/index.ts'
|
|
8
|
+
import { addColumnsOfTheSameTypeWithCompositeFk1to1 } from './addColumnsOfTheSameTypeWithCompositeFk1to1.ts'
|
|
9
|
+
|
|
10
|
+
export const addBigint53RequiredColumnsWithCompositeFk1to1 = <
|
|
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], NonNullBigint53>> =>
|
|
21
|
+
addColumnsOfTheSameTypeWithCompositeFk1to1(
|
|
22
|
+
getForeignTable,
|
|
23
|
+
nonNullBigint53,
|
|
24
|
+
fkConfig,
|
|
25
|
+
)
|