mirror of
https://github.com/strapi/strapi.git
synced 2025-12-28 15:44:59 +00:00
add decrements to queryBuilder + use it
This commit is contained in:
parent
59417498ab
commit
eaf0d84224
@ -511,11 +511,7 @@ const createEntityManager = (db) => {
|
||||
for (const relToDelete of currentRelsToDelete) {
|
||||
if (relToDelete[orderColumnName] !== null) {
|
||||
await this.createQueryBuilder(joinTable.name)
|
||||
.update({
|
||||
[orderColumnName]: db
|
||||
.getConnection()
|
||||
.raw('?? - 1', relToDelete[orderColumnName]),
|
||||
})
|
||||
.decrement(orderColumnName, 1)
|
||||
.where({
|
||||
[joinColumn.name]: relToDelete[joinColumn.name],
|
||||
[orderColumnName]: { $gt: relToDelete[orderColumnName] },
|
||||
@ -766,11 +762,7 @@ const createEntityManager = (db) => {
|
||||
for (const relToDelete of relsToDelete) {
|
||||
if (relToDelete[inverseOrderColumnName] !== null) {
|
||||
const updatePromise = this.createQueryBuilder(joinTable.name)
|
||||
.update({
|
||||
[inverseOrderColumnName]: db
|
||||
.getConnection()
|
||||
.raw('?? - 1', relToDelete[inverseOrderColumnName]),
|
||||
})
|
||||
.decrement(inverseOrderColumnName, 1)
|
||||
.where({
|
||||
[inverseJoinColumn.name]: relToDelete[inverseJoinColumn.name],
|
||||
[inverseOrderColumnName]: { $gt: relToDelete[inverseOrderColumnName] },
|
||||
@ -831,11 +823,7 @@ const createEntityManager = (db) => {
|
||||
for (const relToDelete of relsToDelete) {
|
||||
if (relToDelete[orderColumnName] !== null) {
|
||||
await this.createQueryBuilder(joinTable.name)
|
||||
.update({
|
||||
[orderColumnName]: db
|
||||
.getConnection()
|
||||
.raw('?? - 1', relToDelete[orderColumnName]),
|
||||
})
|
||||
.decrement(orderColumnName, 1)
|
||||
.where({
|
||||
[joinColumn.name]: id,
|
||||
[orderColumnName]: { $gt: relToDelete[orderColumnName] },
|
||||
@ -852,11 +840,7 @@ const createEntityManager = (db) => {
|
||||
for (const relToDelete of relsToDelete) {
|
||||
if (relToDelete[inverseOrderColumnName] !== null) {
|
||||
const updatePromise = this.createQueryBuilder(joinTable.name)
|
||||
.update({
|
||||
[inverseOrderColumnName]: db
|
||||
.getConnection()
|
||||
.raw('?? - 1', relToDelete[inverseOrderColumnName]),
|
||||
})
|
||||
.decrement(inverseOrderColumnName, 1)
|
||||
.where({
|
||||
[inverseJoinColumn.name]: relToDelete[inverseJoinColumn.name],
|
||||
[inverseOrderColumnName]: { $gt: relToDelete[inverseOrderColumnName] },
|
||||
@ -911,11 +895,7 @@ const createEntityManager = (db) => {
|
||||
const currentOrderIsNull = currentRel[orderColumnName] === null;
|
||||
if (!currentOrderIsNull) {
|
||||
await this.createQueryBuilder(joinTable.name)
|
||||
.update({
|
||||
[orderColumnName]: db
|
||||
.getConnection()
|
||||
.raw('?? - 1', currentRel[orderColumnName]),
|
||||
})
|
||||
.decrement(orderColumnName, 1)
|
||||
.where({
|
||||
[joinColumn.name]: id,
|
||||
[orderColumnName]: { $gt: currentRel[orderColumnName] },
|
||||
@ -1001,11 +981,7 @@ const createEntityManager = (db) => {
|
||||
for (const relToDelete of relsToDelete) {
|
||||
if (relToDelete[orderColumnName] !== null) {
|
||||
await this.createQueryBuilder(joinTable.name)
|
||||
.update({
|
||||
[orderColumnName]: db
|
||||
.getConnection()
|
||||
.raw('?? - 1', relToDelete[orderColumnName]),
|
||||
})
|
||||
.decrement(orderColumnName, 1)
|
||||
.where({
|
||||
[joinColumn.name]: id,
|
||||
[orderColumnName]: { $gt: relToDelete[orderColumnName] },
|
||||
@ -1023,11 +999,7 @@ const createEntityManager = (db) => {
|
||||
for (const relToDelete of relsToDelete) {
|
||||
if (relToDelete[inverseOrderColumnName] !== null) {
|
||||
const updatePromise = this.createQueryBuilder(joinTable.name)
|
||||
.update({
|
||||
[inverseOrderColumnName]: db
|
||||
.getConnection()
|
||||
.raw('?? - 1', relToDelete[inverseOrderColumnName]),
|
||||
})
|
||||
.decrement(inverseOrderColumnName, 1)
|
||||
.where({
|
||||
[inverseJoinColumn.name]: relToDelete[inverseJoinColumn.name],
|
||||
[inverseOrderColumnName]: { $gt: relToDelete[inverseOrderColumnName] },
|
||||
@ -1123,11 +1095,7 @@ const createEntityManager = (db) => {
|
||||
for (const relToDelete of currentRelsToDelete) {
|
||||
if (relToDelete[orderColumnName] !== null) {
|
||||
await this.createQueryBuilder(joinTable.name)
|
||||
.update({
|
||||
[orderColumnName]: db
|
||||
.getConnection()
|
||||
.raw('?? - 1', relToDelete[orderColumnName]),
|
||||
})
|
||||
.decrement(orderColumnName, 1)
|
||||
.where({
|
||||
[joinColumn.name]: relToDelete[joinColumn.name],
|
||||
[orderColumnName]: { $gt: relToDelete[orderColumnName] },
|
||||
@ -1289,11 +1257,7 @@ const createEntityManager = (db) => {
|
||||
for (const relToDelete of relsToDelete) {
|
||||
if (relToDelete[inverseOrderColumnName] !== null) {
|
||||
const updatePromise = this.createQueryBuilder(joinTable.name)
|
||||
.update({
|
||||
[inverseOrderColumnName]: db
|
||||
.getConnection()
|
||||
.raw('?? - 1', relToDelete[inverseOrderColumnName]),
|
||||
})
|
||||
.decrement(inverseOrderColumnName, 1)
|
||||
.where({
|
||||
[inverseJoinColumn.name]: relToDelete[inverseJoinColumn.name],
|
||||
[inverseOrderColumnName]: { $gt: relToDelete[inverseOrderColumnName] },
|
||||
|
||||
@ -25,6 +25,8 @@ const createQueryBuilder = (uid, db, initialState = {}) => {
|
||||
forUpdate: false,
|
||||
orderBy: [],
|
||||
groupBy: [],
|
||||
increments: [],
|
||||
decrements: [],
|
||||
aliasCounter: 0,
|
||||
},
|
||||
initialState
|
||||
@ -84,6 +86,20 @@ const createQueryBuilder = (uid, db, initialState = {}) => {
|
||||
return this;
|
||||
},
|
||||
|
||||
increment(column, amount = 1) {
|
||||
state.type = 'update';
|
||||
state.increments.push({ column, amount });
|
||||
|
||||
return this;
|
||||
},
|
||||
|
||||
decrement(column, amount = 1) {
|
||||
state.type = 'update';
|
||||
state.decrements.push({ column, amount });
|
||||
|
||||
return this;
|
||||
},
|
||||
|
||||
count(count = 'id') {
|
||||
state.type = 'count';
|
||||
state.count = count;
|
||||
@ -349,7 +365,9 @@ const createQueryBuilder = (uid, db, initialState = {}) => {
|
||||
break;
|
||||
}
|
||||
case 'update': {
|
||||
qb.update(state.data);
|
||||
if (state.data) {
|
||||
qb.update(state.data);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 'delete': {
|
||||
@ -374,6 +392,14 @@ const createQueryBuilder = (uid, db, initialState = {}) => {
|
||||
qb.forUpdate();
|
||||
}
|
||||
|
||||
if (!_.isEmpty(state.increments)) {
|
||||
state.increments.forEach((incr) => qb.increment(incr.column, incr.amount));
|
||||
}
|
||||
|
||||
if (!_.isEmpty(state.decrements)) {
|
||||
state.decrements.forEach((decr) => qb.decrement(decr.column, decr.amount));
|
||||
}
|
||||
|
||||
if (state.limit) {
|
||||
qb.limit(state.limit);
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user