Skip to content

Commit bc58d57

Browse files
chore: wip
1 parent 33be009 commit bc58d57

35 files changed

+129
-654
lines changed

storage/framework/core/orm/src/base.ts

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,13 @@ import { DB } from '@stacksjs/orm'
44
export class BaseOrm<T> {
55
protected tableName: string
66

7+
protected selectFromQuery: any
8+
protected hasSelect: boolean = false
9+
710
constructor(tableName: string) {
811
this.tableName = tableName
12+
13+
this.selectFromQuery = DB.instance.selectFrom(this.tableName)
914
}
1015

1116
// The protected helper method that does the actual work
@@ -27,18 +32,32 @@ export class BaseOrm<T> {
2732
return model
2833
}
2934

35+
async applyFirst(): Promise<T | undefined> {
36+
let model
37+
38+
if (this.hasSelect) {
39+
model = await this.selectFromQuery.executeTakeFirst()
40+
}
41+
else {
42+
model = await this.selectFromQuery.selectAll().executeTakeFirst()
43+
}
44+
45+
if (model) {
46+
this.mapCustomGetters(model)
47+
await this.loadRelations(model)
48+
}
49+
50+
return model
51+
}
52+
3053
async find(id: number): Promise<T | undefined> {
3154
return await this.applyFind(id)
3255
}
3356

3457
// Methods to be implemented by child classes
35-
protected mapCustomGetters(model: any): void {
58+
protected mapCustomGetters(_model: T): void {}
3659

37-
}
38-
39-
protected async loadRelations(model: any): Promise<void> {
40-
// Child classes will override this
41-
}
60+
protected async loadRelations(_model: T): Promise<void> {}
4261

4362
// // Method to get the first record
4463
// static async first<T>(tableName: string): Promise<T | undefined> {

storage/framework/core/orm/src/generate.ts

Lines changed: 5 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1096,36 +1096,20 @@ export async function generateModelString(
10961096
}
10971097
10981098
async first(): Promise<${modelName}Model | undefined> {
1099-
let model
1100-
1101-
if (this.hasSelect) {
1102-
model = await this.selectFromQuery.executeTakeFirst()
1103-
}
1104-
else {
1105-
model = await this.selectFromQuery.selectAll().executeTakeFirst()
1106-
}
1107-
1108-
if (model) {
1109-
this.mapCustomGetters(model)
1110-
await this.loadRelations(model)
1111-
}
1099+
const model = await this.applyFirst()
11121100
11131101
const data = new ${modelName}Model(model)
1114-
1102+
11151103
return data
11161104
}
11171105
11181106
static async first(): Promise<${modelName}Model | undefined> {
1119-
const instance = new ${modelName}JsonResponse(null)
1120-
1121-
const model = await DB.instance.selectFrom('${tableName}')
1122-
.selectAll()
1123-
.executeTakeFirst()
1107+
const instance = new ${modelName}Model(undefined)
11241108
1125-
instance.mapCustomGetters(model)
1109+
const model = await instance.applyFirst()
11261110
11271111
const data = new ${modelName}Model(model)
1128-
1112+
11291113
return data
11301114
}
11311115

storage/framework/orm/src/models/AccessToken.ts

Lines changed: 3 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -321,33 +321,17 @@ export class AccessTokenModel extends BaseOrm<AccessTokenModel> {
321321
}
322322

323323
async first(): Promise<AccessTokenModel | undefined> {
324-
let model
325-
326-
if (this.hasSelect) {
327-
model = await this.selectFromQuery.executeTakeFirst()
328-
}
329-
else {
330-
model = await this.selectFromQuery.selectAll().executeTakeFirst()
331-
}
332-
333-
if (model) {
334-
this.mapCustomGetters(model)
335-
await this.loadRelations(model)
336-
}
324+
const model = await this.applyFirst()
337325

338326
const data = new AccessTokenModel(model)
339327

340328
return data
341329
}
342330

343331
static async first(): Promise<AccessTokenModel | undefined> {
344-
const instance = new AccessTokenJsonResponse(null)
345-
346-
const model = await DB.instance.selectFrom('personal_access_tokens')
347-
.selectAll()
348-
.executeTakeFirst()
332+
const instance = new AccessTokenModel(undefined)
349333

350-
instance.mapCustomGetters(model)
334+
const model = await instance.applyFirst()
351335

352336
const data = new AccessTokenModel(model)
353337

storage/framework/orm/src/models/Coupon.ts

Lines changed: 3 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -361,33 +361,17 @@ export class CouponModel extends BaseOrm<CouponModel> {
361361
}
362362

363363
async first(): Promise<CouponModel | undefined> {
364-
let model
365-
366-
if (this.hasSelect) {
367-
model = await this.selectFromQuery.executeTakeFirst()
368-
}
369-
else {
370-
model = await this.selectFromQuery.selectAll().executeTakeFirst()
371-
}
372-
373-
if (model) {
374-
this.mapCustomGetters(model)
375-
await this.loadRelations(model)
376-
}
364+
const model = await this.applyFirst()
377365

378366
const data = new CouponModel(model)
379367

380368
return data
381369
}
382370

383371
static async first(): Promise<CouponModel | undefined> {
384-
const instance = new CouponJsonResponse(null)
385-
386-
const model = await DB.instance.selectFrom('coupons')
387-
.selectAll()
388-
.executeTakeFirst()
372+
const instance = new CouponModel(undefined)
389373

390-
instance.mapCustomGetters(model)
374+
const model = await instance.applyFirst()
391375

392376
const data = new CouponModel(model)
393377

storage/framework/orm/src/models/Customer.ts

Lines changed: 3 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -306,33 +306,17 @@ export class CustomerModel extends BaseOrm<CustomerModel> {
306306
}
307307

308308
async first(): Promise<CustomerModel | undefined> {
309-
let model
310-
311-
if (this.hasSelect) {
312-
model = await this.selectFromQuery.executeTakeFirst()
313-
}
314-
else {
315-
model = await this.selectFromQuery.selectAll().executeTakeFirst()
316-
}
317-
318-
if (model) {
319-
this.mapCustomGetters(model)
320-
await this.loadRelations(model)
321-
}
309+
const model = await this.applyFirst()
322310

323311
const data = new CustomerModel(model)
324312

325313
return data
326314
}
327315

328316
static async first(): Promise<CustomerModel | undefined> {
329-
const instance = new CustomerJsonResponse(null)
330-
331-
const model = await DB.instance.selectFrom('customers')
332-
.selectAll()
333-
.executeTakeFirst()
317+
const instance = new CustomerModel(undefined)
334318

335-
instance.mapCustomGetters(model)
319+
const model = await instance.applyFirst()
336320

337321
const data = new CustomerModel(model)
338322

storage/framework/orm/src/models/Deployment.ts

Lines changed: 3 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -291,33 +291,17 @@ export class DeploymentModel extends BaseOrm<DeploymentModel> {
291291
}
292292

293293
async first(): Promise<DeploymentModel | undefined> {
294-
let model
295-
296-
if (this.hasSelect) {
297-
model = await this.selectFromQuery.executeTakeFirst()
298-
}
299-
else {
300-
model = await this.selectFromQuery.selectAll().executeTakeFirst()
301-
}
302-
303-
if (model) {
304-
this.mapCustomGetters(model)
305-
await this.loadRelations(model)
306-
}
294+
const model = await this.applyFirst()
307295

308296
const data = new DeploymentModel(model)
309297

310298
return data
311299
}
312300

313301
static async first(): Promise<DeploymentModel | undefined> {
314-
const instance = new DeploymentJsonResponse(null)
315-
316-
const model = await DB.instance.selectFrom('deployments')
317-
.selectAll()
318-
.executeTakeFirst()
302+
const instance = new DeploymentModel(undefined)
319303

320-
instance.mapCustomGetters(model)
304+
const model = await instance.applyFirst()
321305

322306
const data = new DeploymentModel(model)
323307

storage/framework/orm/src/models/Error.ts

Lines changed: 3 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -251,33 +251,17 @@ export class ErrorModel extends BaseOrm<ErrorModel> {
251251
}
252252

253253
async first(): Promise<ErrorModel | undefined> {
254-
let model
255-
256-
if (this.hasSelect) {
257-
model = await this.selectFromQuery.executeTakeFirst()
258-
}
259-
else {
260-
model = await this.selectFromQuery.selectAll().executeTakeFirst()
261-
}
262-
263-
if (model) {
264-
this.mapCustomGetters(model)
265-
await this.loadRelations(model)
266-
}
254+
const model = await this.applyFirst()
267255

268256
const data = new ErrorModel(model)
269257

270258
return data
271259
}
272260

273261
static async first(): Promise<ErrorModel | undefined> {
274-
const instance = new ErrorJsonResponse(null)
275-
276-
const model = await DB.instance.selectFrom('errors')
277-
.selectAll()
278-
.executeTakeFirst()
262+
const instance = new ErrorModel(undefined)
279263

280-
instance.mapCustomGetters(model)
264+
const model = await instance.applyFirst()
281265

282266
const data = new ErrorModel(model)
283267

storage/framework/orm/src/models/FailedJob.ts

Lines changed: 3 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -251,33 +251,17 @@ export class FailedJobModel extends BaseOrm<FailedJobModel> {
251251
}
252252

253253
async first(): Promise<FailedJobModel | undefined> {
254-
let model
255-
256-
if (this.hasSelect) {
257-
model = await this.selectFromQuery.executeTakeFirst()
258-
}
259-
else {
260-
model = await this.selectFromQuery.selectAll().executeTakeFirst()
261-
}
262-
263-
if (model) {
264-
this.mapCustomGetters(model)
265-
await this.loadRelations(model)
266-
}
254+
const model = await this.applyFirst()
267255

268256
const data = new FailedJobModel(model)
269257

270258
return data
271259
}
272260

273261
static async first(): Promise<FailedJobModel | undefined> {
274-
const instance = new FailedJobJsonResponse(null)
275-
276-
const model = await DB.instance.selectFrom('failed_jobs')
277-
.selectAll()
278-
.executeTakeFirst()
262+
const instance = new FailedJobModel(undefined)
279263

280-
instance.mapCustomGetters(model)
264+
const model = await instance.applyFirst()
281265

282266
const data = new FailedJobModel(model)
283267

storage/framework/orm/src/models/GiftCard.ts

Lines changed: 3 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -370,33 +370,17 @@ export class GiftCardModel extends BaseOrm<GiftCardModel> {
370370
}
371371

372372
async first(): Promise<GiftCardModel | undefined> {
373-
let model
374-
375-
if (this.hasSelect) {
376-
model = await this.selectFromQuery.executeTakeFirst()
377-
}
378-
else {
379-
model = await this.selectFromQuery.selectAll().executeTakeFirst()
380-
}
381-
382-
if (model) {
383-
this.mapCustomGetters(model)
384-
await this.loadRelations(model)
385-
}
373+
const model = await this.applyFirst()
386374

387375
const data = new GiftCardModel(model)
388376

389377
return data
390378
}
391379

392380
static async first(): Promise<GiftCardModel | undefined> {
393-
const instance = new GiftCardJsonResponse(null)
394-
395-
const model = await DB.instance.selectFrom('gift_cards')
396-
.selectAll()
397-
.executeTakeFirst()
381+
const instance = new GiftCardModel(undefined)
398382

399-
instance.mapCustomGetters(model)
383+
const model = await instance.applyFirst()
400384

401385
const data = new GiftCardModel(model)
402386

storage/framework/orm/src/models/Job.ts

Lines changed: 3 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -251,33 +251,17 @@ export class JobModel extends BaseOrm<JobModel> {
251251
}
252252

253253
async first(): Promise<JobModel | undefined> {
254-
let model
255-
256-
if (this.hasSelect) {
257-
model = await this.selectFromQuery.executeTakeFirst()
258-
}
259-
else {
260-
model = await this.selectFromQuery.selectAll().executeTakeFirst()
261-
}
262-
263-
if (model) {
264-
this.mapCustomGetters(model)
265-
await this.loadRelations(model)
266-
}
254+
const model = await this.applyFirst()
267255

268256
const data = new JobModel(model)
269257

270258
return data
271259
}
272260

273261
static async first(): Promise<JobModel | undefined> {
274-
const instance = new JobJsonResponse(null)
275-
276-
const model = await DB.instance.selectFrom('jobs')
277-
.selectAll()
278-
.executeTakeFirst()
262+
const instance = new JobModel(undefined)
279263

280-
instance.mapCustomGetters(model)
264+
const model = await instance.applyFirst()
281265

282266
const data = new JobModel(model)
283267

0 commit comments

Comments
 (0)