@zauso-ai/capstan-db 0.1.4 → 0.2.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/dist/client.d.ts +28 -12
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +112 -15
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/schema.d.ts +18 -3
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +135 -25
- package/dist/schema.js.map +1 -1
- package/dist/types.d.ts +2 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +10 -2
package/dist/client.d.ts
CHANGED
|
@@ -6,24 +6,40 @@ export interface DatabaseInstance {
|
|
|
6
6
|
close: () => void;
|
|
7
7
|
}
|
|
8
8
|
/**
|
|
9
|
-
* Create a Drizzle database instance backed by better-sqlite3
|
|
9
|
+
* Create a Drizzle database instance backed by better-sqlite3 (SQLite),
|
|
10
|
+
* node-postgres (PostgreSQL), or mysql2 (MySQL).
|
|
10
11
|
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* will not work until the peer dependencies are
|
|
12
|
+
* All driver dependencies are optional peer dependencies and are loaded lazily
|
|
13
|
+
* so that `@zauso-ai/capstan-db` can be installed even when native compilation
|
|
14
|
+
* of `better-sqlite3` fails or `pg`/`mysql2` are not needed. The actual
|
|
15
|
+
* database features will not work until the appropriate peer dependencies are
|
|
16
|
+
* installed.
|
|
15
17
|
*
|
|
16
|
-
* @param config - Database configuration.
|
|
17
|
-
*
|
|
18
|
-
*
|
|
18
|
+
* @param config - Database configuration.
|
|
19
|
+
* - `provider: "sqlite"` — `url` should be a file path (or `:memory:`).
|
|
20
|
+
* - `provider: "postgres"` — `url` should be a PostgreSQL connection string
|
|
21
|
+
* (e.g. `postgres://user:pass@host:5432/db`).
|
|
22
|
+
* - `provider: "mysql"` — `url` should be a MySQL connection string
|
|
23
|
+
* (e.g. `mysql://user:pass@host:3306/db`).
|
|
19
24
|
*
|
|
20
|
-
* @throws If
|
|
21
|
-
* error with installation instructions.
|
|
25
|
+
* @throws If the required driver or `drizzle-orm` adapter is not installed,
|
|
26
|
+
* throws an error with installation instructions.
|
|
22
27
|
*
|
|
23
28
|
* @example
|
|
29
|
+
* // SQLite
|
|
24
30
|
* const { db, close } = createDatabase({ provider: "sqlite", url: "./data.db" });
|
|
25
|
-
*
|
|
26
|
-
*
|
|
31
|
+
*
|
|
32
|
+
* // PostgreSQL
|
|
33
|
+
* const { db, close } = createDatabase({
|
|
34
|
+
* provider: "postgres",
|
|
35
|
+
* url: "postgres://user:pass@localhost:5432/mydb",
|
|
36
|
+
* });
|
|
37
|
+
*
|
|
38
|
+
* // MySQL
|
|
39
|
+
* const { db, close } = createDatabase({
|
|
40
|
+
* provider: "mysql",
|
|
41
|
+
* url: "mysql://user:pass@localhost:3306/mydb",
|
|
42
|
+
* });
|
|
27
43
|
*/
|
|
28
44
|
export declare function createDatabase(config: DatabaseConfig): DatabaseInstance;
|
|
29
45
|
//# sourceMappingURL=client.d.ts.map
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAIjD,MAAM,WAAW,gBAAgB;IAC/B,yCAAyC;IACzC,EAAE,EAAE,OAAO,CAAC;IACZ,gDAAgD;IAChD,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAIjD,MAAM,WAAW,gBAAgB;IAC/B,yCAAyC;IACzC,EAAE,EAAE,OAAO,CAAC;IACZ,gDAAgD;IAChD,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,gBAAgB,CAevE"}
|
package/dist/client.js
CHANGED
|
@@ -1,29 +1,59 @@
|
|
|
1
1
|
import { createRequire } from "node:module";
|
|
2
2
|
const require = createRequire(import.meta.url);
|
|
3
3
|
/**
|
|
4
|
-
* Create a Drizzle database instance backed by better-sqlite3
|
|
4
|
+
* Create a Drizzle database instance backed by better-sqlite3 (SQLite),
|
|
5
|
+
* node-postgres (PostgreSQL), or mysql2 (MySQL).
|
|
5
6
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* will not work until the peer dependencies are
|
|
7
|
+
* All driver dependencies are optional peer dependencies and are loaded lazily
|
|
8
|
+
* so that `@zauso-ai/capstan-db` can be installed even when native compilation
|
|
9
|
+
* of `better-sqlite3` fails or `pg`/`mysql2` are not needed. The actual
|
|
10
|
+
* database features will not work until the appropriate peer dependencies are
|
|
11
|
+
* installed.
|
|
10
12
|
*
|
|
11
|
-
* @param config - Database configuration.
|
|
12
|
-
*
|
|
13
|
-
*
|
|
13
|
+
* @param config - Database configuration.
|
|
14
|
+
* - `provider: "sqlite"` — `url` should be a file path (or `:memory:`).
|
|
15
|
+
* - `provider: "postgres"` — `url` should be a PostgreSQL connection string
|
|
16
|
+
* (e.g. `postgres://user:pass@host:5432/db`).
|
|
17
|
+
* - `provider: "mysql"` — `url` should be a MySQL connection string
|
|
18
|
+
* (e.g. `mysql://user:pass@host:3306/db`).
|
|
14
19
|
*
|
|
15
|
-
* @throws If
|
|
16
|
-
* error with installation instructions.
|
|
20
|
+
* @throws If the required driver or `drizzle-orm` adapter is not installed,
|
|
21
|
+
* throws an error with installation instructions.
|
|
17
22
|
*
|
|
18
23
|
* @example
|
|
24
|
+
* // SQLite
|
|
19
25
|
* const { db, close } = createDatabase({ provider: "sqlite", url: "./data.db" });
|
|
20
|
-
*
|
|
21
|
-
*
|
|
26
|
+
*
|
|
27
|
+
* // PostgreSQL
|
|
28
|
+
* const { db, close } = createDatabase({
|
|
29
|
+
* provider: "postgres",
|
|
30
|
+
* url: "postgres://user:pass@localhost:5432/mydb",
|
|
31
|
+
* });
|
|
32
|
+
*
|
|
33
|
+
* // MySQL
|
|
34
|
+
* const { db, close } = createDatabase({
|
|
35
|
+
* provider: "mysql",
|
|
36
|
+
* url: "mysql://user:pass@localhost:3306/mydb",
|
|
37
|
+
* });
|
|
22
38
|
*/
|
|
23
39
|
export function createDatabase(config) {
|
|
24
|
-
|
|
25
|
-
|
|
40
|
+
switch (config.provider) {
|
|
41
|
+
case "sqlite":
|
|
42
|
+
return createSqliteDatabase(config.url);
|
|
43
|
+
case "postgres":
|
|
44
|
+
return createPostgresDatabase(config.url);
|
|
45
|
+
case "mysql":
|
|
46
|
+
return createMysqlDatabase(config.url);
|
|
47
|
+
default: {
|
|
48
|
+
const _exhaustive = config.provider;
|
|
49
|
+
throw new Error(`@zauso-ai/capstan-db: Unsupported database provider "${String(_exhaustive)}".`);
|
|
50
|
+
}
|
|
26
51
|
}
|
|
52
|
+
}
|
|
53
|
+
// ---------------------------------------------------------------------------
|
|
54
|
+
// SQLite (better-sqlite3)
|
|
55
|
+
// ---------------------------------------------------------------------------
|
|
56
|
+
function createSqliteDatabase(url) {
|
|
27
57
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
28
58
|
let BetterSqlite3;
|
|
29
59
|
try {
|
|
@@ -45,7 +75,7 @@ export function createDatabase(config) {
|
|
|
45
75
|
throw new Error(`@zauso-ai/capstan-db: "drizzle-orm" is required for database support but is not installed.\n` +
|
|
46
76
|
`Install it with: npm install drizzle-orm`);
|
|
47
77
|
}
|
|
48
|
-
const sqlite = new BetterSqlite3(
|
|
78
|
+
const sqlite = new BetterSqlite3(url);
|
|
49
79
|
// Enable WAL mode for better concurrent read performance.
|
|
50
80
|
sqlite.pragma("journal_mode = WAL");
|
|
51
81
|
const db = drizzle({ client: sqlite });
|
|
@@ -56,4 +86,71 @@ export function createDatabase(config) {
|
|
|
56
86
|
},
|
|
57
87
|
};
|
|
58
88
|
}
|
|
89
|
+
// ---------------------------------------------------------------------------
|
|
90
|
+
// PostgreSQL (node-postgres / pg)
|
|
91
|
+
// ---------------------------------------------------------------------------
|
|
92
|
+
function createPostgresDatabase(url) {
|
|
93
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
94
|
+
let Pool;
|
|
95
|
+
try {
|
|
96
|
+
const pgModule = require("pg");
|
|
97
|
+
Pool = pgModule.Pool;
|
|
98
|
+
}
|
|
99
|
+
catch {
|
|
100
|
+
throw new Error(`@zauso-ai/capstan-db: "pg" (node-postgres) is required for PostgreSQL support but is not installed.\n` +
|
|
101
|
+
`Install it with: npm install pg`);
|
|
102
|
+
}
|
|
103
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
104
|
+
let drizzle;
|
|
105
|
+
try {
|
|
106
|
+
const drizzleModule = require("drizzle-orm/node-postgres");
|
|
107
|
+
drizzle = drizzleModule.drizzle;
|
|
108
|
+
}
|
|
109
|
+
catch {
|
|
110
|
+
throw new Error(`@zauso-ai/capstan-db: "drizzle-orm/node-postgres" adapter is required for PostgreSQL support but is not installed.\n` +
|
|
111
|
+
`Install it with: npm install drizzle-orm`);
|
|
112
|
+
}
|
|
113
|
+
const pool = new Pool({ connectionString: url });
|
|
114
|
+
const db = drizzle({ client: pool });
|
|
115
|
+
return {
|
|
116
|
+
db,
|
|
117
|
+
close() {
|
|
118
|
+
pool.end();
|
|
119
|
+
},
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
// ---------------------------------------------------------------------------
|
|
123
|
+
// MySQL (mysql2)
|
|
124
|
+
// ---------------------------------------------------------------------------
|
|
125
|
+
function createMysqlDatabase(url) {
|
|
126
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
127
|
+
let createPool;
|
|
128
|
+
try {
|
|
129
|
+
const mysql2 = require("mysql2/promise");
|
|
130
|
+
createPool = mysql2.createPool;
|
|
131
|
+
}
|
|
132
|
+
catch {
|
|
133
|
+
throw new Error(`@zauso-ai/capstan-db: "mysql2" is required for MySQL support but is not installed.\n` +
|
|
134
|
+
`Install it with: npm install mysql2`);
|
|
135
|
+
}
|
|
136
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
137
|
+
let drizzle;
|
|
138
|
+
try {
|
|
139
|
+
const drizzleModule = require("drizzle-orm/mysql2");
|
|
140
|
+
drizzle = drizzleModule.drizzle;
|
|
141
|
+
}
|
|
142
|
+
catch {
|
|
143
|
+
throw new Error(`@zauso-ai/capstan-db: "drizzle-orm/mysql2" adapter is required for MySQL support but is not installed.\n` +
|
|
144
|
+
`Install it with: npm install drizzle-orm`);
|
|
145
|
+
}
|
|
146
|
+
const pool = createPool({ uri: url });
|
|
147
|
+
const db = drizzle({ client: pool });
|
|
148
|
+
return {
|
|
149
|
+
db,
|
|
150
|
+
close() {
|
|
151
|
+
// The interface is synchronous; fire-and-forget the async pool shutdown.
|
|
152
|
+
void pool.end();
|
|
153
|
+
},
|
|
154
|
+
};
|
|
155
|
+
}
|
|
59
156
|
//# sourceMappingURL=client.js.map
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAS/C
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
export { defineModel, field, relation } from "./model.js";
|
|
2
2
|
export { generateDrizzleSchema } from "./schema.js";
|
|
3
3
|
export { createDatabase } from "./client.js";
|
|
4
|
+
export type { DatabaseInstance } from "./client.js";
|
|
4
5
|
export { generateMigration, applyMigration } from "./migrate.js";
|
|
5
6
|
export { generateCrudRoutes, pluralize } from "./crud.js";
|
|
6
7
|
export type { CrudRouteFiles } from "./crud.js";
|
|
7
|
-
export type { ModelDefinition, FieldDefinition, RelationDefinition, IndexDefinition, DatabaseConfig, ScalarType, } from "./types.js";
|
|
8
|
+
export type { ModelDefinition, FieldDefinition, RelationDefinition, IndexDefinition, DatabaseConfig, DbProvider, ScalarType, } from "./types.js";
|
|
8
9
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC1D,YAAY,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAChD,YAAY,EACV,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,UAAU,GACX,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC1D,YAAY,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAChD,YAAY,EACV,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,UAAU,EACV,UAAU,GACX,MAAM,YAAY,CAAC"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC"}
|
package/dist/schema.d.ts
CHANGED
|
@@ -1,13 +1,28 @@
|
|
|
1
|
-
import type { ModelDefinition } from "./types.js";
|
|
1
|
+
import type { ModelDefinition, DbProvider } from "./types.js";
|
|
2
|
+
type Provider = DbProvider;
|
|
2
3
|
/**
|
|
3
4
|
* Generate a Drizzle ORM schema file (as a TypeScript string) from an array
|
|
4
5
|
* of model definitions.
|
|
5
6
|
*
|
|
6
|
-
* The generated code targets
|
|
7
|
+
* The generated code targets the specified provider's drizzle package:
|
|
8
|
+
* - `"sqlite"` -> `drizzle-orm/sqlite-core`
|
|
9
|
+
* - `"postgres"` -> `drizzle-orm/pg-core`
|
|
10
|
+
* - `"mysql"` -> `drizzle-orm/mysql-core`
|
|
11
|
+
*
|
|
12
|
+
* @param models - Array of model definitions to generate schema for.
|
|
13
|
+
* @param provider - The database provider. Defaults to `"sqlite"` for
|
|
14
|
+
* backwards compatibility.
|
|
7
15
|
*
|
|
8
16
|
* @example
|
|
9
17
|
* const src = generateDrizzleSchema([ticketModel, userModel]);
|
|
10
18
|
* fs.writeFileSync("schema.ts", src);
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* const src = generateDrizzleSchema([ticketModel], "postgres");
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* const src = generateDrizzleSchema([ticketModel], "mysql");
|
|
11
25
|
*/
|
|
12
|
-
export declare function generateDrizzleSchema(models: ModelDefinition[]): string;
|
|
26
|
+
export declare function generateDrizzleSchema(models: ModelDefinition[], provider?: Provider): string;
|
|
27
|
+
export {};
|
|
13
28
|
//# sourceMappingURL=schema.d.ts.map
|
package/dist/schema.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAA+B,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAA+B,UAAU,EAAE,MAAM,YAAY,CAAC;AA0C3F,KAAK,QAAQ,GAAG,UAAU,CAAC;AAyM3B;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,eAAe,EAAE,EACzB,QAAQ,GAAE,QAAmB,GAC5B,MAAM,CAgDR"}
|
package/dist/schema.js
CHANGED
|
@@ -30,7 +30,7 @@ function jsString(val) {
|
|
|
30
30
|
}
|
|
31
31
|
return String(val);
|
|
32
32
|
}
|
|
33
|
-
function
|
|
33
|
+
function sqliteColumnMapping(fieldType) {
|
|
34
34
|
switch (fieldType) {
|
|
35
35
|
case "string":
|
|
36
36
|
case "text":
|
|
@@ -47,12 +47,109 @@ function columnMapping(fieldType) {
|
|
|
47
47
|
return { builder: "text", import: "text", config: '{ mode: "json" }' };
|
|
48
48
|
}
|
|
49
49
|
}
|
|
50
|
+
function pgColumnMapping(fieldType) {
|
|
51
|
+
switch (fieldType) {
|
|
52
|
+
case "string":
|
|
53
|
+
return { builder: "varchar", import: "varchar", config: "{ length: 255 }" };
|
|
54
|
+
case "text":
|
|
55
|
+
return { builder: "text", import: "text" };
|
|
56
|
+
case "date":
|
|
57
|
+
return { builder: "date", import: "date" };
|
|
58
|
+
case "datetime":
|
|
59
|
+
return { builder: "timestamp", import: "timestamp" };
|
|
60
|
+
case "integer":
|
|
61
|
+
return { builder: "integer", import: "integer" };
|
|
62
|
+
case "number":
|
|
63
|
+
return { builder: "doublePrecision", import: "doublePrecision" };
|
|
64
|
+
case "boolean":
|
|
65
|
+
return { builder: "boolean", import: "boolean" };
|
|
66
|
+
case "json":
|
|
67
|
+
return { builder: "jsonb", import: "jsonb" };
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
function mysqlColumnMapping(fieldType) {
|
|
71
|
+
switch (fieldType) {
|
|
72
|
+
case "string":
|
|
73
|
+
return { builder: "varchar", import: "varchar", config: "{ length: 255 }" };
|
|
74
|
+
case "text":
|
|
75
|
+
return { builder: "text", import: "text" };
|
|
76
|
+
case "date":
|
|
77
|
+
return { builder: "varchar", import: "varchar", config: "{ length: 255 }" };
|
|
78
|
+
case "datetime":
|
|
79
|
+
return { builder: "datetime", import: "datetime" };
|
|
80
|
+
case "integer":
|
|
81
|
+
return { builder: "int", import: "int" };
|
|
82
|
+
case "number":
|
|
83
|
+
return { builder: "double", import: "double" };
|
|
84
|
+
case "boolean":
|
|
85
|
+
return { builder: "boolean", import: "boolean" };
|
|
86
|
+
case "json":
|
|
87
|
+
return { builder: "json", import: "json" };
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
function columnMapping(fieldType, provider) {
|
|
91
|
+
switch (provider) {
|
|
92
|
+
case "sqlite":
|
|
93
|
+
return sqliteColumnMapping(fieldType);
|
|
94
|
+
case "postgres":
|
|
95
|
+
return pgColumnMapping(fieldType);
|
|
96
|
+
case "mysql":
|
|
97
|
+
return mysqlColumnMapping(fieldType);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
function providerMeta(provider) {
|
|
101
|
+
switch (provider) {
|
|
102
|
+
case "sqlite":
|
|
103
|
+
return {
|
|
104
|
+
tableBuilder: "sqliteTable",
|
|
105
|
+
importModule: "drizzle-orm/sqlite-core",
|
|
106
|
+
nowDefault: "(datetime('now'))",
|
|
107
|
+
};
|
|
108
|
+
case "postgres":
|
|
109
|
+
return {
|
|
110
|
+
tableBuilder: "pgTable",
|
|
111
|
+
importModule: "drizzle-orm/pg-core",
|
|
112
|
+
nowDefault: "now()",
|
|
113
|
+
};
|
|
114
|
+
case "mysql":
|
|
115
|
+
return {
|
|
116
|
+
tableBuilder: "mysqlTable",
|
|
117
|
+
importModule: "drizzle-orm/mysql-core",
|
|
118
|
+
nowDefault: "(NOW())",
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
// ---------------------------------------------------------------------------
|
|
123
|
+
// Auto-ID column expression per provider
|
|
124
|
+
// ---------------------------------------------------------------------------
|
|
125
|
+
/**
|
|
126
|
+
* Build the column expression and required imports for an auto-id primary key
|
|
127
|
+
* field. Each provider uses a slightly different column type:
|
|
128
|
+
* - SQLite: text("col").primaryKey()
|
|
129
|
+
* - Postgres: text("col").primaryKey()
|
|
130
|
+
* - MySQL: varchar("col", { length: 36 }).primaryKey()
|
|
131
|
+
*/
|
|
132
|
+
function autoIdExpr(colName, provider) {
|
|
133
|
+
switch (provider) {
|
|
134
|
+
case "sqlite":
|
|
135
|
+
return { expr: `text("${colName}").primaryKey()`, imports: ["text"] };
|
|
136
|
+
case "postgres":
|
|
137
|
+
return { expr: `text("${colName}").primaryKey()`, imports: ["text"] };
|
|
138
|
+
case "mysql":
|
|
139
|
+
return { expr: `varchar("${colName}", { length: 36 }).primaryKey()`, imports: ["varchar"] };
|
|
140
|
+
}
|
|
141
|
+
}
|
|
50
142
|
// ---------------------------------------------------------------------------
|
|
51
143
|
// Column expression builder
|
|
52
144
|
// ---------------------------------------------------------------------------
|
|
53
|
-
function buildColumnExpr(fieldName, def) {
|
|
145
|
+
function buildColumnExpr(fieldName, def, provider) {
|
|
54
146
|
const colName = toSnakeCase(fieldName);
|
|
55
|
-
|
|
147
|
+
// Auto-id fields get special treatment per provider
|
|
148
|
+
if (def.autoId) {
|
|
149
|
+
const result = autoIdExpr(colName, provider);
|
|
150
|
+
return { expr: result.expr, imports: result.imports, needsSql: false };
|
|
151
|
+
}
|
|
152
|
+
const mapping = columnMapping(def.type, provider);
|
|
56
153
|
let expr;
|
|
57
154
|
if (mapping.config) {
|
|
58
155
|
expr = `${mapping.builder}("${colName}", ${mapping.config})`;
|
|
@@ -60,24 +157,21 @@ function buildColumnExpr(fieldName, def) {
|
|
|
60
157
|
else {
|
|
61
158
|
expr = `${mapping.builder}("${colName}")`;
|
|
62
159
|
}
|
|
63
|
-
//
|
|
64
|
-
if (def.
|
|
65
|
-
expr += ".primaryKey()";
|
|
66
|
-
}
|
|
67
|
-
// NOT NULL for required fields (but not auto-id, which is already implied)
|
|
68
|
-
if (def.required && !def.autoId) {
|
|
160
|
+
// NOT NULL for required fields
|
|
161
|
+
if (def.required) {
|
|
69
162
|
expr += ".notNull()";
|
|
70
163
|
}
|
|
71
164
|
// Unique constraint
|
|
72
|
-
if (def.unique
|
|
165
|
+
if (def.unique) {
|
|
73
166
|
expr += ".unique()";
|
|
74
167
|
}
|
|
75
168
|
// Default values
|
|
169
|
+
let needsSql = false;
|
|
76
170
|
if (def.default !== undefined) {
|
|
77
171
|
if (def.default === "now") {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
172
|
+
const meta = providerMeta(provider);
|
|
173
|
+
expr += `.default(sql\`${meta.nowDefault}\`)`;
|
|
174
|
+
needsSql = true;
|
|
81
175
|
}
|
|
82
176
|
else if (typeof def.default === "string") {
|
|
83
177
|
expr += `.default(${jsString(def.default)})`;
|
|
@@ -92,7 +186,7 @@ function buildColumnExpr(fieldName, def) {
|
|
|
92
186
|
expr += `.default(${jsString(def.default)})`;
|
|
93
187
|
}
|
|
94
188
|
}
|
|
95
|
-
return expr;
|
|
189
|
+
return { expr, imports: [mapping.import], needsSql };
|
|
96
190
|
}
|
|
97
191
|
// ---------------------------------------------------------------------------
|
|
98
192
|
// Public API
|
|
@@ -101,22 +195,38 @@ function buildColumnExpr(fieldName, def) {
|
|
|
101
195
|
* Generate a Drizzle ORM schema file (as a TypeScript string) from an array
|
|
102
196
|
* of model definitions.
|
|
103
197
|
*
|
|
104
|
-
* The generated code targets
|
|
198
|
+
* The generated code targets the specified provider's drizzle package:
|
|
199
|
+
* - `"sqlite"` -> `drizzle-orm/sqlite-core`
|
|
200
|
+
* - `"postgres"` -> `drizzle-orm/pg-core`
|
|
201
|
+
* - `"mysql"` -> `drizzle-orm/mysql-core`
|
|
202
|
+
*
|
|
203
|
+
* @param models - Array of model definitions to generate schema for.
|
|
204
|
+
* @param provider - The database provider. Defaults to `"sqlite"` for
|
|
205
|
+
* backwards compatibility.
|
|
105
206
|
*
|
|
106
207
|
* @example
|
|
107
208
|
* const src = generateDrizzleSchema([ticketModel, userModel]);
|
|
108
209
|
* fs.writeFileSync("schema.ts", src);
|
|
210
|
+
*
|
|
211
|
+
* @example
|
|
212
|
+
* const src = generateDrizzleSchema([ticketModel], "postgres");
|
|
213
|
+
*
|
|
214
|
+
* @example
|
|
215
|
+
* const src = generateDrizzleSchema([ticketModel], "mysql");
|
|
109
216
|
*/
|
|
110
|
-
export function generateDrizzleSchema(models) {
|
|
217
|
+
export function generateDrizzleSchema(models, provider = "sqlite") {
|
|
218
|
+
const meta = providerMeta(provider);
|
|
111
219
|
// Collect all drizzle imports we need
|
|
112
|
-
const neededImports = new Set([
|
|
220
|
+
const neededImports = new Set([meta.tableBuilder]);
|
|
113
221
|
let needsSql = false;
|
|
114
222
|
// First pass: determine imports
|
|
115
223
|
for (const model of models) {
|
|
116
|
-
for (const def of Object.
|
|
117
|
-
const
|
|
118
|
-
|
|
119
|
-
|
|
224
|
+
for (const [fieldName, def] of Object.entries(model.fields)) {
|
|
225
|
+
const result = buildColumnExpr(fieldName, def, provider);
|
|
226
|
+
for (const imp of result.imports) {
|
|
227
|
+
neededImports.add(imp);
|
|
228
|
+
}
|
|
229
|
+
if (result.needsSql) {
|
|
120
230
|
needsSql = true;
|
|
121
231
|
}
|
|
122
232
|
}
|
|
@@ -124,7 +234,7 @@ export function generateDrizzleSchema(models) {
|
|
|
124
234
|
// Build import line
|
|
125
235
|
const importNames = [...neededImports].sort();
|
|
126
236
|
const lines = [];
|
|
127
|
-
lines.push(`import { ${importNames.join(", ")} } from "
|
|
237
|
+
lines.push(`import { ${importNames.join(", ")} } from "${meta.importModule}";`);
|
|
128
238
|
if (needsSql) {
|
|
129
239
|
lines.push(`import { sql } from "drizzle-orm";`);
|
|
130
240
|
}
|
|
@@ -133,13 +243,13 @@ export function generateDrizzleSchema(models) {
|
|
|
133
243
|
const tableName = pluralise(model.name);
|
|
134
244
|
const varName = tableName;
|
|
135
245
|
lines.push("");
|
|
136
|
-
lines.push(`export const ${varName} =
|
|
246
|
+
lines.push(`export const ${varName} = ${meta.tableBuilder}("${tableName}", {`);
|
|
137
247
|
const fieldEntries = Object.entries(model.fields);
|
|
138
248
|
for (let i = 0; i < fieldEntries.length; i++) {
|
|
139
249
|
const [fieldName, def] = fieldEntries[i];
|
|
140
|
-
const
|
|
250
|
+
const result = buildColumnExpr(fieldName, def, provider);
|
|
141
251
|
const comma = i < fieldEntries.length - 1 ? "," : ",";
|
|
142
|
-
lines.push(` ${fieldName}: ${expr}${comma}`);
|
|
252
|
+
lines.push(` ${fieldName}: ${result.expr}${comma}`);
|
|
143
253
|
}
|
|
144
254
|
lines.push("});");
|
|
145
255
|
}
|
package/dist/schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAEA,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E;;GAEG;AACH,SAAS,WAAW,CAAC,GAAW;IAC9B,OAAO,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AAC/D,CAAC;AAED;;;GAGG;AACH,SAAS,SAAS,CAAC,IAAY;IAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3D,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACrD,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;IACpC,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/F,OAAO,KAAK,GAAG,IAAI,CAAC;IACtB,CAAC;IACD,OAAO,KAAK,GAAG,GAAG,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,SAAS,QAAQ,CAAC,GAAY;IAC5B,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC;IAChE,CAAC;IACD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;AACrB,CAAC;
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -32,8 +32,9 @@ export interface ModelDefinition {
|
|
|
32
32
|
relations: Record<string, RelationDefinition>;
|
|
33
33
|
indexes: IndexDefinition[];
|
|
34
34
|
}
|
|
35
|
+
export type DbProvider = "sqlite" | "postgres" | "mysql";
|
|
35
36
|
export interface DatabaseConfig {
|
|
36
|
-
provider:
|
|
37
|
+
provider: DbProvider;
|
|
37
38
|
url: string;
|
|
38
39
|
}
|
|
39
40
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;AAE7G,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,yCAAyC;IACzC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,yBAAyB;IACzB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,iCAAiC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,SAAS,GAAG,QAAQ,GAAG,YAAY,CAAC;AAE7E,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACxC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAC9C,OAAO,EAAE,eAAe,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;AAE7G,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,yCAAyC;IACzC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,yBAAyB;IACzB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,iCAAiC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,SAAS,GAAG,QAAQ,GAAG,YAAY,CAAC;AAE7E,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACxC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAC9C,OAAO,EAAE,eAAe,EAAE,CAAC;CAC5B;AAED,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;AAEzD,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,UAAU,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;CACb"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zauso-ai/capstan-db",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -16,7 +16,9 @@
|
|
|
16
16
|
},
|
|
17
17
|
"peerDependencies": {
|
|
18
18
|
"drizzle-orm": "^0.44.0",
|
|
19
|
-
"better-sqlite3": "^11.0.0"
|
|
19
|
+
"better-sqlite3": "^11.0.0",
|
|
20
|
+
"pg": "^8.0.0",
|
|
21
|
+
"mysql2": "^3.0.0"
|
|
20
22
|
},
|
|
21
23
|
"peerDependenciesMeta": {
|
|
22
24
|
"drizzle-orm": {
|
|
@@ -24,6 +26,12 @@
|
|
|
24
26
|
},
|
|
25
27
|
"better-sqlite3": {
|
|
26
28
|
"optional": true
|
|
29
|
+
},
|
|
30
|
+
"pg": {
|
|
31
|
+
"optional": true
|
|
32
|
+
},
|
|
33
|
+
"mysql2": {
|
|
34
|
+
"optional": true
|
|
27
35
|
}
|
|
28
36
|
},
|
|
29
37
|
"description": "Database layer for Capstan — Drizzle ORM, defineModel, auto CRUD generation",
|