| 1106 | } |
| 1107 | |
| 1108 | private buildCloneFields<T extends object>( |
| 1109 | props: EntityProperty<T>[], |
| 1110 | mappedOverrides: Dictionary | undefined, |
| 1111 | meta: EntityMetadata<T>, |
| 1112 | ): { selectFields: (string | RawQueryFragment)[]; insertColumns: string[] } { |
| 1113 | const selectFields: (string | RawQueryFragment)[] = []; |
| 1114 | const insertColumns: string[] = []; |
| 1115 | |
| 1116 | for (const prop of props) { |
| 1117 | for (const fieldName of prop.fieldNames) { |
| 1118 | insertColumns.push(fieldName); |
| 1119 | |
| 1120 | if (mappedOverrides && fieldName in mappedOverrides) { |
| 1121 | selectFields.push(raw('? as ??', [mappedOverrides[fieldName], fieldName])); |
| 1122 | } else if (meta.versionProperty === prop.name) { |
| 1123 | const initial = prop.runtimeType === 'Date' ? new Date() : 1; |
| 1124 | selectFields.push(raw('? as ??', [initial, fieldName])); |
| 1125 | } else { |
| 1126 | selectFields.push(fieldName); |
| 1127 | } |
| 1128 | } |
| 1129 | } |
| 1130 | |
| 1131 | return { selectFields, insertColumns }; |
| 1132 | } |
| 1133 | |
| 1134 | private getCloneableProps<T extends object>(meta: EntityMetadata<T>, ownProps?: boolean): EntityProperty<T>[] { |
| 1135 | return (ownProps ? (meta.ownProps ?? meta.props) : meta.props).filter(prop => { |