Skip to content

Commit fe69e59

Browse files
chore: wip
1 parent dda3401 commit fe69e59

File tree

18 files changed

+636
-685
lines changed

18 files changed

+636
-685
lines changed

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

Lines changed: 41 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1518,58 +1518,57 @@ export async function generateModelString(
15181518
15191519
applyWhereDoesntHave(relation: string, callback: (query: SubqueryBuilder) => void): ${modelName}Model {
15201520
const subqueryBuilder = new SubqueryBuilder()
1521-
1521+
15221522
callback(subqueryBuilder)
15231523
const conditions = subqueryBuilder.getConditions()
1524-
1524+
15251525
this.selectFromQuery = this.selectFromQuery
15261526
.where(({ exists, selectFrom, not }: any) => {
1527-
let subquery = selectFrom(relation)
1527+
const subquery = selectFrom(relation)
15281528
.select('1')
15291529
.whereRef(\`\${relation}.${formattedModelName}_id\`, '=', '${tableName}.id')
1530-
1531-
conditions.forEach((condition) => {
1532-
switch (condition.method) {
1533-
case 'where':
1534-
if (condition.type === 'and') {
1535-
subquery = subquery.where(condition.column, condition.operator!, condition.value)
1536-
} else {
1537-
subquery = subquery.orWhere(condition.column, condition.operator!, condition.value)
1538-
}
1539-
break
1540-
1541-
case 'whereIn':
1542-
if (condition.operator === 'not') {
1543-
subquery = subquery.whereNotIn(condition.column, condition.values!)
1544-
} else {
1545-
subquery = subquery.whereIn(condition.column, condition.values!)
1546-
}
15471530
1548-
break
1549-
1550-
case 'whereNull':
1551-
subquery = subquery.whereNull(condition.column)
1552-
break
1553-
1554-
case 'whereNotNull':
1555-
subquery = subquery.whereNotNull(condition.column)
1556-
break
1557-
1558-
case 'whereBetween':
1559-
subquery = subquery.whereBetween(condition.column, condition.values!)
1560-
break
1561-
1562-
case 'whereExists': {
1563-
const nestedBuilder = new SubqueryBuilder()
1564-
condition.callback!(nestedBuilder)
1565-
break
1531+
return not(exists(subquery))
1532+
})
1533+
1534+
conditions.forEach((condition) => {
1535+
switch (condition.method) {
1536+
case 'where':
1537+
if (condition.type === 'and') {
1538+
this.where(condition.column, condition.operator!, condition.value)
15661539
}
1540+
break
1541+
1542+
case 'whereIn':
1543+
if (condition.operator === 'not') {
1544+
this.whereNotIn(condition.column, condition.values!)
1545+
}
1546+
else {
1547+
this.whereIn(condition.column, condition.values!)
1548+
}
1549+
1550+
break
1551+
1552+
case 'whereNull':
1553+
this.whereNull(condition.column)
1554+
break
1555+
1556+
case 'whereNotNull':
1557+
this.whereNotNull(condition.column)
1558+
break
1559+
1560+
case 'whereBetween':
1561+
this.whereBetween(condition.column, condition.values!)
1562+
break
1563+
1564+
case 'whereExists': {
1565+
const nestedBuilder = new SubqueryBuilder()
1566+
condition.callback!(nestedBuilder)
1567+
break
15671568
}
1568-
})
1569-
1570-
return not(exists(subquery))
1569+
}
15711570
})
1572-
1571+
15731572
return this
15741573
}
15751574

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

Lines changed: 37 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -745,53 +745,50 @@ export class AccessTokenModel {
745745

746746
this.selectFromQuery = this.selectFromQuery
747747
.where(({ exists, selectFrom, not }: any) => {
748-
let subquery = selectFrom(relation)
748+
const subquery = selectFrom(relation)
749749
.select('1')
750750
.whereRef(`${relation}.accesstoken_id`, '=', 'personal_access_tokens.id')
751751

752-
conditions.forEach((condition) => {
753-
switch (condition.method) {
754-
case 'where':
755-
if (condition.type === 'and') {
756-
subquery = subquery.where(condition.column, condition.operator!, condition.value)
757-
}
758-
else {
759-
subquery = subquery.orWhere(condition.column, condition.operator!, condition.value)
760-
}
761-
break
752+
return not(exists(subquery))
753+
})
762754

763-
case 'whereIn':
764-
if (condition.operator === 'not') {
765-
subquery = subquery.whereNotIn(condition.column, condition.values!)
766-
}
767-
else {
768-
subquery = subquery.whereIn(condition.column, condition.values!)
769-
}
755+
conditions.forEach((condition) => {
756+
switch (condition.method) {
757+
case 'where':
758+
if (condition.type === 'and') {
759+
this.where(condition.column, condition.operator!, condition.value)
760+
}
761+
break
770762

771-
break
763+
case 'whereIn':
764+
if (condition.operator === 'not') {
765+
this.whereNotIn(condition.column, condition.values!)
766+
}
767+
else {
768+
this.whereIn(condition.column, condition.values!)
769+
}
772770

773-
case 'whereNull':
774-
subquery = subquery.whereNull(condition.column)
775-
break
771+
break
776772

777-
case 'whereNotNull':
778-
subquery = subquery.whereNotNull(condition.column)
779-
break
773+
case 'whereNull':
774+
this.whereNull(condition.column)
775+
break
780776

781-
case 'whereBetween':
782-
subquery = subquery.whereBetween(condition.column, condition.values!)
783-
break
777+
case 'whereNotNull':
778+
this.whereNotNull(condition.column)
779+
break
784780

785-
case 'whereExists': {
786-
const nestedBuilder = new SubqueryBuilder()
787-
condition.callback!(nestedBuilder)
788-
break
789-
}
790-
}
791-
})
781+
case 'whereBetween':
782+
this.whereBetween(condition.column, condition.values!)
783+
break
792784

793-
return not(exists(subquery))
794-
})
785+
case 'whereExists': {
786+
const nestedBuilder = new SubqueryBuilder()
787+
condition.callback!(nestedBuilder)
788+
break
789+
}
790+
}
791+
})
795792

796793
return this
797794
}
@@ -1085,11 +1082,11 @@ export class AccessTokenModel {
10851082
return instance
10861083
}
10871084

1088-
whereIn(column: keyof AccessTokenType, values: any[]): AccessTokenModel {
1085+
whereIn(column: string, values: any[]): AccessTokenModel {
10891086
return AccessTokenModel.whereIn(column, values)
10901087
}
10911088

1092-
static whereIn(column: keyof AccessTokenType, values: any[]): AccessTokenModel {
1089+
static whereIn(column: string, values: any[]): AccessTokenModel {
10931090
const instance = new AccessTokenModel(null)
10941091

10951092
instance.selectFromQuery = instance.selectFromQuery.where(column, 'in', values)
@@ -1101,7 +1098,7 @@ export class AccessTokenModel {
11011098
return instance
11021099
}
11031100

1104-
applyWhereBetween(column: keyof AccessTokenType, range: [any, any]): AccessTokenModel {
1101+
applyWhereBetween(column: string, range: [any, any]): AccessTokenModel {
11051102
if (range.length !== 2) {
11061103
throw new HttpError(500, 'Range must have exactly two values: [min, max]')
11071104
}

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

Lines changed: 37 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -768,53 +768,50 @@ export class ActivityModel {
768768

769769
this.selectFromQuery = this.selectFromQuery
770770
.where(({ exists, selectFrom, not }: any) => {
771-
let subquery = selectFrom(relation)
771+
const subquery = selectFrom(relation)
772772
.select('1')
773773
.whereRef(`${relation}.activity_id`, '=', 'activities.id')
774774

775-
conditions.forEach((condition) => {
776-
switch (condition.method) {
777-
case 'where':
778-
if (condition.type === 'and') {
779-
subquery = subquery.where(condition.column, condition.operator!, condition.value)
780-
}
781-
else {
782-
subquery = subquery.orWhere(condition.column, condition.operator!, condition.value)
783-
}
784-
break
775+
return not(exists(subquery))
776+
})
785777

786-
case 'whereIn':
787-
if (condition.operator === 'not') {
788-
subquery = subquery.whereNotIn(condition.column, condition.values!)
789-
}
790-
else {
791-
subquery = subquery.whereIn(condition.column, condition.values!)
792-
}
778+
conditions.forEach((condition) => {
779+
switch (condition.method) {
780+
case 'where':
781+
if (condition.type === 'and') {
782+
this.where(condition.column, condition.operator!, condition.value)
783+
}
784+
break
793785

794-
break
786+
case 'whereIn':
787+
if (condition.operator === 'not') {
788+
this.whereNotIn(condition.column, condition.values!)
789+
}
790+
else {
791+
this.whereIn(condition.column, condition.values!)
792+
}
795793

796-
case 'whereNull':
797-
subquery = subquery.whereNull(condition.column)
798-
break
794+
break
799795

800-
case 'whereNotNull':
801-
subquery = subquery.whereNotNull(condition.column)
802-
break
796+
case 'whereNull':
797+
this.whereNull(condition.column)
798+
break
803799

804-
case 'whereBetween':
805-
subquery = subquery.whereBetween(condition.column, condition.values!)
806-
break
800+
case 'whereNotNull':
801+
this.whereNotNull(condition.column)
802+
break
807803

808-
case 'whereExists': {
809-
const nestedBuilder = new SubqueryBuilder()
810-
condition.callback!(nestedBuilder)
811-
break
812-
}
813-
}
814-
})
804+
case 'whereBetween':
805+
this.whereBetween(condition.column, condition.values!)
806+
break
815807

816-
return not(exists(subquery))
817-
})
808+
case 'whereExists': {
809+
const nestedBuilder = new SubqueryBuilder()
810+
condition.callback!(nestedBuilder)
811+
break
812+
}
813+
}
814+
})
818815

819816
return this
820817
}
@@ -1135,11 +1132,11 @@ export class ActivityModel {
11351132
return instance
11361133
}
11371134

1138-
whereIn(column: keyof ActivityType, values: any[]): ActivityModel {
1135+
whereIn(column: string, values: any[]): ActivityModel {
11391136
return ActivityModel.whereIn(column, values)
11401137
}
11411138

1142-
static whereIn(column: keyof ActivityType, values: any[]): ActivityModel {
1139+
static whereIn(column: string, values: any[]): ActivityModel {
11431140
const instance = new ActivityModel(null)
11441141

11451142
instance.selectFromQuery = instance.selectFromQuery.where(column, 'in', values)
@@ -1151,7 +1148,7 @@ export class ActivityModel {
11511148
return instance
11521149
}
11531150

1154-
applyWhereBetween(column: keyof ActivityType, range: [any, any]): ActivityModel {
1151+
applyWhereBetween(column: string, range: [any, any]): ActivityModel {
11551152
if (range.length !== 2) {
11561153
throw new HttpError(500, 'Range must have exactly two values: [min, max]')
11571154
}

0 commit comments

Comments
 (0)