Browse Source

fix: select column operations for mysql

Signed-off-by: mertmit <mertmit99@gmail.com>
pull/3937/head
mertmit 2 years ago
parent
commit
f771fef87e
  1. 41
      packages/nocodb/src/lib/meta/api/columnApis.ts

41
packages/nocodb/src/lib/meta/api/columnApis.ts

@ -935,6 +935,7 @@ export async function columnUpdate(req: Request, res: Response<TableType>) {
}
} else if (column.uidt === UITypes.MultiSelect) {
if (driverType === 'mysql' || driverType === 'mysql2') {
if (colBody.dt === 'set') {
await dbDriver.raw(
`UPDATE ?? SET ?? = TRIM(BOTH ',' FROM REPLACE(CONCAT(',', ??, ','), CONCAT(',', ?, ','), ',')) WHERE FIND_IN_SET(?, ??)`,
[
@ -946,6 +947,18 @@ export async function columnUpdate(req: Request, res: Response<TableType>) {
column.column_name,
]
);
} else {
await dbDriver.raw(
`UPDATE ?? SET ?? = TRIM(BOTH ',' FROM REPLACE(CONCAT(',', ??, ','), CONCAT(',', ?, ','), ','))`,
[
table.table_name,
column.column_name,
column.column_name,
option.title,
]
);
}
} else if (driverType === 'pg') {
await dbDriver.raw(
`UPDATE ?? SET ?? = array_to_string(array_remove(string_to_array(??, ','), ?), ',')`,
@ -1101,6 +1114,7 @@ export async function columnUpdate(req: Request, res: Response<TableType>) {
}
} else if (column.uidt === UITypes.MultiSelect) {
if (driverType === 'mysql' || driverType === 'mysql2') {
if (colBody.dt === 'set') {
await dbDriver.raw(
`UPDATE ?? SET ?? = TRIM(BOTH ',' FROM REPLACE(CONCAT(',', ??, ','), CONCAT(',', ?, ','), CONCAT(',', ?, ','))) WHERE FIND_IN_SET(?, ??)`,
[
@ -1113,6 +1127,18 @@ export async function columnUpdate(req: Request, res: Response<TableType>) {
column.column_name,
]
);
} else {
await dbDriver.raw(
`UPDATE ?? SET ?? = TRIM(BOTH ',' FROM REPLACE(CONCAT(',', ??, ','), CONCAT(',', ?, ','), CONCAT(',', ?, ',')))`,
[
table.table_name,
column.column_name,
column.column_name,
option.title,
newOp.title,
]
);
}
} else if (driverType === 'pg') {
await dbDriver.raw(
`UPDATE ?? SET ?? = array_to_string(array_replace(string_to_array(??, ','), ?, ?), ',')`,
@ -1174,6 +1200,7 @@ export async function columnUpdate(req: Request, res: Response<TableType>) {
}
} else if (column.uidt === UITypes.MultiSelect) {
if (driverType === 'mysql' || driverType === 'mysql2') {
if (colBody.dt === 'set') {
await dbDriver.raw(
`UPDATE ?? SET ?? = TRIM(BOTH ',' FROM REPLACE(CONCAT(',', ??, ','), CONCAT(',', ?, ','), CONCAT(',', ?, ','))) WHERE FIND_IN_SET(?, ??)`,
[
@ -1186,6 +1213,20 @@ export async function columnUpdate(req: Request, res: Response<TableType>) {
column.column_name,
]
);
} else {
await dbDriver.raw(
`UPDATE ?? SET ?? = TRIM(BOTH ',' FROM REPLACE(CONCAT(',', ??, ','), CONCAT(',', ?, ','), CONCAT(',', ?, ',')))`,
[
table.table_name,
column.column_name,
column.column_name,
ch.temp_title,
newOp.title,
ch.temp_title,
column.column_name,
]
);
}
} else if (driverType === 'pg') {
await dbDriver.raw(
`UPDATE ?? SET ?? = array_to_string(array_replace(string_to_array(??, ','), ?, ?), ',')`,

Loading…
Cancel
Save