@farming-labs/orm 0.0.1 → 0.0.2
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/index.cjs +111 -39
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +43 -1
- package/dist/index.d.ts +43 -1
- package/dist/index.js +111 -39
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -168,37 +168,79 @@ type FindManyArgs<TSchema extends SchemaDefinition<any>, TModelName extends Mode
|
|
|
168
168
|
skip?: number;
|
|
169
169
|
};
|
|
170
170
|
type FindFirstArgs<TSchema extends SchemaDefinition<any>, TModelName extends ModelName<TSchema>, TSelect extends SelectShape<TSchema, TModelName> | undefined = undefined> = FindManyArgs<TSchema, TModelName, TSelect>;
|
|
171
|
+
type FindOneArgs<TSchema extends SchemaDefinition<any>, TModelName extends ModelName<TSchema>, TSelect extends SelectShape<TSchema, TModelName> | undefined = undefined> = FindFirstArgs<TSchema, TModelName, TSelect>;
|
|
172
|
+
type FindUniqueArgs<TSchema extends SchemaDefinition<any>, TModelName extends ModelName<TSchema>, TSelect extends SelectShape<TSchema, TModelName> | undefined = undefined> = {
|
|
173
|
+
where: Where<ScalarRecord<TSchema, TModelName>>;
|
|
174
|
+
select?: TSelect;
|
|
175
|
+
};
|
|
171
176
|
type CreateArgs<TSchema extends SchemaDefinition<any>, TModelName extends ModelName<TSchema>, TSelect extends SelectShape<TSchema, TModelName> | undefined = undefined> = {
|
|
172
177
|
data: Partial<ScalarRecord<TSchema, TModelName>>;
|
|
173
178
|
select?: TSelect;
|
|
174
179
|
};
|
|
180
|
+
type CreateManyArgs<TSchema extends SchemaDefinition<any>, TModelName extends ModelName<TSchema>, TSelect extends SelectShape<TSchema, TModelName> | undefined = undefined> = {
|
|
181
|
+
data: Array<Partial<ScalarRecord<TSchema, TModelName>>>;
|
|
182
|
+
select?: TSelect;
|
|
183
|
+
};
|
|
175
184
|
type UpdateArgs<TSchema extends SchemaDefinition<any>, TModelName extends ModelName<TSchema>, TSelect extends SelectShape<TSchema, TModelName> | undefined = undefined> = {
|
|
176
185
|
where: Where<ScalarRecord<TSchema, TModelName>>;
|
|
177
186
|
data: Partial<ScalarRecord<TSchema, TModelName>>;
|
|
178
187
|
select?: TSelect;
|
|
179
188
|
};
|
|
189
|
+
type UpdateManyArgs<TSchema extends SchemaDefinition<any>, TModelName extends ModelName<TSchema>> = {
|
|
190
|
+
where: Where<ScalarRecord<TSchema, TModelName>>;
|
|
191
|
+
data: Partial<ScalarRecord<TSchema, TModelName>>;
|
|
192
|
+
};
|
|
180
193
|
type DeleteArgs<TSchema extends SchemaDefinition<any>, TModelName extends ModelName<TSchema>> = {
|
|
181
194
|
where: Where<ScalarRecord<TSchema, TModelName>>;
|
|
182
195
|
};
|
|
196
|
+
type DeleteManyArgs<TSchema extends SchemaDefinition<any>, TModelName extends ModelName<TSchema>> = {
|
|
197
|
+
where: Where<ScalarRecord<TSchema, TModelName>>;
|
|
198
|
+
};
|
|
199
|
+
type CountArgs<TSchema extends SchemaDefinition<any>, TModelName extends ModelName<TSchema>> = {
|
|
200
|
+
where?: Where<ScalarRecord<TSchema, TModelName>>;
|
|
201
|
+
};
|
|
202
|
+
type UpsertArgs<TSchema extends SchemaDefinition<any>, TModelName extends ModelName<TSchema>, TSelect extends SelectShape<TSchema, TModelName> | undefined = undefined> = {
|
|
203
|
+
where: Where<ScalarRecord<TSchema, TModelName>>;
|
|
204
|
+
create: Partial<ScalarRecord<TSchema, TModelName>>;
|
|
205
|
+
update: Partial<ScalarRecord<TSchema, TModelName>>;
|
|
206
|
+
select?: TSelect;
|
|
207
|
+
};
|
|
183
208
|
interface OrmDriver<TSchema extends SchemaDefinition<any>> {
|
|
184
209
|
findMany<TModelName extends ModelName<TSchema>, TSelect extends SelectShape<TSchema, TModelName> | undefined = undefined>(schema: TSchema, model: TModelName, args: FindManyArgs<TSchema, TModelName, TSelect>): Promise<Array<SelectedRecord<TSchema, TModelName, TSelect>>>;
|
|
185
210
|
findFirst<TModelName extends ModelName<TSchema>, TSelect extends SelectShape<TSchema, TModelName> | undefined = undefined>(schema: TSchema, model: TModelName, args: FindFirstArgs<TSchema, TModelName, TSelect>): Promise<SelectedRecord<TSchema, TModelName, TSelect> | null>;
|
|
211
|
+
findUnique<TModelName extends ModelName<TSchema>, TSelect extends SelectShape<TSchema, TModelName> | undefined = undefined>(schema: TSchema, model: TModelName, args: FindUniqueArgs<TSchema, TModelName, TSelect>): Promise<SelectedRecord<TSchema, TModelName, TSelect> | null>;
|
|
212
|
+
count<TModelName extends ModelName<TSchema>>(schema: TSchema, model: TModelName, args?: CountArgs<TSchema, TModelName>): Promise<number>;
|
|
186
213
|
create<TModelName extends ModelName<TSchema>, TSelect extends SelectShape<TSchema, TModelName> | undefined = undefined>(schema: TSchema, model: TModelName, args: CreateArgs<TSchema, TModelName, TSelect>): Promise<SelectedRecord<TSchema, TModelName, TSelect>>;
|
|
214
|
+
createMany<TModelName extends ModelName<TSchema>, TSelect extends SelectShape<TSchema, TModelName> | undefined = undefined>(schema: TSchema, model: TModelName, args: CreateManyArgs<TSchema, TModelName, TSelect>): Promise<Array<SelectedRecord<TSchema, TModelName, TSelect>>>;
|
|
187
215
|
update<TModelName extends ModelName<TSchema>, TSelect extends SelectShape<TSchema, TModelName> | undefined = undefined>(schema: TSchema, model: TModelName, args: UpdateArgs<TSchema, TModelName, TSelect>): Promise<SelectedRecord<TSchema, TModelName, TSelect> | null>;
|
|
216
|
+
updateMany<TModelName extends ModelName<TSchema>>(schema: TSchema, model: TModelName, args: UpdateManyArgs<TSchema, TModelName>): Promise<number>;
|
|
217
|
+
upsert<TModelName extends ModelName<TSchema>, TSelect extends SelectShape<TSchema, TModelName> | undefined = undefined>(schema: TSchema, model: TModelName, args: UpsertArgs<TSchema, TModelName, TSelect>): Promise<SelectedRecord<TSchema, TModelName, TSelect>>;
|
|
188
218
|
delete<TModelName extends ModelName<TSchema>>(schema: TSchema, model: TModelName, args: DeleteArgs<TSchema, TModelName>): Promise<number>;
|
|
219
|
+
deleteMany<TModelName extends ModelName<TSchema>>(schema: TSchema, model: TModelName, args: DeleteManyArgs<TSchema, TModelName>): Promise<number>;
|
|
189
220
|
transaction<TResult>(schema: TSchema, run: (driver: OrmDriver<TSchema>) => Promise<TResult>): Promise<TResult>;
|
|
190
221
|
}
|
|
191
222
|
type ModelClient<TSchema extends SchemaDefinition<any>, TModelName extends ModelName<TSchema>> = {
|
|
192
223
|
findMany<TSelect extends SelectShape<TSchema, TModelName> | undefined = undefined>(args?: FindManyArgs<TSchema, TModelName, TSelect>): Promise<Array<SelectedRecord<TSchema, TModelName, TSelect>>>;
|
|
224
|
+
findOne<TSelect extends SelectShape<TSchema, TModelName> | undefined = undefined>(args?: FindOneArgs<TSchema, TModelName, TSelect>): Promise<SelectedRecord<TSchema, TModelName, TSelect> | null>;
|
|
193
225
|
findFirst<TSelect extends SelectShape<TSchema, TModelName> | undefined = undefined>(args?: FindFirstArgs<TSchema, TModelName, TSelect>): Promise<SelectedRecord<TSchema, TModelName, TSelect> | null>;
|
|
226
|
+
findUnique<TSelect extends SelectShape<TSchema, TModelName> | undefined = undefined>(args: FindUniqueArgs<TSchema, TModelName, TSelect>): Promise<SelectedRecord<TSchema, TModelName, TSelect> | null>;
|
|
227
|
+
count(args?: CountArgs<TSchema, TModelName>): Promise<number>;
|
|
194
228
|
create<TSelect extends SelectShape<TSchema, TModelName> | undefined = undefined>(args: CreateArgs<TSchema, TModelName, TSelect>): Promise<SelectedRecord<TSchema, TModelName, TSelect>>;
|
|
229
|
+
createMany<TSelect extends SelectShape<TSchema, TModelName> | undefined = undefined>(args: CreateManyArgs<TSchema, TModelName, TSelect>): Promise<Array<SelectedRecord<TSchema, TModelName, TSelect>>>;
|
|
195
230
|
update<TSelect extends SelectShape<TSchema, TModelName> | undefined = undefined>(args: UpdateArgs<TSchema, TModelName, TSelect>): Promise<SelectedRecord<TSchema, TModelName, TSelect> | null>;
|
|
231
|
+
updateMany(args: UpdateManyArgs<TSchema, TModelName>): Promise<number>;
|
|
232
|
+
upsert<TSelect extends SelectShape<TSchema, TModelName> | undefined = undefined>(args: UpsertArgs<TSchema, TModelName, TSelect>): Promise<SelectedRecord<TSchema, TModelName, TSelect>>;
|
|
196
233
|
delete(args: DeleteArgs<TSchema, TModelName>): Promise<number>;
|
|
234
|
+
deleteMany(args: DeleteManyArgs<TSchema, TModelName>): Promise<number>;
|
|
197
235
|
};
|
|
236
|
+
type BatchTask<TSchema extends SchemaDefinition<any>, TResult> = (tx: OrmClient<TSchema>) => Promise<TResult>;
|
|
198
237
|
type OrmClient<TSchema extends SchemaDefinition<any>> = {
|
|
199
238
|
[K in ModelName<TSchema>]: ModelClient<TSchema, K>;
|
|
200
239
|
} & {
|
|
201
240
|
transaction<TResult>(run: (tx: OrmClient<TSchema>) => Promise<TResult>): Promise<TResult>;
|
|
241
|
+
batch<const TResult extends readonly unknown[]>(tasks: {
|
|
242
|
+
[K in keyof TResult]: BatchTask<TSchema, TResult[K]>;
|
|
243
|
+
}): Promise<TResult>;
|
|
202
244
|
};
|
|
203
245
|
declare function createOrm<TSchema extends SchemaDefinition<any>>(options: {
|
|
204
246
|
schema: TSchema;
|
|
@@ -251,4 +293,4 @@ declare function createManifest<TSchema extends SchemaDefinition<Record<string,
|
|
|
251
293
|
type MemoryStore<TSchema extends SchemaDefinition<any>> = Partial<Record<ModelName<TSchema>, Array<Record<string, unknown>>>>;
|
|
252
294
|
declare function createMemoryDriver<TSchema extends SchemaDefinition<any>>(seed?: MemoryStore<TSchema>): OrmDriver<TSchema>;
|
|
253
295
|
|
|
254
|
-
export { type AnyFieldBuilder, type AnyModelDefinition, type AnyRelation, type CreateArgs, type DeleteArgs, type DrizzleGenerationOptions, FieldBuilder, type FieldConfig, type FieldMap, type FieldOutput, type FieldReference, type FindFirstArgs, type FindManyArgs, type ManifestField, type ManifestModel, type ModelClient, type ModelDefinition, type ModelFields, type ModelForName, type ModelName, type ModelRelations, type OrmClient, type OrmDriver, type PrismaGenerationOptions, type RelationDefinition, type RelationForName, type RelationKind, type RelationMap, type RelationName, type RelationTarget, type ScalarKind, type ScalarRecord, type ScalarValue, type SchemaDefinition, type SchemaManifest, type SchemaModels, type SelectShape, type SelectedRecord, type SqlGenerationOptions, type UpdateArgs, type Where, belongsTo, boolean, createManifest, createMemoryDriver, createOrm, datetime, defineSchema, hasMany, hasOne, id, manyToMany, model, renderDrizzleSchema, renderPrismaSchema, renderSafeSql, replaceGeneratedBlock, string };
|
|
296
|
+
export { type AnyFieldBuilder, type AnyModelDefinition, type AnyRelation, type BatchTask, type CountArgs, type CreateArgs, type CreateManyArgs, type DeleteArgs, type DeleteManyArgs, type DrizzleGenerationOptions, FieldBuilder, type FieldConfig, type FieldMap, type FieldOutput, type FieldReference, type FindFirstArgs, type FindManyArgs, type FindOneArgs, type FindUniqueArgs, type ManifestField, type ManifestModel, type ModelClient, type ModelDefinition, type ModelFields, type ModelForName, type ModelName, type ModelRelations, type OrmClient, type OrmDriver, type PrismaGenerationOptions, type RelationDefinition, type RelationForName, type RelationKind, type RelationMap, type RelationName, type RelationTarget, type ScalarKind, type ScalarRecord, type ScalarValue, type SchemaDefinition, type SchemaManifest, type SchemaModels, type SelectShape, type SelectedRecord, type SqlGenerationOptions, type UpdateArgs, type UpdateManyArgs, type UpsertArgs, type Where, belongsTo, boolean, createManifest, createMemoryDriver, createOrm, datetime, defineSchema, hasMany, hasOne, id, manyToMany, model, renderDrizzleSchema, renderPrismaSchema, renderSafeSql, replaceGeneratedBlock, string };
|
package/dist/index.d.ts
CHANGED
|
@@ -168,37 +168,79 @@ type FindManyArgs<TSchema extends SchemaDefinition<any>, TModelName extends Mode
|
|
|
168
168
|
skip?: number;
|
|
169
169
|
};
|
|
170
170
|
type FindFirstArgs<TSchema extends SchemaDefinition<any>, TModelName extends ModelName<TSchema>, TSelect extends SelectShape<TSchema, TModelName> | undefined = undefined> = FindManyArgs<TSchema, TModelName, TSelect>;
|
|
171
|
+
type FindOneArgs<TSchema extends SchemaDefinition<any>, TModelName extends ModelName<TSchema>, TSelect extends SelectShape<TSchema, TModelName> | undefined = undefined> = FindFirstArgs<TSchema, TModelName, TSelect>;
|
|
172
|
+
type FindUniqueArgs<TSchema extends SchemaDefinition<any>, TModelName extends ModelName<TSchema>, TSelect extends SelectShape<TSchema, TModelName> | undefined = undefined> = {
|
|
173
|
+
where: Where<ScalarRecord<TSchema, TModelName>>;
|
|
174
|
+
select?: TSelect;
|
|
175
|
+
};
|
|
171
176
|
type CreateArgs<TSchema extends SchemaDefinition<any>, TModelName extends ModelName<TSchema>, TSelect extends SelectShape<TSchema, TModelName> | undefined = undefined> = {
|
|
172
177
|
data: Partial<ScalarRecord<TSchema, TModelName>>;
|
|
173
178
|
select?: TSelect;
|
|
174
179
|
};
|
|
180
|
+
type CreateManyArgs<TSchema extends SchemaDefinition<any>, TModelName extends ModelName<TSchema>, TSelect extends SelectShape<TSchema, TModelName> | undefined = undefined> = {
|
|
181
|
+
data: Array<Partial<ScalarRecord<TSchema, TModelName>>>;
|
|
182
|
+
select?: TSelect;
|
|
183
|
+
};
|
|
175
184
|
type UpdateArgs<TSchema extends SchemaDefinition<any>, TModelName extends ModelName<TSchema>, TSelect extends SelectShape<TSchema, TModelName> | undefined = undefined> = {
|
|
176
185
|
where: Where<ScalarRecord<TSchema, TModelName>>;
|
|
177
186
|
data: Partial<ScalarRecord<TSchema, TModelName>>;
|
|
178
187
|
select?: TSelect;
|
|
179
188
|
};
|
|
189
|
+
type UpdateManyArgs<TSchema extends SchemaDefinition<any>, TModelName extends ModelName<TSchema>> = {
|
|
190
|
+
where: Where<ScalarRecord<TSchema, TModelName>>;
|
|
191
|
+
data: Partial<ScalarRecord<TSchema, TModelName>>;
|
|
192
|
+
};
|
|
180
193
|
type DeleteArgs<TSchema extends SchemaDefinition<any>, TModelName extends ModelName<TSchema>> = {
|
|
181
194
|
where: Where<ScalarRecord<TSchema, TModelName>>;
|
|
182
195
|
};
|
|
196
|
+
type DeleteManyArgs<TSchema extends SchemaDefinition<any>, TModelName extends ModelName<TSchema>> = {
|
|
197
|
+
where: Where<ScalarRecord<TSchema, TModelName>>;
|
|
198
|
+
};
|
|
199
|
+
type CountArgs<TSchema extends SchemaDefinition<any>, TModelName extends ModelName<TSchema>> = {
|
|
200
|
+
where?: Where<ScalarRecord<TSchema, TModelName>>;
|
|
201
|
+
};
|
|
202
|
+
type UpsertArgs<TSchema extends SchemaDefinition<any>, TModelName extends ModelName<TSchema>, TSelect extends SelectShape<TSchema, TModelName> | undefined = undefined> = {
|
|
203
|
+
where: Where<ScalarRecord<TSchema, TModelName>>;
|
|
204
|
+
create: Partial<ScalarRecord<TSchema, TModelName>>;
|
|
205
|
+
update: Partial<ScalarRecord<TSchema, TModelName>>;
|
|
206
|
+
select?: TSelect;
|
|
207
|
+
};
|
|
183
208
|
interface OrmDriver<TSchema extends SchemaDefinition<any>> {
|
|
184
209
|
findMany<TModelName extends ModelName<TSchema>, TSelect extends SelectShape<TSchema, TModelName> | undefined = undefined>(schema: TSchema, model: TModelName, args: FindManyArgs<TSchema, TModelName, TSelect>): Promise<Array<SelectedRecord<TSchema, TModelName, TSelect>>>;
|
|
185
210
|
findFirst<TModelName extends ModelName<TSchema>, TSelect extends SelectShape<TSchema, TModelName> | undefined = undefined>(schema: TSchema, model: TModelName, args: FindFirstArgs<TSchema, TModelName, TSelect>): Promise<SelectedRecord<TSchema, TModelName, TSelect> | null>;
|
|
211
|
+
findUnique<TModelName extends ModelName<TSchema>, TSelect extends SelectShape<TSchema, TModelName> | undefined = undefined>(schema: TSchema, model: TModelName, args: FindUniqueArgs<TSchema, TModelName, TSelect>): Promise<SelectedRecord<TSchema, TModelName, TSelect> | null>;
|
|
212
|
+
count<TModelName extends ModelName<TSchema>>(schema: TSchema, model: TModelName, args?: CountArgs<TSchema, TModelName>): Promise<number>;
|
|
186
213
|
create<TModelName extends ModelName<TSchema>, TSelect extends SelectShape<TSchema, TModelName> | undefined = undefined>(schema: TSchema, model: TModelName, args: CreateArgs<TSchema, TModelName, TSelect>): Promise<SelectedRecord<TSchema, TModelName, TSelect>>;
|
|
214
|
+
createMany<TModelName extends ModelName<TSchema>, TSelect extends SelectShape<TSchema, TModelName> | undefined = undefined>(schema: TSchema, model: TModelName, args: CreateManyArgs<TSchema, TModelName, TSelect>): Promise<Array<SelectedRecord<TSchema, TModelName, TSelect>>>;
|
|
187
215
|
update<TModelName extends ModelName<TSchema>, TSelect extends SelectShape<TSchema, TModelName> | undefined = undefined>(schema: TSchema, model: TModelName, args: UpdateArgs<TSchema, TModelName, TSelect>): Promise<SelectedRecord<TSchema, TModelName, TSelect> | null>;
|
|
216
|
+
updateMany<TModelName extends ModelName<TSchema>>(schema: TSchema, model: TModelName, args: UpdateManyArgs<TSchema, TModelName>): Promise<number>;
|
|
217
|
+
upsert<TModelName extends ModelName<TSchema>, TSelect extends SelectShape<TSchema, TModelName> | undefined = undefined>(schema: TSchema, model: TModelName, args: UpsertArgs<TSchema, TModelName, TSelect>): Promise<SelectedRecord<TSchema, TModelName, TSelect>>;
|
|
188
218
|
delete<TModelName extends ModelName<TSchema>>(schema: TSchema, model: TModelName, args: DeleteArgs<TSchema, TModelName>): Promise<number>;
|
|
219
|
+
deleteMany<TModelName extends ModelName<TSchema>>(schema: TSchema, model: TModelName, args: DeleteManyArgs<TSchema, TModelName>): Promise<number>;
|
|
189
220
|
transaction<TResult>(schema: TSchema, run: (driver: OrmDriver<TSchema>) => Promise<TResult>): Promise<TResult>;
|
|
190
221
|
}
|
|
191
222
|
type ModelClient<TSchema extends SchemaDefinition<any>, TModelName extends ModelName<TSchema>> = {
|
|
192
223
|
findMany<TSelect extends SelectShape<TSchema, TModelName> | undefined = undefined>(args?: FindManyArgs<TSchema, TModelName, TSelect>): Promise<Array<SelectedRecord<TSchema, TModelName, TSelect>>>;
|
|
224
|
+
findOne<TSelect extends SelectShape<TSchema, TModelName> | undefined = undefined>(args?: FindOneArgs<TSchema, TModelName, TSelect>): Promise<SelectedRecord<TSchema, TModelName, TSelect> | null>;
|
|
193
225
|
findFirst<TSelect extends SelectShape<TSchema, TModelName> | undefined = undefined>(args?: FindFirstArgs<TSchema, TModelName, TSelect>): Promise<SelectedRecord<TSchema, TModelName, TSelect> | null>;
|
|
226
|
+
findUnique<TSelect extends SelectShape<TSchema, TModelName> | undefined = undefined>(args: FindUniqueArgs<TSchema, TModelName, TSelect>): Promise<SelectedRecord<TSchema, TModelName, TSelect> | null>;
|
|
227
|
+
count(args?: CountArgs<TSchema, TModelName>): Promise<number>;
|
|
194
228
|
create<TSelect extends SelectShape<TSchema, TModelName> | undefined = undefined>(args: CreateArgs<TSchema, TModelName, TSelect>): Promise<SelectedRecord<TSchema, TModelName, TSelect>>;
|
|
229
|
+
createMany<TSelect extends SelectShape<TSchema, TModelName> | undefined = undefined>(args: CreateManyArgs<TSchema, TModelName, TSelect>): Promise<Array<SelectedRecord<TSchema, TModelName, TSelect>>>;
|
|
195
230
|
update<TSelect extends SelectShape<TSchema, TModelName> | undefined = undefined>(args: UpdateArgs<TSchema, TModelName, TSelect>): Promise<SelectedRecord<TSchema, TModelName, TSelect> | null>;
|
|
231
|
+
updateMany(args: UpdateManyArgs<TSchema, TModelName>): Promise<number>;
|
|
232
|
+
upsert<TSelect extends SelectShape<TSchema, TModelName> | undefined = undefined>(args: UpsertArgs<TSchema, TModelName, TSelect>): Promise<SelectedRecord<TSchema, TModelName, TSelect>>;
|
|
196
233
|
delete(args: DeleteArgs<TSchema, TModelName>): Promise<number>;
|
|
234
|
+
deleteMany(args: DeleteManyArgs<TSchema, TModelName>): Promise<number>;
|
|
197
235
|
};
|
|
236
|
+
type BatchTask<TSchema extends SchemaDefinition<any>, TResult> = (tx: OrmClient<TSchema>) => Promise<TResult>;
|
|
198
237
|
type OrmClient<TSchema extends SchemaDefinition<any>> = {
|
|
199
238
|
[K in ModelName<TSchema>]: ModelClient<TSchema, K>;
|
|
200
239
|
} & {
|
|
201
240
|
transaction<TResult>(run: (tx: OrmClient<TSchema>) => Promise<TResult>): Promise<TResult>;
|
|
241
|
+
batch<const TResult extends readonly unknown[]>(tasks: {
|
|
242
|
+
[K in keyof TResult]: BatchTask<TSchema, TResult[K]>;
|
|
243
|
+
}): Promise<TResult>;
|
|
202
244
|
};
|
|
203
245
|
declare function createOrm<TSchema extends SchemaDefinition<any>>(options: {
|
|
204
246
|
schema: TSchema;
|
|
@@ -251,4 +293,4 @@ declare function createManifest<TSchema extends SchemaDefinition<Record<string,
|
|
|
251
293
|
type MemoryStore<TSchema extends SchemaDefinition<any>> = Partial<Record<ModelName<TSchema>, Array<Record<string, unknown>>>>;
|
|
252
294
|
declare function createMemoryDriver<TSchema extends SchemaDefinition<any>>(seed?: MemoryStore<TSchema>): OrmDriver<TSchema>;
|
|
253
295
|
|
|
254
|
-
export { type AnyFieldBuilder, type AnyModelDefinition, type AnyRelation, type CreateArgs, type DeleteArgs, type DrizzleGenerationOptions, FieldBuilder, type FieldConfig, type FieldMap, type FieldOutput, type FieldReference, type FindFirstArgs, type FindManyArgs, type ManifestField, type ManifestModel, type ModelClient, type ModelDefinition, type ModelFields, type ModelForName, type ModelName, type ModelRelations, type OrmClient, type OrmDriver, type PrismaGenerationOptions, type RelationDefinition, type RelationForName, type RelationKind, type RelationMap, type RelationName, type RelationTarget, type ScalarKind, type ScalarRecord, type ScalarValue, type SchemaDefinition, type SchemaManifest, type SchemaModels, type SelectShape, type SelectedRecord, type SqlGenerationOptions, type UpdateArgs, type Where, belongsTo, boolean, createManifest, createMemoryDriver, createOrm, datetime, defineSchema, hasMany, hasOne, id, manyToMany, model, renderDrizzleSchema, renderPrismaSchema, renderSafeSql, replaceGeneratedBlock, string };
|
|
296
|
+
export { type AnyFieldBuilder, type AnyModelDefinition, type AnyRelation, type BatchTask, type CountArgs, type CreateArgs, type CreateManyArgs, type DeleteArgs, type DeleteManyArgs, type DrizzleGenerationOptions, FieldBuilder, type FieldConfig, type FieldMap, type FieldOutput, type FieldReference, type FindFirstArgs, type FindManyArgs, type FindOneArgs, type FindUniqueArgs, type ManifestField, type ManifestModel, type ModelClient, type ModelDefinition, type ModelFields, type ModelForName, type ModelName, type ModelRelations, type OrmClient, type OrmDriver, type PrismaGenerationOptions, type RelationDefinition, type RelationForName, type RelationKind, type RelationMap, type RelationName, type RelationTarget, type ScalarKind, type ScalarRecord, type ScalarValue, type SchemaDefinition, type SchemaManifest, type SchemaModels, type SelectShape, type SelectedRecord, type SqlGenerationOptions, type UpdateArgs, type UpdateManyArgs, type UpsertArgs, type Where, belongsTo, boolean, createManifest, createMemoryDriver, createOrm, datetime, defineSchema, hasMany, hasOne, id, manyToMany, model, renderDrizzleSchema, renderPrismaSchema, renderSafeSql, replaceGeneratedBlock, string };
|
package/dist/index.js
CHANGED
|
@@ -4,17 +4,38 @@ function createModelClient(schema, driver, model2) {
|
|
|
4
4
|
findMany(args) {
|
|
5
5
|
return driver.findMany(schema, model2, args ?? {});
|
|
6
6
|
},
|
|
7
|
+
findOne(args) {
|
|
8
|
+
return driver.findFirst(schema, model2, args ?? {});
|
|
9
|
+
},
|
|
7
10
|
findFirst(args) {
|
|
8
11
|
return driver.findFirst(schema, model2, args ?? {});
|
|
9
12
|
},
|
|
13
|
+
findUnique(args) {
|
|
14
|
+
return driver.findUnique(schema, model2, args);
|
|
15
|
+
},
|
|
16
|
+
count(args) {
|
|
17
|
+
return driver.count(schema, model2, args);
|
|
18
|
+
},
|
|
10
19
|
create(args) {
|
|
11
20
|
return driver.create(schema, model2, args);
|
|
12
21
|
},
|
|
22
|
+
createMany(args) {
|
|
23
|
+
return driver.createMany(schema, model2, args);
|
|
24
|
+
},
|
|
13
25
|
update(args) {
|
|
14
26
|
return driver.update(schema, model2, args);
|
|
15
27
|
},
|
|
28
|
+
updateMany(args) {
|
|
29
|
+
return driver.updateMany(schema, model2, args);
|
|
30
|
+
},
|
|
31
|
+
upsert(args) {
|
|
32
|
+
return driver.upsert(schema, model2, args);
|
|
33
|
+
},
|
|
16
34
|
delete(args) {
|
|
17
35
|
return driver.delete(schema, model2, args);
|
|
36
|
+
},
|
|
37
|
+
deleteMany(args) {
|
|
38
|
+
return driver.deleteMany(schema, model2, args);
|
|
18
39
|
}
|
|
19
40
|
};
|
|
20
41
|
}
|
|
@@ -32,6 +53,13 @@ function createOrm(options) {
|
|
|
32
53
|
});
|
|
33
54
|
return run(tx);
|
|
34
55
|
});
|
|
56
|
+
orm.batch = async (tasks) => orm.transaction(async (tx) => {
|
|
57
|
+
const results = [];
|
|
58
|
+
for (const task of tasks) {
|
|
59
|
+
results.push(await task(tx));
|
|
60
|
+
}
|
|
61
|
+
return results;
|
|
62
|
+
});
|
|
35
63
|
return orm;
|
|
36
64
|
}
|
|
37
65
|
|
|
@@ -226,7 +254,7 @@ function sqlType(field, dialect) {
|
|
|
226
254
|
return dialect === "mysql" ? "varchar(191)" : "text";
|
|
227
255
|
}
|
|
228
256
|
if (field.kind === "string") {
|
|
229
|
-
return dialect === "mysql" && field.unique ? "varchar(191)" : "text";
|
|
257
|
+
return dialect === "mysql" && (field.unique || field.references) ? "varchar(191)" : "text";
|
|
230
258
|
}
|
|
231
259
|
if (field.kind === "boolean") {
|
|
232
260
|
return dialect === "sqlite" ? "integer" : "boolean";
|
|
@@ -239,6 +267,12 @@ function sqlType(field, dialect) {
|
|
|
239
267
|
}
|
|
240
268
|
return "timestamp";
|
|
241
269
|
}
|
|
270
|
+
function sqlIdentifier(dialect, value) {
|
|
271
|
+
if (dialect === "mysql") {
|
|
272
|
+
return `\`${value}\``;
|
|
273
|
+
}
|
|
274
|
+
return `"${value}"`;
|
|
275
|
+
}
|
|
242
276
|
function renderPrismaSchema(schema, options = {}) {
|
|
243
277
|
const manifest = createManifest(schema);
|
|
244
278
|
const provider = options.provider ?? "postgresql";
|
|
@@ -333,7 +367,9 @@ function renderSafeSql(schema, options) {
|
|
|
333
367
|
const manifest = createManifest(schema);
|
|
334
368
|
const statements = Object.values(manifest.models).map((model2) => {
|
|
335
369
|
const columns = Object.values(model2.fields).map((field) => {
|
|
336
|
-
const parts = [
|
|
370
|
+
const parts = [
|
|
371
|
+
`${sqlIdentifier(options.dialect, field.column)} ${sqlType(field, options.dialect)}`
|
|
372
|
+
];
|
|
337
373
|
if (field.kind === "id") parts.push("primary key");
|
|
338
374
|
if (!field.nullable) parts.push("not null");
|
|
339
375
|
if (field.unique && field.kind !== "id") parts.push("unique");
|
|
@@ -345,11 +381,17 @@ function renderSafeSql(schema, options) {
|
|
|
345
381
|
if (field.references) {
|
|
346
382
|
const [targetModel, targetField] = field.references.split(".");
|
|
347
383
|
const targetTable = manifest.models[targetModel]?.table ?? targetModel;
|
|
348
|
-
|
|
384
|
+
const targetColumn = manifest.models[targetModel]?.fields[targetField]?.column ?? targetField;
|
|
385
|
+
parts.push(
|
|
386
|
+
`references ${sqlIdentifier(options.dialect, targetTable)}(${sqlIdentifier(
|
|
387
|
+
options.dialect,
|
|
388
|
+
targetColumn
|
|
389
|
+
)})`
|
|
390
|
+
);
|
|
349
391
|
}
|
|
350
392
|
return ` ${parts.join(" ")}`;
|
|
351
393
|
});
|
|
352
|
-
return `create table if not exists ${model2.table} (
|
|
394
|
+
return `create table if not exists ${sqlIdentifier(options.dialect, model2.table)} (
|
|
353
395
|
${columns.join(",\n")}
|
|
354
396
|
);`;
|
|
355
397
|
});
|
|
@@ -466,6 +508,11 @@ function pageRows(rows, skip, take) {
|
|
|
466
508
|
const end = take === void 0 ? void 0 : start + take;
|
|
467
509
|
return rows.slice(start, end);
|
|
468
510
|
}
|
|
511
|
+
function applyQuery(rows, args = {}) {
|
|
512
|
+
const filtered = rows.filter((row) => matchesWhere(row, args.where));
|
|
513
|
+
const sorted = sortRows(filtered, args.orderBy);
|
|
514
|
+
return pageRows(sorted, args.skip, args.take);
|
|
515
|
+
}
|
|
469
516
|
function createMemoryDriver(seed) {
|
|
470
517
|
const state = structuredClone(seed ?? {});
|
|
471
518
|
function getRows(model2) {
|
|
@@ -473,14 +520,13 @@ function createMemoryDriver(seed) {
|
|
|
473
520
|
state[model2] = rows;
|
|
474
521
|
return rows;
|
|
475
522
|
}
|
|
476
|
-
function
|
|
477
|
-
const
|
|
478
|
-
const
|
|
479
|
-
const
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
return pageRows(sorted, args.skip, args.take);
|
|
523
|
+
function buildRow(schema, model2, data) {
|
|
524
|
+
const modelDefinition = schema.models[model2];
|
|
525
|
+
const nextRow = {};
|
|
526
|
+
for (const [fieldName, field] of Object.entries(modelDefinition.fields)) {
|
|
527
|
+
nextRow[fieldName] = applyDefault(data[fieldName], field.config);
|
|
528
|
+
}
|
|
529
|
+
return nextRow;
|
|
484
530
|
}
|
|
485
531
|
async function projectRow(schema, model2, row, select) {
|
|
486
532
|
const modelDefinition = schema.models[model2];
|
|
@@ -513,28 +559,27 @@ function createMemoryDriver(seed) {
|
|
|
513
559
|
const relation = schema.models[model2].relations[relationName];
|
|
514
560
|
const relationArgs = value === true ? {} : value;
|
|
515
561
|
if (relation.kind === "belongsTo") {
|
|
516
|
-
const targetRows2 = getRows(relation.target);
|
|
517
562
|
const foreignValue = row[relation.foreignKey];
|
|
518
|
-
const
|
|
563
|
+
const targetRows2 = getRows(relation.target).filter(
|
|
564
|
+
(item) => item.id === foreignValue
|
|
565
|
+
);
|
|
566
|
+
const target = applyQuery(targetRows2, relationArgs)[0];
|
|
519
567
|
return target ? projectRow(schema, relation.target, target, relationArgs.select) : null;
|
|
520
568
|
}
|
|
521
569
|
if (relation.kind === "hasOne") {
|
|
522
|
-
const targetRows2 = getRows(relation.target)
|
|
523
|
-
|
|
570
|
+
const targetRows2 = getRows(relation.target).filter(
|
|
571
|
+
(item) => item[relation.foreignKey] === row.id
|
|
572
|
+
);
|
|
573
|
+
const target = applyQuery(targetRows2, relationArgs)[0];
|
|
524
574
|
return target ? projectRow(schema, relation.target, target, relationArgs.select) : null;
|
|
525
575
|
}
|
|
526
576
|
if (relation.kind === "hasMany") {
|
|
527
577
|
const targetRows2 = getRows(relation.target).filter(
|
|
528
578
|
(item) => item[relation.foreignKey] === row.id
|
|
529
579
|
);
|
|
530
|
-
const
|
|
531
|
-
targetRows2,
|
|
532
|
-
relationArgs.orderBy
|
|
533
|
-
);
|
|
534
|
-
const paged2 = pageRows(sorted2, relationArgs.skip, relationArgs.take);
|
|
535
|
-
const filtered2 = paged2.filter((item) => matchesWhere(item, relationArgs.where));
|
|
580
|
+
const matchedRows2 = applyQuery(targetRows2, relationArgs);
|
|
536
581
|
return Promise.all(
|
|
537
|
-
|
|
582
|
+
matchedRows2.map(
|
|
538
583
|
(item) => projectRow(schema, relation.target, item, relationArgs.select)
|
|
539
584
|
)
|
|
540
585
|
);
|
|
@@ -546,45 +591,72 @@ function createMemoryDriver(seed) {
|
|
|
546
591
|
const targetRows = getRows(relation.target).filter(
|
|
547
592
|
(item) => targetIds.includes(item.id)
|
|
548
593
|
);
|
|
549
|
-
const
|
|
550
|
-
targetRows,
|
|
551
|
-
relationArgs.orderBy
|
|
552
|
-
);
|
|
553
|
-
const paged = pageRows(sorted, relationArgs.skip, relationArgs.take);
|
|
554
|
-
const filtered = paged.filter((item) => matchesWhere(item, relationArgs.where));
|
|
594
|
+
const matchedRows = applyQuery(targetRows, relationArgs);
|
|
555
595
|
return Promise.all(
|
|
556
|
-
|
|
596
|
+
matchedRows.map(
|
|
557
597
|
(item) => projectRow(schema, relation.target, item, relationArgs.select)
|
|
558
598
|
)
|
|
559
599
|
);
|
|
560
600
|
}
|
|
561
601
|
const driver = {
|
|
562
602
|
async findMany(schema, model2, args) {
|
|
563
|
-
const rows = applyQuery(model2, args);
|
|
603
|
+
const rows = applyQuery(getRows(model2), args);
|
|
564
604
|
return Promise.all(rows.map((row) => projectRow(schema, model2, row, args.select)));
|
|
565
605
|
},
|
|
566
606
|
async findFirst(schema, model2, args) {
|
|
567
|
-
const row = applyQuery(model2, args)[0];
|
|
607
|
+
const row = applyQuery(getRows(model2), args)[0];
|
|
568
608
|
if (!row) return null;
|
|
569
609
|
return projectRow(schema, model2, row, args.select);
|
|
570
610
|
},
|
|
611
|
+
async findUnique(schema, model2, args) {
|
|
612
|
+
const row = applyQuery(getRows(model2), args)[0];
|
|
613
|
+
if (!row) return null;
|
|
614
|
+
return projectRow(schema, model2, row, args.select);
|
|
615
|
+
},
|
|
616
|
+
async count(_schema, model2, args) {
|
|
617
|
+
return applyQuery(getRows(model2), args).length;
|
|
618
|
+
},
|
|
571
619
|
async create(schema, model2, args) {
|
|
572
|
-
const
|
|
573
|
-
const nextRow = {};
|
|
574
|
-
for (const [fieldName, field] of Object.entries(modelDefinition.fields)) {
|
|
575
|
-
nextRow[fieldName] = applyDefault(args.data[fieldName], field.config);
|
|
576
|
-
}
|
|
620
|
+
const nextRow = buildRow(schema, model2, args.data);
|
|
577
621
|
getRows(model2).push(nextRow);
|
|
578
622
|
return projectRow(schema, model2, nextRow, args.select);
|
|
579
623
|
},
|
|
624
|
+
async createMany(schema, model2, args) {
|
|
625
|
+
const rows = args.data.map((entry) => buildRow(schema, model2, entry));
|
|
626
|
+
getRows(model2).push(...rows);
|
|
627
|
+
return Promise.all(rows.map((row) => projectRow(schema, model2, row, args.select)));
|
|
628
|
+
},
|
|
580
629
|
async update(schema, model2, args) {
|
|
581
|
-
const
|
|
582
|
-
const row = rows.find((item) => matchesWhere(item, args.where));
|
|
630
|
+
const row = getRows(model2).find((item) => matchesWhere(item, args.where));
|
|
583
631
|
if (!row) return null;
|
|
584
632
|
Object.assign(row, args.data);
|
|
585
633
|
return projectRow(schema, model2, row, args.select);
|
|
586
634
|
},
|
|
635
|
+
async updateMany(_schema, model2, args) {
|
|
636
|
+
const rows = getRows(model2).filter((item) => matchesWhere(item, args.where));
|
|
637
|
+
for (const row of rows) {
|
|
638
|
+
Object.assign(row, args.data);
|
|
639
|
+
}
|
|
640
|
+
return rows.length;
|
|
641
|
+
},
|
|
642
|
+
async upsert(schema, model2, args) {
|
|
643
|
+
const row = getRows(model2).find((item) => matchesWhere(item, args.where));
|
|
644
|
+
if (row) {
|
|
645
|
+
Object.assign(row, args.update);
|
|
646
|
+
return projectRow(schema, model2, row, args.select);
|
|
647
|
+
}
|
|
648
|
+
const created = buildRow(schema, model2, args.create);
|
|
649
|
+
getRows(model2).push(created);
|
|
650
|
+
return projectRow(schema, model2, created, args.select);
|
|
651
|
+
},
|
|
587
652
|
async delete(_schema, model2, args) {
|
|
653
|
+
const rows = getRows(model2);
|
|
654
|
+
const index = rows.findIndex((item) => matchesWhere(item, args.where));
|
|
655
|
+
if (index === -1) return 0;
|
|
656
|
+
rows.splice(index, 1);
|
|
657
|
+
return 1;
|
|
658
|
+
},
|
|
659
|
+
async deleteMany(_schema, model2, args) {
|
|
588
660
|
const rows = getRows(model2);
|
|
589
661
|
const before = rows.length;
|
|
590
662
|
state[model2] = rows.filter((item) => !matchesWhere(item, args.where));
|