@@ -1149,14 +1149,29 @@ export abstract class BaseOperationHandler<Schema extends SchemaDef> {
11491149 const autoUpdatedFields : string [ ] = [ ] ;
11501150 for ( const [ fieldName , fieldDef ] of Object . entries ( modelDef . fields ) ) {
11511151 if ( fieldDef . updatedAt && finalData [ fieldName ] === undefined ) {
1152- const ignoredFields = new Set ( typeof fieldDef . updatedAt === 'boolean' ? [ ] : fieldDef . updatedAt . ignore ) ;
1153- const hasNonIgnoredFields = Object . keys ( data ) . some (
1154- ( field ) =>
1155- ( isScalarField ( this . schema , modelDef . name , field ) ||
1156- isForeignKeyField ( this . schema , modelDef . name , field ) ) &&
1157- ! ignoredFields . has ( field ) ,
1158- ) ;
1159- if ( hasNonIgnoredFields ) {
1152+ let hasUpdated = true ;
1153+ if ( typeof fieldDef . updatedAt === 'object' ) {
1154+ if ( fieldDef . updatedAt . ignore ) {
1155+ const ignoredFields = new Set ( fieldDef . updatedAt . ignore ) ;
1156+ const hasNonIgnoredFields = Object . keys ( data ) . some (
1157+ ( field ) =>
1158+ ( isScalarField ( this . schema , modelDef . name , field ) ||
1159+ isForeignKeyField ( this . schema , modelDef . name , field ) ) &&
1160+ ! ignoredFields . has ( field ) ,
1161+ ) ;
1162+ hasUpdated = hasNonIgnoredFields ;
1163+ } else if ( fieldDef . updatedAt . fields ) {
1164+ const targetFields = new Set ( fieldDef . updatedAt . fields ) ;
1165+ const hasAnyTargetFields = Object . keys ( data ) . some (
1166+ ( field ) =>
1167+ ( isScalarField ( this . schema , modelDef . name , field ) ||
1168+ isForeignKeyField ( this . schema , modelDef . name , field ) ) &&
1169+ targetFields . has ( field ) ,
1170+ ) ;
1171+ hasUpdated = hasAnyTargetFields ;
1172+ }
1173+ }
1174+ if ( hasUpdated ) {
11601175 if ( finalData === data ) {
11611176 finalData = clone ( data ) ;
11621177 }
0 commit comments