chore(backend): concrete returning

This commit is contained in:
Acid Chicken (硫酸鶏) 2024-05-29 22:35:34 +09:00
parent 6302a8b904
commit 9227496389
No known key found for this signature in database
GPG Key ID: 3E87B98A3F6BAB99
2 changed files with 6 additions and 5 deletions

View File

@ -212,8 +212,8 @@ export default abstract class Chart<T extends Schema> {
} { } {
const createEntity = (span: 'hour' | 'day'): EntitySchema => new EntitySchema({ const createEntity = (span: 'hour' | 'day'): EntitySchema => new EntitySchema({
name: name:
span === 'hour' ? `ChartX${name.replace(/[^a-zA-Z0-9]/g, '')}` : span === 'hour' ? `ChartX${name}` :
span === 'day' ? `ChartDayX${name.replace(/[^a-zA-Z0-9]/g, '')}` : span === 'day' ? `ChartDayX${name}` :
new Error('not happen') as never, new Error('not happen') as never,
tableName: tableName:
span === 'hour' ? `__chart__${camelToSnake(name)}` : span === 'hour' ? `__chart__${camelToSnake(name)}` :

View File

@ -96,9 +96,10 @@ export const miRepository = {
return queryBuilder.expressionMap.insertColumns; return queryBuilder.expressionMap.insertColumns;
}, },
async insertOne(entity, findOptions?) { async insertOne(entity, findOptions?) {
const queryBuilder = this.createQueryBuilder().insert().values(entity).returning('*'); const queryBuilder = this.createQueryBuilder().insert().values(entity);
queryBuilder.expressionMap.mainAlias!.name = 't'; queryBuilder.expressionMap.mainAlias!.name = 't';
const columnNames = this.createTableColumnNames(queryBuilder); const columnNames = this.createTableColumnNames(queryBuilder).map(column => `__disambiguation__${column}`);
queryBuilder.returning(columnNames.map(column => `"${column.slice('__disambiguation__'.length)}" AS "${column}"`).join());
const builder = this.createQueryBuilder().addCommonTableExpression(queryBuilder, 'cte', { columnNames }); const builder = this.createQueryBuilder().addCommonTableExpression(queryBuilder, 'cte', { columnNames });
builder.expressionMap.mainAlias!.tablePath = 'cte'; builder.expressionMap.mainAlias!.tablePath = 'cte';
this.selectAliasColumnNames(queryBuilder, builder); this.selectAliasColumnNames(queryBuilder, builder);
@ -114,7 +115,7 @@ export const miRepository = {
return builder.select(selection, selectionAliasName); return builder.select(selection, selectionAliasName);
}; };
for (const columnName of this.createTableColumnNames(queryBuilder)) { for (const columnName of this.createTableColumnNames(queryBuilder)) {
selectOrAddSelect(`${builder.alias}.${columnName}`, `${builder.alias}_${columnName}`); selectOrAddSelect(`"${builder.alias}"."__disambiguation__${columnName}"`, `"${builder.alias}_${columnName}"`);
} }
}, },
} satisfies MiRepository<ObjectLiteral>; } satisfies MiRepository<ObjectLiteral>;