@zauso-ai/capstan-db 1.0.0-beta.6 → 1.0.0-beta.8
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 +3 -6
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +179 -35
- package/dist/client.js.map +1 -1
- package/dist/crud.d.ts +14 -0
- package/dist/crud.d.ts.map +1 -1
- package/dist/crud.js +49 -39
- package/dist/crud.js.map +1 -1
- package/dist/dialect.d.ts +25 -0
- package/dist/dialect.d.ts.map +1 -0
- package/dist/dialect.js +208 -0
- package/dist/dialect.js.map +1 -0
- package/dist/index.d.ts +8 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/migrate.d.ts +22 -46
- package/dist/migrate.d.ts.map +1 -1
- package/dist/migrate.js +245 -160
- package/dist/migrate.js.map +1 -1
- package/dist/naming.d.ts +37 -0
- package/dist/naming.d.ts.map +1 -0
- package/dist/naming.js +196 -0
- package/dist/naming.js.map +1 -0
- package/dist/runtime.d.ts +51 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +490 -0
- package/dist/runtime.js.map +1 -0
- package/dist/schema.d.ts +2 -27
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +181 -209
- package/dist/schema.js.map +1 -1
- package/dist/write.d.ts +15 -0
- package/dist/write.d.ts.map +1 -0
- package/dist/write.js +156 -0
- package/dist/write.js.map +1 -0
- package/package.json +5 -1
package/dist/naming.js
ADDED
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
export function toSnakeCase(str) {
|
|
2
|
+
return str.replace(/[A-Z]/g, (ch) => `_${ch.toLowerCase()}`);
|
|
3
|
+
}
|
|
4
|
+
export function lowerFirst(str) {
|
|
5
|
+
if (str.length === 0)
|
|
6
|
+
return str;
|
|
7
|
+
return str.charAt(0).toLowerCase() + str.slice(1);
|
|
8
|
+
}
|
|
9
|
+
export function pluralizeModelName(name) {
|
|
10
|
+
const lower = lowerFirst(name);
|
|
11
|
+
if (lower.endsWith("y") && !/[aeiou]y$/i.test(lower)) {
|
|
12
|
+
return lower.slice(0, -1) + "ies";
|
|
13
|
+
}
|
|
14
|
+
if (lower.endsWith("s") || lower.endsWith("x") || lower.endsWith("sh") || lower.endsWith("ch") || lower.endsWith("z")) {
|
|
15
|
+
return lower + "es";
|
|
16
|
+
}
|
|
17
|
+
return lower + "s";
|
|
18
|
+
}
|
|
19
|
+
export function tableNameForModel(model) {
|
|
20
|
+
return pluralizeModelName(typeof model === "string" ? model : model.name);
|
|
21
|
+
}
|
|
22
|
+
export function tableVarForModel(model) {
|
|
23
|
+
return tableNameForModel(model);
|
|
24
|
+
}
|
|
25
|
+
export function inferRelationForeignKey(relation) {
|
|
26
|
+
return relation.foreignKey ?? `${lowerFirst(relation.model)}Id`;
|
|
27
|
+
}
|
|
28
|
+
export function inferTargetRelationForeignKey(sourceModel, relation) {
|
|
29
|
+
return relation.foreignKey ?? `${lowerFirst(typeof sourceModel === "string" ? sourceModel : sourceModel.name)}Id`;
|
|
30
|
+
}
|
|
31
|
+
export function resolveTargetRelationForeignKey(sourceModel, relation, modelMap) {
|
|
32
|
+
if (relation.foreignKey) {
|
|
33
|
+
return relation.foreignKey;
|
|
34
|
+
}
|
|
35
|
+
const targetModel = findModelByReference(relation.model, modelMap);
|
|
36
|
+
if (targetModel) {
|
|
37
|
+
for (const [fieldName, field] of Object.entries(targetModel.fields)) {
|
|
38
|
+
if (!field.references)
|
|
39
|
+
continue;
|
|
40
|
+
const target = parseReferenceTarget(field.references);
|
|
41
|
+
if (target.modelName === sourceModel.name) {
|
|
42
|
+
return fieldName;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return inferTargetRelationForeignKey(sourceModel, relation);
|
|
47
|
+
}
|
|
48
|
+
export function autoFieldNames(model) {
|
|
49
|
+
const names = new Set();
|
|
50
|
+
for (const [fieldName, field] of Object.entries(model.fields)) {
|
|
51
|
+
if (field.autoId || field.updatedAt) {
|
|
52
|
+
names.add(fieldName);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return names;
|
|
56
|
+
}
|
|
57
|
+
export function updatedAtFieldNames(model) {
|
|
58
|
+
const names = [];
|
|
59
|
+
for (const [fieldName, field] of Object.entries(model.fields)) {
|
|
60
|
+
if (field.updatedAt) {
|
|
61
|
+
names.push(fieldName);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return names;
|
|
65
|
+
}
|
|
66
|
+
export function findPrimaryKeyField(model) {
|
|
67
|
+
if ("id" in model.fields)
|
|
68
|
+
return "id";
|
|
69
|
+
for (const [fieldName, field] of Object.entries(model.fields)) {
|
|
70
|
+
if (field.autoId)
|
|
71
|
+
return fieldName;
|
|
72
|
+
}
|
|
73
|
+
const uniqueRequiredFields = Object.entries(model.fields)
|
|
74
|
+
.filter(([, field]) => field.unique)
|
|
75
|
+
.map(([fieldName]) => fieldName);
|
|
76
|
+
if (uniqueRequiredFields.length === 1) {
|
|
77
|
+
return uniqueRequiredFields[0];
|
|
78
|
+
}
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
export function parseReferenceTarget(reference) {
|
|
82
|
+
const [modelName, fieldName] = reference.split(".", 2);
|
|
83
|
+
return fieldName ? { modelName: modelName, fieldName } : { modelName: modelName };
|
|
84
|
+
}
|
|
85
|
+
export function resolveReferenceField(reference, modelMap) {
|
|
86
|
+
const parsed = parseReferenceTarget(reference);
|
|
87
|
+
if (parsed.fieldName) {
|
|
88
|
+
return { modelName: parsed.modelName, fieldName: parsed.fieldName };
|
|
89
|
+
}
|
|
90
|
+
const targetModel = modelMap?.get(parsed.modelName);
|
|
91
|
+
return {
|
|
92
|
+
modelName: parsed.modelName,
|
|
93
|
+
fieldName: targetModel ? (findPrimaryKeyField(targetModel) ?? "id") : "id",
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
export function findModelByReference(reference, modelMap) {
|
|
97
|
+
const direct = modelMap.get(reference);
|
|
98
|
+
if (direct)
|
|
99
|
+
return direct;
|
|
100
|
+
for (const model of modelMap.values()) {
|
|
101
|
+
if (model.name === reference ||
|
|
102
|
+
lowerFirst(model.name) === reference ||
|
|
103
|
+
tableNameForModel(model) === reference ||
|
|
104
|
+
toSnakeCase(tableNameForModel(model)).replace(/^_/, "") === reference ||
|
|
105
|
+
toSnakeCase(model.name).replace(/^_/, "") === reference) {
|
|
106
|
+
return model;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
111
|
+
export function resolveManyToManyRelation(sourceModel, relation, modelMap) {
|
|
112
|
+
if (relation.kind !== "manyToMany" || !relation.through) {
|
|
113
|
+
return null;
|
|
114
|
+
}
|
|
115
|
+
const throughModel = findModelByReference(relation.through, modelMap);
|
|
116
|
+
const targetModel = findModelByReference(relation.model, modelMap);
|
|
117
|
+
if (!throughModel || !targetModel) {
|
|
118
|
+
return null;
|
|
119
|
+
}
|
|
120
|
+
const sourcePrimaryKey = findPrimaryKeyField(sourceModel) ?? "id";
|
|
121
|
+
const targetPrimaryKey = findPrimaryKeyField(targetModel) ?? "id";
|
|
122
|
+
let sourceForeignKey = null;
|
|
123
|
+
let targetForeignKey = null;
|
|
124
|
+
for (const [fieldName, field] of Object.entries(throughModel.fields)) {
|
|
125
|
+
if (!field.references)
|
|
126
|
+
continue;
|
|
127
|
+
const target = parseReferenceTarget(field.references);
|
|
128
|
+
if (target.modelName === sourceModel.name && sourceForeignKey === null) {
|
|
129
|
+
sourceForeignKey = fieldName;
|
|
130
|
+
}
|
|
131
|
+
if (target.modelName === relation.model && targetForeignKey === null) {
|
|
132
|
+
targetForeignKey = fieldName;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
if (sourceForeignKey === null) {
|
|
136
|
+
const inferred = inferTargetRelationForeignKey(sourceModel, {
|
|
137
|
+
kind: "hasMany",
|
|
138
|
+
model: throughModel.name,
|
|
139
|
+
});
|
|
140
|
+
if (inferred in throughModel.fields) {
|
|
141
|
+
sourceForeignKey = inferred;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
if (targetForeignKey === null) {
|
|
145
|
+
const inferred = inferRelationForeignKey({
|
|
146
|
+
kind: "belongsTo",
|
|
147
|
+
model: relation.model,
|
|
148
|
+
});
|
|
149
|
+
if (inferred in throughModel.fields) {
|
|
150
|
+
targetForeignKey = inferred;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
if (!sourceForeignKey || !targetForeignKey) {
|
|
154
|
+
return null;
|
|
155
|
+
}
|
|
156
|
+
return {
|
|
157
|
+
throughModel,
|
|
158
|
+
sourceForeignKey,
|
|
159
|
+
targetForeignKey,
|
|
160
|
+
sourcePrimaryKey,
|
|
161
|
+
targetPrimaryKey,
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
export function stableFieldSignature(field) {
|
|
165
|
+
return JSON.stringify({
|
|
166
|
+
type: field.type,
|
|
167
|
+
required: field.required ?? false,
|
|
168
|
+
unique: field.unique ?? false,
|
|
169
|
+
default: field.default ?? null,
|
|
170
|
+
min: field.min ?? null,
|
|
171
|
+
max: field.max ?? null,
|
|
172
|
+
enum: field.enum ?? null,
|
|
173
|
+
dimensions: field.dimensions ?? null,
|
|
174
|
+
updatedAt: field.updatedAt ?? false,
|
|
175
|
+
autoId: field.autoId ?? false,
|
|
176
|
+
references: field.references ?? null,
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
export function indexSignature(index) {
|
|
180
|
+
return JSON.stringify({
|
|
181
|
+
fields: index.fields,
|
|
182
|
+
unique: index.unique ?? false,
|
|
183
|
+
order: index.order ?? null,
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
export function cloneDefaultValue(value) {
|
|
187
|
+
if (value === null || value === undefined)
|
|
188
|
+
return value;
|
|
189
|
+
if (typeof value !== "object")
|
|
190
|
+
return value;
|
|
191
|
+
if (typeof structuredClone === "function") {
|
|
192
|
+
return structuredClone(value);
|
|
193
|
+
}
|
|
194
|
+
return JSON.parse(JSON.stringify(value));
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=naming.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"naming.js","sourceRoot":"","sources":["../src/naming.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { PrepareWriteOptions } from "./write.js";
|
|
2
|
+
import type { DbProvider, ModelDefinition } from "./types.js";
|
|
3
|
+
type RecordRow = Record<string, unknown>;
|
|
4
|
+
export interface SqlMutationResult {
|
|
5
|
+
affectedRows: number;
|
|
6
|
+
rows?: RecordRow[];
|
|
7
|
+
}
|
|
8
|
+
export interface SqlRuntimeAdapter {
|
|
9
|
+
provider: DbProvider;
|
|
10
|
+
query: (sql: string, params?: unknown[]) => Promise<RecordRow[]>;
|
|
11
|
+
execute: (sql: string, params?: unknown[]) => Promise<SqlMutationResult>;
|
|
12
|
+
transaction: <T>(fn: (adapter: SqlRuntimeAdapter) => Promise<T>) => Promise<T>;
|
|
13
|
+
}
|
|
14
|
+
export interface QueryOrder {
|
|
15
|
+
field: string;
|
|
16
|
+
direction?: "asc" | "desc";
|
|
17
|
+
}
|
|
18
|
+
export interface FindManyOptions {
|
|
19
|
+
where?: Record<string, unknown>;
|
|
20
|
+
orderBy?: QueryOrder | QueryOrder[];
|
|
21
|
+
limit?: number;
|
|
22
|
+
offset?: number;
|
|
23
|
+
with?: string[];
|
|
24
|
+
}
|
|
25
|
+
export interface ModelRepository<M extends ModelDefinition = ModelDefinition> {
|
|
26
|
+
readonly model: M;
|
|
27
|
+
readonly tableName: string;
|
|
28
|
+
readonly primaryKeyField: string | null;
|
|
29
|
+
count: (where?: Record<string, unknown>) => Promise<number>;
|
|
30
|
+
findMany: (options?: FindManyOptions) => Promise<Array<RecordRow>>;
|
|
31
|
+
findById: (id: unknown, options?: Omit<FindManyOptions, "where" | "limit" | "offset">) => Promise<RecordRow | null>;
|
|
32
|
+
create: (input: Record<string, unknown>, options?: PrepareWriteOptions) => Promise<RecordRow>;
|
|
33
|
+
update: (id: unknown, input: Record<string, unknown>, options?: PrepareWriteOptions) => Promise<RecordRow | null>;
|
|
34
|
+
delete: (id: unknown) => Promise<boolean>;
|
|
35
|
+
relate: (id: unknown, relationName: string, options?: Omit<FindManyOptions, "where">) => Promise<unknown>;
|
|
36
|
+
}
|
|
37
|
+
export interface DatabaseRuntime {
|
|
38
|
+
db: unknown;
|
|
39
|
+
provider: DbProvider;
|
|
40
|
+
close: () => void | Promise<void>;
|
|
41
|
+
query: (sql: string, params?: unknown[]) => Promise<RecordRow[]>;
|
|
42
|
+
execute: (sql: string, params?: unknown[]) => Promise<SqlMutationResult>;
|
|
43
|
+
applyMigration: (statements: string[]) => Promise<void>;
|
|
44
|
+
registerModels: (models: ModelDefinition[]) => DatabaseRuntime;
|
|
45
|
+
model: <M extends ModelDefinition>(model: M | string) => ModelRepository<M>;
|
|
46
|
+
transaction: <T>(fn: (database: DatabaseRuntime) => Promise<T>) => Promise<T>;
|
|
47
|
+
readonly models: Record<string, ModelRepository<ModelDefinition>>;
|
|
48
|
+
}
|
|
49
|
+
export declare function createDatabaseRuntime(db: unknown, provider: DbProvider, close: () => void | Promise<void>, adapter: SqlRuntimeAdapter, initialModels?: Iterable<ModelDefinition>): DatabaseRuntime;
|
|
50
|
+
export {};
|
|
51
|
+
//# sourceMappingURL=runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
|