(renames: Set<string>)
| 398 | }; |
| 399 | |
| 400 | export const testColumnsResolver = (renames: Set<string>) => |
| 401 | async ( |
| 402 | input: ColumnsResolverInput<Column>, |
| 403 | ): Promise<ColumnsResolverOutput<Column>> => { |
| 404 | try { |
| 405 | if ( |
| 406 | input.created.length === 0 |
| 407 | || input.deleted.length === 0 |
| 408 | || renames.size === 0 |
| 409 | ) { |
| 410 | return { |
| 411 | tableName: input.tableName, |
| 412 | schema: input.schema, |
| 413 | created: input.created, |
| 414 | renamed: [], |
| 415 | deleted: input.deleted, |
| 416 | }; |
| 417 | } |
| 418 | |
| 419 | let createdColumns = [...input.created]; |
| 420 | let deletedColumns = [...input.deleted]; |
| 421 | |
| 422 | const renamed: { from: Column; to: Column }[] = []; |
| 423 | |
| 424 | const schema = input.schema || 'public'; |
| 425 | |
| 426 | for (let rename of renames) { |
| 427 | const [from, to] = rename.split('->'); |
| 428 | |
| 429 | const idxFrom = deletedColumns.findIndex((it) => { |
| 430 | return `${schema}.${input.tableName}.${it.name}` === from; |
| 431 | }); |
| 432 | |
| 433 | if (idxFrom >= 0) { |
| 434 | const idxTo = createdColumns.findIndex((it) => { |
| 435 | return `${schema}.${input.tableName}.${it.name}` === to; |
| 436 | }); |
| 437 | |
| 438 | renamed.push({ |
| 439 | from: deletedColumns[idxFrom], |
| 440 | to: createdColumns[idxTo], |
| 441 | }); |
| 442 | |
| 443 | delete createdColumns[idxTo]; |
| 444 | delete deletedColumns[idxFrom]; |
| 445 | |
| 446 | createdColumns = createdColumns.filter(Boolean); |
| 447 | deletedColumns = deletedColumns.filter(Boolean); |
| 448 | } |
| 449 | } |
| 450 | |
| 451 | return { |
| 452 | tableName: input.tableName, |
| 453 | schema: input.schema, |
| 454 | created: createdColumns, |
| 455 | deleted: deletedColumns, |
| 456 | renamed, |
| 457 | }; |
no outgoing calls
no test coverage detected