@@ -82,42 +82,22 @@ import { MiReversiGame } from '@/models/ReversiGame.js';
82
82
import type { QueryDeepPartialEntity } from 'typeorm/query-builder/QueryPartialEntity.js' ;
83
83
84
84
export interface MiRepository < T extends ObjectLiteral > {
85
- createTableColumnNames ( this : Repository < T > & MiRepository < T > , queryBuilder : InsertQueryBuilder < T > ) : string [ ] ;
86
- createTableColumnNamesWithPrimaryKey ( this : Repository < T > & MiRepository < T > , queryBuilder : InsertQueryBuilder < T > ) : string [ ] ;
85
+ createTableColumnNames ( this : Repository < T > & MiRepository < T > ) : string [ ] ;
87
86
insertOne ( this : Repository < T > & MiRepository < T > , entity : QueryDeepPartialEntity < T > , findOptions ?: Pick < FindOneOptions < T > , 'relations' > ) : Promise < T > ;
88
87
selectAliasColumnNames ( this : Repository < T > & MiRepository < T > , queryBuilder : InsertQueryBuilder < T > , builder : SelectQueryBuilder < T > ) : void ;
89
88
}
90
89
91
90
export const miRepository = {
92
- createTableColumnNames ( queryBuilder ) {
93
- // @ts -expect-error -- protected
94
- const insertedColumns = queryBuilder . getInsertedColumns ( ) ;
95
- if ( insertedColumns . length ) {
96
- return insertedColumns . map ( column => column . databaseName ) ;
97
- }
98
- if ( ! queryBuilder . expressionMap . mainAlias ?. hasMetadata && ! queryBuilder . expressionMap . insertColumns . length ) {
99
- // @ts -expect-error -- protected
100
- const valueSets = queryBuilder . getValueSets ( ) ;
101
- if ( valueSets . length === 1 ) {
102
- return Object . keys ( valueSets [ 0 ] ) ;
103
- }
104
- }
105
- return queryBuilder . expressionMap . insertColumns ;
106
- } ,
107
- createTableColumnNamesWithPrimaryKey ( queryBuilder ) {
108
- const columnNames = this . createTableColumnNames ( queryBuilder ) ;
109
- if ( ! columnNames . includes ( 'id' ) ) {
110
- columnNames . unshift ( 'id' ) ;
111
- }
112
- return columnNames ;
91
+ createTableColumnNames ( ) {
92
+ return this . metadata . columns . filter ( column => column . isSelect && ! column . isVirtual ) . map ( column => column . databaseName ) ;
113
93
} ,
114
94
async insertOne ( entity , findOptions ?) {
115
95
const queryBuilder = this . createQueryBuilder ( ) . insert ( ) . values ( entity ) ;
116
96
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
117
97
const mainAlias = queryBuilder . expressionMap . mainAlias ! ;
118
98
const name = mainAlias . name ;
119
99
mainAlias . name = 't' ;
120
- const columnNames = this . createTableColumnNamesWithPrimaryKey ( queryBuilder ) ;
100
+ const columnNames = this . createTableColumnNames ( ) ;
121
101
queryBuilder . returning ( columnNames . reduce ( ( a , c ) => `${ a } , ${ queryBuilder . escape ( c ) } ` , '' ) . slice ( 2 ) ) ;
122
102
const builder = this . createQueryBuilder ( ) . addCommonTableExpression ( queryBuilder , 'cte' , { columnNames } ) ;
123
103
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
@@ -138,7 +118,7 @@ export const miRepository = {
138
118
selectOrAddSelect = ( selection , selectionAliasName ) => builder . addSelect ( selection , selectionAliasName ) ;
139
119
return builder . select ( selection , selectionAliasName ) ;
140
120
} ;
141
- for ( const columnName of this . createTableColumnNamesWithPrimaryKey ( queryBuilder ) ) {
121
+ for ( const columnName of this . createTableColumnNames ( ) ) {
142
122
selectOrAddSelect ( `${ builder . alias } .${ columnName } ` , `${ builder . alias } _${ columnName } ` ) ;
143
123
}
144
124
} ,
0 commit comments