@@ -14,34 +14,77 @@ protected override void Generate(CreateTableOperation operation, IModel model, M
1414 {
1515 base . Generate ( operation , model , builder ) ;
1616
17- foreach ( var column in operation . Columns )
17+ foreach ( var columnOperation in operation . Columns )
1818 {
19- var sqlHelper = Dependencies . SqlGenerationHelper ;
20-
21- var addDynamicMask = column . FindAnnotation ( AnnotationConstants . DynamicDataMasking ) ;
22- if ( addDynamicMask != null )
23- {
24- builder . Append ( "ALTER TABLE " )
25- . Append ( sqlHelper . DelimitIdentifier ( operation . Name , operation . Schema ) )
26- . Append ( $ " ALTER COLUMN { column . Name } ")
27- . Append ( $ " ADD MASKED WITH (FUNCTION='{ addDynamicMask . Value } ')")
28- . Append ( sqlHelper . StatementTerminator )
29- . EndCommand ( ) ;
30- }
19+ AddMaskingFunction ( columnOperation , builder ) ;
3120 }
3221 }
3322
23+ protected override void Generate ( AddColumnOperation operation , IModel model , MigrationCommandListBuilder builder )
24+ {
25+ base . Generate ( operation , model , builder ) ;
26+
27+ AddMaskingFunction ( operation , builder ) ;
28+ }
29+
3430 protected override void Generate ( AlterColumnOperation operation , IModel model , MigrationCommandListBuilder builder )
3531 {
3632 base . Generate ( operation , model , builder ) ;
37- if ( operation . OldColumn . FindAnnotation ( AnnotationConstants . DynamicDataMasking ) != null && operation . FindAnnotation ( AnnotationConstants . DynamicDataMasking ) == null )
33+ if ( ColumnAnnotationAdded ( AnnotationConstants . DynamicDataMasking , operation . OldColumn , operation ) )
34+ {
35+ AddMaskingFunction ( operation , builder ) ;
36+ }
37+ if ( ColumnAnnotationRemoved ( AnnotationConstants . DynamicDataMasking , operation . OldColumn , operation ) )
38+ {
39+ DropMaskingFunction ( operation , builder ) ;
40+ }
41+ }
42+
43+ private void AddMaskingFunction ( AlterColumnOperation operation , MigrationCommandListBuilder builder )
44+ {
45+ var sqlHelper = Dependencies . SqlGenerationHelper ;
46+ var addDynamicMask = operation . FindAnnotation ( AnnotationConstants . DynamicDataMasking ) ;
47+
48+ builder . Append ( "ALTER TABLE " )
49+ . Append ( sqlHelper . DelimitIdentifier ( operation . Table , operation . Schema ) )
50+ . Append ( $ " ALTER COLUMN { operation . Name } ")
51+ . Append ( $ " ADD MASKED WITH (FUNCTION='{ addDynamicMask . Value } ')")
52+ . Append ( sqlHelper . StatementTerminator )
53+ . EndCommand ( ) ;
54+ }
55+
56+ private void AddMaskingFunction ( AddColumnOperation column , MigrationCommandListBuilder builder )
57+ {
58+ var sqlHelper = Dependencies . SqlGenerationHelper ;
59+
60+ var addDynamicMask = column . FindAnnotation ( AnnotationConstants . DynamicDataMasking ) ;
61+ if ( addDynamicMask != null )
3862 {
3963 builder . Append ( "ALTER TABLE " )
40- . Append ( Dependencies . SqlGenerationHelper . DelimitIdentifier ( operation . Table , operation . Schema ) )
41- . Append ( $ " ALTER COLUMN { operation . Name } ")
42- . Append ( $ " DROP MASKED")
43- . EndCommand ( ) ;
64+ . Append ( sqlHelper . DelimitIdentifier ( column . Table , column . Name ) )
65+ . Append ( $ " ALTER COLUMN { column . Name } ")
66+ . Append ( $ " ADD MASKED WITH (FUNCTION='{ addDynamicMask . Value } ')")
67+ . Append ( sqlHelper . StatementTerminator )
68+ . EndCommand ( ) ;
4469 }
4570 }
71+
72+ private void DropMaskingFunction ( AlterColumnOperation operation , MigrationCommandListBuilder builder )
73+ {
74+ builder . Append ( "ALTER TABLE " )
75+ . Append ( Dependencies . SqlGenerationHelper . DelimitIdentifier ( operation . Table , operation . Schema ) )
76+ . Append ( $ " ALTER COLUMN { operation . Name } ")
77+ . Append ( $ " DROP MASKED")
78+ . EndCommand ( ) ;
79+ }
80+
81+ private bool ColumnAnnotationAdded ( string annotrationName , ColumnOperation oldColumn , ColumnOperation newColumn )
82+ {
83+ return oldColumn . FindAnnotation ( annotrationName ) == null && newColumn . FindAnnotation ( annotrationName ) != null ;
84+ }
85+
86+ private bool ColumnAnnotationRemoved ( string annotrationName , ColumnOperation oldColumn ,
87+ ColumnOperation newColumn )
88+ => ! ColumnAnnotationAdded ( annotrationName , oldColumn , newColumn ) ;
4689 }
4790}
0 commit comments