@@ -31,10 +31,66 @@ BEGIN
31
31
my $session = start(); # this line required
32
32
33
33
# upgrade functions go here
34
+ fixMetaDataRevisionDates($session );
34
35
35
36
finish($session ); # this line required
36
37
37
38
39
+ # ----------------------------------------------------------------------------
40
+ # Describe what our function does
41
+ sub fixMetaDataRevisionDates {
42
+ my $session = shift ;
43
+ print " \t Check to see if metaData has bad revision dates... " unless $quiet ;
44
+ my $getMeta0 = $session -> db-> read (
45
+ ' SELECT fieldId, assetId, value from metaData_values where revisionDate=0'
46
+ );
47
+ my $getRevisionDates = $session -> db-> prepare(
48
+ ' select revisionDate from assetData where assetId=? order by revisionDate'
49
+ );
50
+ my $getMetaValue = $session -> db-> prepare(
51
+ ' select value from metaData_values where assetId=? and fieldId=? and revisionDate=?'
52
+ );
53
+ my $updateMetaValue = $session -> db-> prepare(
54
+ ' UPDATE metaData_values set value=? where assetId=? AND fieldId=? and revisionDate=?'
55
+ );
56
+ my $insertMetaValue = $session -> db-> prepare(
57
+ ' INSERT INTO metaData_values (assetId, fieldId, value, revisionDate) VALUES (?,?,?,?)'
58
+ );
59
+ # #Get each metaData_value entry
60
+ METAENTRY: while (my $metaEntry = $getMeta0 -> hashRef) {
61
+ $getRevisionDates -> execute([$metaEntry -> {assetId }]);
62
+ # #Get all revisionDates for the asset in that entry
63
+ REVISIONDATE: while (my ($revisionDate ) = $getRevisionDates -> array) {
64
+ # #Find the metaData value for that revisionDate
65
+ $getMetaValue -> execute([$metaEntry -> {assetId }, $metaEntry -> {fieldId }, $revisionDate , ]);
66
+ my ($metaValue ) = $getMetaValue -> array;
67
+ # #If that matches the current entry, we're done with this revisionDate
68
+ next REVISIONDATE if $metaValue eq $metaEntry -> {value };
69
+ # #It doesn't match, so we have to fix it.
70
+ # #Update a bad entry
71
+ if (defined $metaValue ) {
72
+ $updateMetaValue -> execute([
73
+ @{$metaEntry }{qw/ value assetId fieldId/ }, $revisionDate ,
74
+ ]);
75
+ }
76
+ # #Insert a new one
77
+ else {
78
+ $insertMetaValue -> execute([
79
+ @{$metaEntry }{qw/ assetId fieldId value/ }, $revisionDate ,
80
+ ]);
81
+ }
82
+ }
83
+ }
84
+ $getMeta0 -> finish;
85
+ $getRevisionDates -> finish;
86
+ $getMetaValue -> finish;
87
+ $insertMetaValue -> finish;
88
+ $updateMetaValue -> finish;
89
+ $session -> db-> write (' delete from metaData_values where revisionDate=0' );
90
+ print " DONE!\n " unless $quiet ;
91
+ }
92
+
93
+
38
94
# ----------------------------------------------------------------------------
39
95
# Describe what our function does
40
96
# sub exampleFunction {
0 commit comments