Skip to content

Commit 0aa3670

Browse files
chore: wip
1 parent 20427c3 commit 0aa3670

File tree

18 files changed

+259
-169
lines changed

18 files changed

+259
-169
lines changed

storage/framework/actions/src/UserShowOrmAction.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,7 @@ export default new Action({
1010
async handle(request: UserRequestType) {
1111
// const id = request.getParam('id')
1212

13-
const result = await User
14-
.get()
13+
const result = await User.find(1)
1514

1615
return response.json(result)
1716
},

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

Lines changed: 21 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ export async function generateModelString(
1919
let relationStringThisMany = ''
2020

2121
let instanceSoftDeleteStatements = ''
22-
let thisSoftDeleteStatements = ''
22+
const thisSoftDeleteStatements = ''
2323
let instanceSoftDeleteStatementsSelectFrom = ''
2424
let instanceSoftDeleteStatementsUpdateFrom = ''
2525
let thisSoftDeleteStatementsUpdateFrom = ''
@@ -74,10 +74,6 @@ export async function generateModelString(
7474
query = query.where('deleted_at', 'is', null)
7575
}`
7676

77-
thisSoftDeleteStatements += ` if (this.softDeletes) {
78-
this.selectFromQuery = this.selectFromQuery.where('deleted_at', 'is', null)
79-
}`
80-
8177
instanceSoftDeleteStatementsSelectFrom += ` if (instance.softDeletes) {
8278
instance.selectFromQuery = instance.selectFromQuery.where('deleted_at', 'is', null)
8379
}`
@@ -1214,35 +1210,37 @@ export async function generateModelString(
12141210
}
12151211
}
12161212
1217-
// Method to create a new ${formattedModelName}
12181213
static async create(new${modelName}: New${modelName}): Promise<${modelName}Model> {
12191214
const instance = new ${modelName}Model(null)
1220-
1221-
let filteredValues = Object.fromEntries(
1222-
Object.entries(new${modelName}).filter(([key]) => instance.fillable.includes(key)),
1215+
1216+
const filteredValues = Object.fromEntries(
1217+
Object.entries(new${modelName}).filter(([key]) =>
1218+
!instance.guarded.includes(key) && instance.fillable.includes(key)
1219+
),
12231220
) as New${modelName}
1224-
1221+
12251222
${uuidQuery}
1226-
1223+
12271224
const result = await db.insertInto('${tableName}')
12281225
.values(filteredValues)
12291226
.executeTakeFirst()
1230-
1227+
12311228
const model = await find(Number(result.numInsertedOrUpdatedRows)) as ${modelName}Model
1232-
1233-
${mittCreateStatement}
1234-
1229+
1230+
if (model)
1231+
dispatch('${formattedTableName}:created', model)
1232+
12351233
return model
12361234
}
12371235
12381236
static async createMany(new${formattedTableName}: New${modelName}[]): Promise<void> {
12391237
const instance = new ${modelName}Model(null)
12401238
1241-
const filteredValues = new${formattedTableName}.map(newUser =>
1242-
Object.fromEntries(
1243-
Object.entries(newUser).filter(([key]) => instance.fillable.includes(key))
1244-
) as New${modelName}
1245-
)
1239+
const filteredValues = Object.fromEntries(
1240+
Object.entries(new${modelName}).filter(([key]) =>
1241+
!instance.guarded.includes(key) && instance.fillable.includes(key)
1242+
),
1243+
) as New${modelName}
12461244
12471245
${uuidQueryMany}
12481246
@@ -1496,7 +1494,6 @@ export async function generateModelString(
14961494
return new ${modelName}Model(result as ${modelName}Type)
14971495
}
14981496
else {
1499-
// If not found, create a new user
15001497
return await this.create(new${modelName})
15011498
}
15021499
}
@@ -1653,7 +1650,9 @@ export async function generateModelString(
16531650
16541651
async update(${formattedModelName}: ${modelName}Update): Promise<${modelName}Model | undefined> {
16551652
const filteredValues = Object.fromEntries(
1656-
Object.entries(${formattedModelName}).filter(([key]) => this.fillable.includes(key)),
1653+
Object.entries(new${modelName}).filter(([key]) =>
1654+
!instance.guarded.includes(key) && instance.fillable.includes(key)
1655+
),
16571656
) as New${modelName}
16581657
16591658
await db.updateTable('${tableName}')

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

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import type { TeamModel } from './Team'
33
import { cache } from '@stacksjs/cache'
44
import { db, sql } from '@stacksjs/database'
55
import { HttpError, ModelNotFoundException } from '@stacksjs/error-handling'
6+
import { dispatch } from '@stacksjs/events'
67
import { SubqueryBuilder } from '@stacksjs/orm'
78

89
import Team from './Team'
@@ -550,12 +551,13 @@ export class AccessTokenModel {
550551
}
551552
}
552553

553-
// Method to create a new accesstoken
554554
static async create(newAccessToken: NewAccessToken): Promise<AccessTokenModel> {
555555
const instance = new AccessTokenModel(null)
556556

557557
const filteredValues = Object.fromEntries(
558-
Object.entries(newAccessToken).filter(([key]) => instance.fillable.includes(key)),
558+
Object.entries(newAccessToken).filter(([key]) =>
559+
!instance.guarded.includes(key) && instance.fillable.includes(key),
560+
),
559561
) as NewAccessToken
560562

561563
const result = await db.insertInto('personal_access_tokens')
@@ -564,17 +566,20 @@ export class AccessTokenModel {
564566

565567
const model = await find(Number(result.numInsertedOrUpdatedRows)) as AccessTokenModel
566568

569+
if (model)
570+
dispatch('PersonalAccessTokens:created', model)
571+
567572
return model
568573
}
569574

570575
static async createMany(newPersonalAccessTokens: NewAccessToken[]): Promise<void> {
571576
const instance = new AccessTokenModel(null)
572577

573-
const filteredValues = newPersonalAccessTokens.map(newUser =>
574-
Object.fromEntries(
575-
Object.entries(newUser).filter(([key]) => instance.fillable.includes(key)),
576-
) as NewAccessToken,
577-
)
578+
const filteredValues = Object.fromEntries(
579+
Object.entries(newAccessToken).filter(([key]) =>
580+
!instance.guarded.includes(key) && instance.fillable.includes(key),
581+
),
582+
) as NewAccessToken
578583

579584
await db.insertInto('personal_access_tokens')
580585
.values(filteredValues)
@@ -845,7 +850,6 @@ export class AccessTokenModel {
845850
return new AccessTokenModel(result as AccessTokenType)
846851
}
847852
else {
848-
// If not found, create a new user
849853
return await this.create(newAccessToken)
850854
}
851855
}
@@ -1003,7 +1007,9 @@ export class AccessTokenModel {
10031007

10041008
async update(accesstoken: AccessTokenUpdate): Promise<AccessTokenModel | undefined> {
10051009
const filteredValues = Object.fromEntries(
1006-
Object.entries(accesstoken).filter(([key]) => this.fillable.includes(key)),
1010+
Object.entries(newAccessToken).filter(([key]) =>
1011+
!instance.guarded.includes(key) && instance.fillable.includes(key),
1012+
),
10071013
) as NewAccessToken
10081014

10091015
await db.updateTable('personal_access_tokens')

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

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { randomUUIDv7 } from 'bun'
44
import { cache } from '@stacksjs/cache'
55
import { db, sql } from '@stacksjs/database'
66
import { HttpError, ModelNotFoundException } from '@stacksjs/error-handling'
7+
import { dispatch } from '@stacksjs/events'
78
import { SubqueryBuilder } from '@stacksjs/orm'
89

910
import User from './User'
@@ -563,12 +564,13 @@ export class DeploymentModel {
563564
}
564565
}
565566

566-
// Method to create a new deployment
567567
static async create(newDeployment: NewDeployment): Promise<DeploymentModel> {
568568
const instance = new DeploymentModel(null)
569569

570570
const filteredValues = Object.fromEntries(
571-
Object.entries(newDeployment).filter(([key]) => instance.fillable.includes(key)),
571+
Object.entries(newDeployment).filter(([key]) =>
572+
!instance.guarded.includes(key) && instance.fillable.includes(key),
573+
),
572574
) as NewDeployment
573575

574576
filteredValues.uuid = randomUUIDv7()
@@ -579,17 +581,20 @@ export class DeploymentModel {
579581

580582
const model = await find(Number(result.numInsertedOrUpdatedRows)) as DeploymentModel
581583

584+
if (model)
585+
dispatch('Deployments:created', model)
586+
582587
return model
583588
}
584589

585590
static async createMany(newDeployments: NewDeployment[]): Promise<void> {
586591
const instance = new DeploymentModel(null)
587592

588-
const filteredValues = newDeployments.map(newUser =>
589-
Object.fromEntries(
590-
Object.entries(newUser).filter(([key]) => instance.fillable.includes(key)),
591-
) as NewDeployment,
592-
)
593+
const filteredValues = Object.fromEntries(
594+
Object.entries(newDeployment).filter(([key]) =>
595+
!instance.guarded.includes(key) && instance.fillable.includes(key),
596+
),
597+
) as NewDeployment
593598

594599
filteredValues.forEach((model) => {
595600
model.uuid = randomUUIDv7()
@@ -888,7 +893,6 @@ export class DeploymentModel {
888893
return new DeploymentModel(result as DeploymentType)
889894
}
890895
else {
891-
// If not found, create a new user
892896
return await this.create(newDeployment)
893897
}
894898
}
@@ -1046,7 +1050,9 @@ export class DeploymentModel {
10461050

10471051
async update(deployment: DeploymentUpdate): Promise<DeploymentModel | undefined> {
10481052
const filteredValues = Object.fromEntries(
1049-
Object.entries(deployment).filter(([key]) => this.fillable.includes(key)),
1053+
Object.entries(newDeployment).filter(([key]) =>
1054+
!instance.guarded.includes(key) && instance.fillable.includes(key),
1055+
),
10501056
) as NewDeployment
10511057

10521058
await db.updateTable('deployments')

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

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import type { Insertable, RawBuilder, Selectable, Updateable } from '@stacksjs/d
22
import { cache } from '@stacksjs/cache'
33
import { db, sql } from '@stacksjs/database'
44
import { HttpError, ModelNotFoundException } from '@stacksjs/error-handling'
5+
import { dispatch } from '@stacksjs/events'
56
import { SubqueryBuilder } from '@stacksjs/orm'
67

78
export interface ErrorsTable {
@@ -540,12 +541,13 @@ export class ErrorModel {
540541
}
541542
}
542543

543-
// Method to create a new error
544544
static async create(newError: NewError): Promise<ErrorModel> {
545545
const instance = new ErrorModel(null)
546546

547547
const filteredValues = Object.fromEntries(
548-
Object.entries(newError).filter(([key]) => instance.fillable.includes(key)),
548+
Object.entries(newError).filter(([key]) =>
549+
!instance.guarded.includes(key) && instance.fillable.includes(key),
550+
),
549551
) as NewError
550552

551553
const result = await db.insertInto('errors')
@@ -554,17 +556,20 @@ export class ErrorModel {
554556

555557
const model = await find(Number(result.numInsertedOrUpdatedRows)) as ErrorModel
556558

559+
if (model)
560+
dispatch('Errors:created', model)
561+
557562
return model
558563
}
559564

560565
static async createMany(newErrors: NewError[]): Promise<void> {
561566
const instance = new ErrorModel(null)
562567

563-
const filteredValues = newErrors.map(newUser =>
564-
Object.fromEntries(
565-
Object.entries(newUser).filter(([key]) => instance.fillable.includes(key)),
566-
) as NewError,
567-
)
568+
const filteredValues = Object.fromEntries(
569+
Object.entries(newError).filter(([key]) =>
570+
!instance.guarded.includes(key) && instance.fillable.includes(key),
571+
),
572+
) as NewError
568573

569574
await db.insertInto('errors')
570575
.values(filteredValues)
@@ -843,7 +848,6 @@ export class ErrorModel {
843848
return new ErrorModel(result as ErrorType)
844849
}
845850
else {
846-
// If not found, create a new user
847851
return await this.create(newError)
848852
}
849853
}
@@ -1001,7 +1005,9 @@ export class ErrorModel {
10011005

10021006
async update(error: ErrorUpdate): Promise<ErrorModel | undefined> {
10031007
const filteredValues = Object.fromEntries(
1004-
Object.entries(error).filter(([key]) => this.fillable.includes(key)),
1008+
Object.entries(newError).filter(([key]) =>
1009+
!instance.guarded.includes(key) && instance.fillable.includes(key),
1010+
),
10051011
) as NewError
10061012

10071013
await db.updateTable('errors')

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

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import type { Insertable, RawBuilder, Selectable, Updateable } from '@stacksjs/d
22
import { cache } from '@stacksjs/cache'
33
import { db, sql } from '@stacksjs/database'
44
import { HttpError, ModelNotFoundException } from '@stacksjs/error-handling'
5+
import { dispatch } from '@stacksjs/events'
56
import { SubqueryBuilder } from '@stacksjs/orm'
67

78
export interface FailedJobsTable {
@@ -540,12 +541,13 @@ export class FailedJobModel {
540541
}
541542
}
542543

543-
// Method to create a new failedjob
544544
static async create(newFailedJob: NewFailedJob): Promise<FailedJobModel> {
545545
const instance = new FailedJobModel(null)
546546

547547
const filteredValues = Object.fromEntries(
548-
Object.entries(newFailedJob).filter(([key]) => instance.fillable.includes(key)),
548+
Object.entries(newFailedJob).filter(([key]) =>
549+
!instance.guarded.includes(key) && instance.fillable.includes(key),
550+
),
549551
) as NewFailedJob
550552

551553
const result = await db.insertInto('failed_jobs')
@@ -554,17 +556,20 @@ export class FailedJobModel {
554556

555557
const model = await find(Number(result.numInsertedOrUpdatedRows)) as FailedJobModel
556558

559+
if (model)
560+
dispatch('FailedJobs:created', model)
561+
557562
return model
558563
}
559564

560565
static async createMany(newFailedJobs: NewFailedJob[]): Promise<void> {
561566
const instance = new FailedJobModel(null)
562567

563-
const filteredValues = newFailedJobs.map(newUser =>
564-
Object.fromEntries(
565-
Object.entries(newUser).filter(([key]) => instance.fillable.includes(key)),
566-
) as NewFailedJob,
567-
)
568+
const filteredValues = Object.fromEntries(
569+
Object.entries(newFailedJob).filter(([key]) =>
570+
!instance.guarded.includes(key) && instance.fillable.includes(key),
571+
),
572+
) as NewFailedJob
568573

569574
await db.insertInto('failed_jobs')
570575
.values(filteredValues)
@@ -843,7 +848,6 @@ export class FailedJobModel {
843848
return new FailedJobModel(result as FailedJobType)
844849
}
845850
else {
846-
// If not found, create a new user
847851
return await this.create(newFailedJob)
848852
}
849853
}
@@ -1001,7 +1005,9 @@ export class FailedJobModel {
10011005

10021006
async update(failedjob: FailedJobUpdate): Promise<FailedJobModel | undefined> {
10031007
const filteredValues = Object.fromEntries(
1004-
Object.entries(failedjob).filter(([key]) => this.fillable.includes(key)),
1008+
Object.entries(newFailedJob).filter(([key]) =>
1009+
!instance.guarded.includes(key) && instance.fillable.includes(key),
1010+
),
10051011
) as NewFailedJob
10061012

10071013
await db.updateTable('failed_jobs')

0 commit comments

Comments
 (0)