@fragno-dev/db 0.0.1
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/.turbo/turbo-build.log +17 -0
- package/.turbo/turbo-types$colon$check.log +1 -0
- package/README.md +13 -0
- package/dist/cuid.js +3 -0
- package/dist/mod.d.ts +5 -0
- package/dist/mod.d.ts.map +1 -0
- package/dist/mod.js +6 -0
- package/dist/mod.js.map +1 -0
- package/dist/schema/create.d.ts +282 -0
- package/dist/schema/create.d.ts.map +1 -0
- package/dist/schema/create.js +437 -0
- package/dist/schema/create.js.map +1 -0
- package/package.json +34 -0
- package/src/cuid.ts +3 -0
- package/src/migration-engine/auto-from-schema.test.ts +238 -0
- package/src/migration-engine/auto-from-schema.ts +106 -0
- package/src/migration-engine/create.test.ts +349 -0
- package/src/migration-engine/create.ts +199 -0
- package/src/migration-engine/shared.ts +102 -0
- package/src/mod.ts +1 -0
- package/src/schema/create.test.ts +287 -0
- package/src/schema/create.ts +809 -0
- package/src/shared/config.ts +18 -0
- package/src/shared/prisma.ts +45 -0
- package/src/shared/providers.ts +10 -0
- package/src/util/deep-equal.ts +29 -0
- package/tsconfig.json +10 -0
- package/tsdown.config.ts +7 -0
- package/vitest.config.ts +7 -0
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
$ tsdown
|
|
2
|
+
[34mℹ[39m tsdown [2mv0.15.6[22m powered by rolldown [2mv1.0.0-beta.41[22m
|
|
3
|
+
[34mℹ[39m Using tsdown config: [4m/home/runner/work/fragno/fragno/packages/fragno-db/tsdown.config.ts[24m
|
|
4
|
+
[34mℹ[39m entry: [34msrc/mod.ts, src/schema/create.ts[39m
|
|
5
|
+
[34mℹ[39m tsconfig: [34mtsconfig.json[39m
|
|
6
|
+
[34mℹ[39m Build start
|
|
7
|
+
[34mℹ[39m [2mdist/[22m[1mschema/create.js[22m [2m11.66 kB[22m [2m│ gzip: 3.10 kB[22m
|
|
8
|
+
[34mℹ[39m [2mdist/[22m[1mmod.js[22m [2m 0.11 kB[22m [2m│ gzip: 0.11 kB[22m
|
|
9
|
+
[34mℹ[39m [2mdist/[22mschema/create.js.map [2m29.19 kB[22m [2m│ gzip: 7.40 kB[22m
|
|
10
|
+
[34mℹ[39m [2mdist/[22mschema/create.d.ts.map [2m 7.92 kB[22m [2m│ gzip: 3.21 kB[22m
|
|
11
|
+
[34mℹ[39m [2mdist/[22mmod.js.map [2m 0.15 kB[22m [2m│ gzip: 0.14 kB[22m
|
|
12
|
+
[34mℹ[39m [2mdist/[22mmod.d.ts.map [2m 0.11 kB[22m [2m│ gzip: 0.11 kB[22m
|
|
13
|
+
[34mℹ[39m [2mdist/[22mcuid.js [2m 0.07 kB[22m [2m│ gzip: 0.07 kB[22m
|
|
14
|
+
[34mℹ[39m [2mdist/[22m[32m[1mschema/create.d.ts[22m[39m [2m10.52 kB[22m [2m│ gzip: 2.56 kB[22m
|
|
15
|
+
[34mℹ[39m [2mdist/[22m[32m[1mmod.d.ts[22m[39m [2m 0.12 kB[22m [2m│ gzip: 0.12 kB[22m
|
|
16
|
+
[34mℹ[39m 9 files, total: 59.86 kB
|
|
17
|
+
[32m✔[39m Build complete in [32m7914ms[39m
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
$ tsc --noEmit
|
package/README.md
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# @fragno-dev/db
|
|
2
|
+
|
|
3
|
+
## Attribution & Original Source
|
|
4
|
+
|
|
5
|
+
**Important:** A significant portion of this package's codebase is adopted from
|
|
6
|
+
[fumadb](https://github.com/fuma-nama/fumadb), which is licensed under the MIT License.
|
|
7
|
+
|
|
8
|
+
- **Project:** fumadb
|
|
9
|
+
- **Author:** Fuma Nama and contributors
|
|
10
|
+
- **License:** MIT
|
|
11
|
+
- **Source:** https://github.com/fuma-nama/fumadb
|
|
12
|
+
|
|
13
|
+
We are grateful to Fuma Nama for their excellent work on the original implementation.
|
package/dist/cuid.js
ADDED
package/dist/mod.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mod.d.ts","names":[],"sources":["../src/mod.ts"],"sourcesContent":[],"mappings":";cAAa,KAAA"}
|
package/dist/mod.js
ADDED
package/dist/mod.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mod.js","names":[],"sources":["../src/mod.ts"],"sourcesContent":["export const hello = \"world\";\n"],"mappings":";AAAA,MAAa,QAAQ"}
|
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
//#region src/schema/create.d.ts
|
|
2
|
+
type AnySchema = Schema<Record<string, AnyTable>>;
|
|
3
|
+
type AnyRelation = Relation;
|
|
4
|
+
type AnyTable = Table;
|
|
5
|
+
type AnyColumn = Column<keyof TypeMap, unknown, unknown> | IdColumn<IdColumnType, unknown, unknown>;
|
|
6
|
+
/**
|
|
7
|
+
* Operations that can be performed on a table during its definition.
|
|
8
|
+
*/
|
|
9
|
+
type TableOperation = {
|
|
10
|
+
type: "add-index";
|
|
11
|
+
name: string;
|
|
12
|
+
columns: string[];
|
|
13
|
+
unique: boolean;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Operations that can be performed on a schema during its definition.
|
|
17
|
+
* These are tracked so we can generate migrations for specific version ranges.
|
|
18
|
+
*/
|
|
19
|
+
type SchemaOperation = {
|
|
20
|
+
type: "add-table";
|
|
21
|
+
tableName: string;
|
|
22
|
+
table: AnyTable;
|
|
23
|
+
} | {
|
|
24
|
+
type: "add-reference";
|
|
25
|
+
tableName: string;
|
|
26
|
+
referenceName: string;
|
|
27
|
+
config: {
|
|
28
|
+
columns: string[];
|
|
29
|
+
targetTable: string;
|
|
30
|
+
targetColumns: string[];
|
|
31
|
+
};
|
|
32
|
+
} | {
|
|
33
|
+
type: "add-index";
|
|
34
|
+
tableName: string;
|
|
35
|
+
name: string;
|
|
36
|
+
columns: string[];
|
|
37
|
+
unique: boolean;
|
|
38
|
+
};
|
|
39
|
+
interface ForeignKey {
|
|
40
|
+
name: string;
|
|
41
|
+
table: AnyTable;
|
|
42
|
+
columns: AnyColumn[];
|
|
43
|
+
referencedTable: AnyTable;
|
|
44
|
+
referencedColumns: AnyColumn[];
|
|
45
|
+
}
|
|
46
|
+
declare class RelationInit<TRelationType extends RelationType, TTables extends Record<string, AnyTable>, TTableName extends keyof TTables> {
|
|
47
|
+
type: TRelationType;
|
|
48
|
+
referencedTable: TTables[TTableName];
|
|
49
|
+
referencer: AnyTable;
|
|
50
|
+
on: [string, string][];
|
|
51
|
+
constructor(type: TRelationType, referencedTable: TTables[TTableName], referencer: AnyTable);
|
|
52
|
+
}
|
|
53
|
+
interface Index {
|
|
54
|
+
name: string;
|
|
55
|
+
columns: AnyColumn[];
|
|
56
|
+
unique: boolean;
|
|
57
|
+
}
|
|
58
|
+
declare class ExplicitRelationInit<TRelationType extends RelationType, TTables extends Record<string, AnyTable>, TTableName extends keyof TTables> extends RelationInit<TRelationType, TTables, TTableName> {
|
|
59
|
+
private foreignKeyName?;
|
|
60
|
+
private initForeignKey;
|
|
61
|
+
init(ormName: string): Relation<TRelationType, TTables[TTableName]>;
|
|
62
|
+
/**
|
|
63
|
+
* Define custom foreign key name.
|
|
64
|
+
*/
|
|
65
|
+
foreignKey(name: string): this;
|
|
66
|
+
}
|
|
67
|
+
interface Relation<TRelationType extends RelationType = RelationType, TTable extends AnyTable = AnyTable> {
|
|
68
|
+
id: string;
|
|
69
|
+
name: string;
|
|
70
|
+
type: TRelationType;
|
|
71
|
+
table: TTable;
|
|
72
|
+
referencer: AnyTable;
|
|
73
|
+
on: [string, string][];
|
|
74
|
+
foreignKey: ForeignKey;
|
|
75
|
+
}
|
|
76
|
+
interface Table<TColumns extends Record<string, AnyColumn> = Record<string, AnyColumn>, TRelations extends Record<string, AnyRelation> = Record<string, AnyRelation>> {
|
|
77
|
+
name: string;
|
|
78
|
+
ormName: string;
|
|
79
|
+
columns: TColumns;
|
|
80
|
+
relations: TRelations;
|
|
81
|
+
foreignKeys: ForeignKey[];
|
|
82
|
+
indexes: Index[];
|
|
83
|
+
/**
|
|
84
|
+
* Get column by name
|
|
85
|
+
*/
|
|
86
|
+
getColumnByName: (name: string) => AnyColumn | undefined;
|
|
87
|
+
getIdColumn: () => AnyColumn;
|
|
88
|
+
clone: () => Table<TColumns, TRelations>;
|
|
89
|
+
}
|
|
90
|
+
type DefaultFunctionMap = {
|
|
91
|
+
date: "now";
|
|
92
|
+
timestamp: "now";
|
|
93
|
+
string: "auto";
|
|
94
|
+
} & Record<`varchar(${number})`, "auto">;
|
|
95
|
+
type DefaultFunction<TType extends keyof TypeMap> = (TType extends keyof DefaultFunctionMap ? DefaultFunctionMap[TType] : never) | (() => TypeMap[TType]);
|
|
96
|
+
type IdColumnType = `varchar(${number})`;
|
|
97
|
+
type TypeMap = {
|
|
98
|
+
string: string;
|
|
99
|
+
bigint: bigint;
|
|
100
|
+
integer: number;
|
|
101
|
+
decimal: number;
|
|
102
|
+
bool: boolean;
|
|
103
|
+
json: unknown;
|
|
104
|
+
/**
|
|
105
|
+
* this follows the same specs as Prisma `Bytes` for consistency.
|
|
106
|
+
*/
|
|
107
|
+
binary: Uint8Array;
|
|
108
|
+
date: Date;
|
|
109
|
+
timestamp: Date;
|
|
110
|
+
} & Record<`varchar(${number})`, string>;
|
|
111
|
+
declare class Column<TType extends keyof TypeMap, TIn = unknown, TOut = unknown> {
|
|
112
|
+
type: TType;
|
|
113
|
+
name: string;
|
|
114
|
+
ormName: string;
|
|
115
|
+
isNullable: boolean;
|
|
116
|
+
isUnique: boolean;
|
|
117
|
+
isReference: boolean;
|
|
118
|
+
default?: {
|
|
119
|
+
value: TypeMap[TType];
|
|
120
|
+
} | {
|
|
121
|
+
runtime: DefaultFunction<TType>;
|
|
122
|
+
};
|
|
123
|
+
table: AnyTable;
|
|
124
|
+
constructor(type: TType);
|
|
125
|
+
nullable<TNullable extends boolean = true>(nullable?: TNullable): Column<TType, TNullable extends true ? TIn | null : Exclude<TIn, null>, TNullable extends true ? TOut | null : Exclude<TOut, null>>;
|
|
126
|
+
/**
|
|
127
|
+
* Generate default value on runtime
|
|
128
|
+
*/
|
|
129
|
+
defaultTo$(fn: DefaultFunction<TType>): Column<TType, TIn | null, TOut>;
|
|
130
|
+
/**
|
|
131
|
+
* Set a database-level default value
|
|
132
|
+
*
|
|
133
|
+
* For schemaless database, it's still generated on runtime
|
|
134
|
+
*/
|
|
135
|
+
defaultTo(value: TypeMap[TType]): Column<TType, TIn | null, TOut>;
|
|
136
|
+
clone(): Column<TType, unknown, unknown>;
|
|
137
|
+
getUniqueConstraintName(): string;
|
|
138
|
+
/**
|
|
139
|
+
* Generate default value for the column on runtime.
|
|
140
|
+
*/
|
|
141
|
+
generateDefaultValue(): TypeMap[TType] | undefined;
|
|
142
|
+
get $in(): TIn;
|
|
143
|
+
get $out(): TOut;
|
|
144
|
+
}
|
|
145
|
+
declare class IdColumn<TType extends IdColumnType = IdColumnType, TIn = unknown, TOut = unknown> extends Column<TType, TIn, TOut> {
|
|
146
|
+
id: boolean;
|
|
147
|
+
clone(): IdColumn<TType, unknown, unknown>;
|
|
148
|
+
defaultTo$(fn: DefaultFunction<TType>): IdColumn<TType, TIn | null, TOut>;
|
|
149
|
+
defaultTo(value: TypeMap[TType]): IdColumn<TType, TIn | null, TOut>;
|
|
150
|
+
}
|
|
151
|
+
declare function column<TType extends keyof TypeMap>(type: TType): Column<TType, TypeMap[TType], TypeMap[TType]>;
|
|
152
|
+
/**
|
|
153
|
+
* Create a reference column that points to another table.
|
|
154
|
+
* This is used for foreign key relationships.
|
|
155
|
+
*/
|
|
156
|
+
declare function referenceColumn<TType extends keyof TypeMap = "varchar(30)">(type?: TType): Column<TType, TypeMap[TType], TypeMap[TType]>;
|
|
157
|
+
declare function idColumn(): IdColumn<"varchar(30)", string, string>;
|
|
158
|
+
type RelationType = "one";
|
|
159
|
+
declare class TableBuilder<TColumns extends Record<string, AnyColumn> = Record<string, AnyColumn>, TRelations extends Record<string, AnyRelation> = Record<string, AnyRelation>> {
|
|
160
|
+
#private;
|
|
161
|
+
constructor(name: string);
|
|
162
|
+
/**
|
|
163
|
+
* Add a column to the table. Increments the version counter.
|
|
164
|
+
*/
|
|
165
|
+
addColumn<TColumnName extends string, TColumn extends AnyColumn>(ormName: TColumnName, col: TColumn): TableBuilder<TColumns & Record<TColumnName, TColumn>, TRelations>;
|
|
166
|
+
/**
|
|
167
|
+
* Add a column to the table with simplified syntax. Increments the version counter.
|
|
168
|
+
*/
|
|
169
|
+
addColumn<TColumnName extends string, TType extends keyof TypeMap>(ormName: TColumnName, type: TType): TableBuilder<TColumns & Record<TColumnName, Column<TType, TypeMap[TType], TypeMap[TType]>>, TRelations>;
|
|
170
|
+
/**
|
|
171
|
+
* Create an index on the specified columns. Increments the version counter.
|
|
172
|
+
*/
|
|
173
|
+
createIndex<TColumnName extends string & keyof TColumns>(name: string, columns: TColumnName[], options?: {
|
|
174
|
+
unique?: boolean;
|
|
175
|
+
}): TableBuilder<TColumns, TRelations>;
|
|
176
|
+
/**
|
|
177
|
+
* Build the final table. This should be called after all columns are added.
|
|
178
|
+
*/
|
|
179
|
+
build(): Table<TColumns, TRelations>;
|
|
180
|
+
/**
|
|
181
|
+
* Get the current version of the table builder.
|
|
182
|
+
*/
|
|
183
|
+
getVersion(): number;
|
|
184
|
+
/**
|
|
185
|
+
* Get the operations performed on this table.
|
|
186
|
+
*/
|
|
187
|
+
getOperations(): TableOperation[];
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Create a new table with callback pattern.
|
|
191
|
+
*/
|
|
192
|
+
declare function table<TColumns extends Record<string, AnyColumn> = Record<string, AnyColumn>, TRelations extends Record<string, AnyRelation> = Record<string, AnyRelation>>(name: string, callback: (builder: TableBuilder<Record<string, AnyColumn>, Record<string, AnyRelation>>) => TableBuilder<TColumns, TRelations>): Table<TColumns, TRelations>;
|
|
193
|
+
interface Schema<TTables extends Record<string, AnyTable> = Record<string, AnyTable>> {
|
|
194
|
+
/**
|
|
195
|
+
* @description The version of the schema, automatically incremented on each change.
|
|
196
|
+
*/
|
|
197
|
+
version: number;
|
|
198
|
+
tables: TTables;
|
|
199
|
+
/**
|
|
200
|
+
* @description Operations performed on this schema, in order.
|
|
201
|
+
* Used to generate migrations for specific version ranges.
|
|
202
|
+
*/
|
|
203
|
+
operations: SchemaOperation[];
|
|
204
|
+
clone: () => Schema<TTables>;
|
|
205
|
+
}
|
|
206
|
+
declare class SchemaBuilder<TTables extends Record<string, AnyTable> = Record<string, never>> {
|
|
207
|
+
#private;
|
|
208
|
+
constructor();
|
|
209
|
+
/**
|
|
210
|
+
* Add a table to the schema. Increments the version counter.
|
|
211
|
+
*/
|
|
212
|
+
addTable<TTableName extends string, TColumns extends Record<string, AnyColumn>, TRelations extends Record<string, AnyRelation>>(ormName: TTableName, callback: (builder: TableBuilder<Record<string, AnyColumn>, Record<string, AnyRelation>>) => TableBuilder<TColumns, TRelations>): SchemaBuilder<TTables & Record<TTableName, Table<TColumns, TRelations>>>;
|
|
213
|
+
/**
|
|
214
|
+
* Add a foreign key reference from this table to another table.
|
|
215
|
+
*
|
|
216
|
+
* @param tableName - The table that has the foreign key column
|
|
217
|
+
* @param referenceName - A name for this reference (e.g., "author", "category")
|
|
218
|
+
* @param config - Configuration specifying the foreign key mapping
|
|
219
|
+
*
|
|
220
|
+
* @example
|
|
221
|
+
* ```ts
|
|
222
|
+
* // Basic foreign key: post -> user
|
|
223
|
+
* schema(s => s
|
|
224
|
+
* .addTable("users", t => t.addColumn("id", idColumn()))
|
|
225
|
+
* .addTable("posts", t => t
|
|
226
|
+
* .addColumn("id", idColumn())
|
|
227
|
+
* .addColumn("authorId", referenceColumn()))
|
|
228
|
+
* .addReference("posts", "author", {
|
|
229
|
+
* columns: ["authorId"],
|
|
230
|
+
* targetTable: "users",
|
|
231
|
+
* targetColumns: ["id"],
|
|
232
|
+
* })
|
|
233
|
+
* )
|
|
234
|
+
*
|
|
235
|
+
* // Self-referencing foreign key
|
|
236
|
+
* .addReference("users", "inviter", {
|
|
237
|
+
* columns: ["invitedBy"],
|
|
238
|
+
* targetTable: "users",
|
|
239
|
+
* targetColumns: ["id"],
|
|
240
|
+
* })
|
|
241
|
+
*
|
|
242
|
+
* // Multiple foreign keys - call addReference multiple times
|
|
243
|
+
* .addReference("posts", "author", {
|
|
244
|
+
* columns: ["authorId"],
|
|
245
|
+
* targetTable: "users",
|
|
246
|
+
* targetColumns: ["id"],
|
|
247
|
+
* })
|
|
248
|
+
* .addReference("posts", "category", {
|
|
249
|
+
* columns: ["categoryId"],
|
|
250
|
+
* targetTable: "categories",
|
|
251
|
+
* targetColumns: ["id"],
|
|
252
|
+
* })
|
|
253
|
+
* ```
|
|
254
|
+
*/
|
|
255
|
+
addReference<TTableName extends string & keyof TTables, TReferencedTableName extends string & keyof TTables>(tableName: TTableName, referenceName: string, config: {
|
|
256
|
+
columns: (keyof TTables[TTableName]["columns"])[];
|
|
257
|
+
targetTable: TReferencedTableName;
|
|
258
|
+
targetColumns: (keyof TTables[TReferencedTableName]["columns"])[];
|
|
259
|
+
}): SchemaBuilder<TTables>;
|
|
260
|
+
/**
|
|
261
|
+
* Build the final schema. This should be called after all tables are added.
|
|
262
|
+
*/
|
|
263
|
+
build(): Schema<TTables>;
|
|
264
|
+
/**
|
|
265
|
+
* Get the current version of the schema builder.
|
|
266
|
+
*/
|
|
267
|
+
getVersion(): number;
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Create a new schema with callback pattern.
|
|
271
|
+
*/
|
|
272
|
+
declare function schema<TTables extends Record<string, AnyTable> = Record<string, never>>(callback: (builder: SchemaBuilder<Record<string, never>>) => SchemaBuilder<TTables>): Schema<TTables>;
|
|
273
|
+
declare function compileForeignKey(key: ForeignKey): {
|
|
274
|
+
name: string;
|
|
275
|
+
table: string;
|
|
276
|
+
referencedTable: string;
|
|
277
|
+
referencedColumns: string[];
|
|
278
|
+
columns: string[];
|
|
279
|
+
};
|
|
280
|
+
//#endregion
|
|
281
|
+
export { AnyColumn, AnyRelation, AnySchema, AnyTable, Column, ExplicitRelationInit, ForeignKey, IdColumn, Index, Relation, Schema, SchemaBuilder, SchemaOperation, Table, TableBuilder, TableOperation, TypeMap, column, compileForeignKey, idColumn, referenceColumn, schema, table };
|
|
282
|
+
//# sourceMappingURL=create.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.d.ts","names":[],"sources":["../../src/schema/create.ts"],"sourcesContent":[],"mappings":"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"}
|