@@ -850,20 +850,6 @@ func SetupViper(v *viper.Viper, filename string, bidderInfos BidderInfos) {
850
850
v .SetDefault ("stored_requests.filesystem.enabled" , false )
851
851
v .SetDefault ("stored_requests.filesystem.directorypath" , "./stored_requests/data/by_id" )
852
852
v .SetDefault ("stored_requests.directorypath" , "./stored_requests/data/by_id" )
853
- v .SetDefault ("stored_requests.postgres.connection.dbname" , "" )
854
- v .SetDefault ("stored_requests.postgres.connection.host" , "" )
855
- v .SetDefault ("stored_requests.postgres.connection.port" , 0 )
856
- v .SetDefault ("stored_requests.postgres.connection.user" , "" )
857
- v .SetDefault ("stored_requests.postgres.connection.password" , "" )
858
- v .SetDefault ("stored_requests.postgres.fetcher.query" , "" )
859
- v .SetDefault ("stored_requests.postgres.fetcher.amp_query" , "" )
860
- v .SetDefault ("stored_requests.postgres.initialize_caches.timeout_ms" , 0 )
861
- v .SetDefault ("stored_requests.postgres.initialize_caches.query" , "" )
862
- v .SetDefault ("stored_requests.postgres.initialize_caches.amp_query" , "" )
863
- v .SetDefault ("stored_requests.postgres.poll_for_updates.refresh_rate_seconds" , 0 )
864
- v .SetDefault ("stored_requests.postgres.poll_for_updates.timeout_ms" , 0 )
865
- v .SetDefault ("stored_requests.postgres.poll_for_updates.query" , "" )
866
- v .SetDefault ("stored_requests.postgres.poll_for_updates.amp_query" , "" )
867
853
v .SetDefault ("stored_requests.http.endpoint" , "" )
868
854
v .SetDefault ("stored_requests.http.amp_endpoint" , "" )
869
855
v .SetDefault ("stored_requests.in_memory_cache.type" , "none" )
@@ -880,17 +866,6 @@ func SetupViper(v *viper.Viper, filename string, bidderInfos BidderInfos) {
880
866
// PBS is not in the business of storing video content beyond the normal prebid cache system.
881
867
v .SetDefault ("stored_video_req.filesystem.enabled" , false )
882
868
v .SetDefault ("stored_video_req.filesystem.directorypath" , "" )
883
- v .SetDefault ("stored_video_req.postgres.connection.dbname" , "" )
884
- v .SetDefault ("stored_video_req.postgres.connection.host" , "" )
885
- v .SetDefault ("stored_video_req.postgres.connection.port" , 0 )
886
- v .SetDefault ("stored_video_req.postgres.connection.user" , "" )
887
- v .SetDefault ("stored_video_req.postgres.connection.password" , "" )
888
- v .SetDefault ("stored_video_req.postgres.fetcher.query" , "" )
889
- v .SetDefault ("stored_video_req.postgres.initialize_caches.timeout_ms" , 0 )
890
- v .SetDefault ("stored_video_req.postgres.initialize_caches.query" , "" )
891
- v .SetDefault ("stored_video_req.postgres.poll_for_updates.refresh_rate_seconds" , 0 )
892
- v .SetDefault ("stored_video_req.postgres.poll_for_updates.timeout_ms" , 0 )
893
- v .SetDefault ("stored_video_req.postgres.poll_for_updates.query" , "" )
894
869
v .SetDefault ("stored_video_req.http.endpoint" , "" )
895
870
v .SetDefault ("stored_video_req.in_memory_cache.type" , "none" )
896
871
v .SetDefault ("stored_video_req.in_memory_cache.ttl_seconds" , 0 )
@@ -904,17 +879,6 @@ func SetupViper(v *viper.Viper, filename string, bidderInfos BidderInfos) {
904
879
v .SetDefault ("stored_video_req.http_events.timeout_ms" , 0 )
905
880
v .SetDefault ("stored_responses.filesystem.enabled" , false )
906
881
v .SetDefault ("stored_responses.filesystem.directorypath" , "" )
907
- v .SetDefault ("stored_responses.postgres.connection.dbname" , "" )
908
- v .SetDefault ("stored_responses.postgres.connection.host" , "" )
909
- v .SetDefault ("stored_responses.postgres.connection.port" , 0 )
910
- v .SetDefault ("stored_responses.postgres.connection.user" , "" )
911
- v .SetDefault ("stored_responses.postgres.connection.password" , "" )
912
- v .SetDefault ("stored_responses.postgres.fetcher.query" , "" )
913
- v .SetDefault ("stored_responses.postgres.initialize_caches.timeout_ms" , 0 )
914
- v .SetDefault ("stored_responses.postgres.initialize_caches.query" , "" )
915
- v .SetDefault ("stored_responses.postgres.poll_for_updates.refresh_rate_seconds" , 0 )
916
- v .SetDefault ("stored_responses.postgres.poll_for_updates.timeout_ms" , 0 )
917
- v .SetDefault ("stored_responses.postgres.poll_for_updates.query" , "" )
918
882
v .SetDefault ("stored_responses.http.endpoint" , "" )
919
883
v .SetDefault ("stored_responses.in_memory_cache.type" , "none" )
920
884
v .SetDefault ("stored_responses.in_memory_cache.ttl_seconds" , 0 )
@@ -1039,6 +1003,7 @@ func SetupViper(v *viper.Viper, filename string, bidderInfos BidderInfos) {
1039
1003
migrateConfigPurposeOneTreatment (v )
1040
1004
migrateConfigSpecialFeature1 (v )
1041
1005
migrateConfigTCF2PurposeFlags (v )
1006
+ migrateConfigDatabaseConnection (v )
1042
1007
1043
1008
// These defaults must be set after the migrate functions because those functions look for the presence of these
1044
1009
// config fields and there isn't a way to detect presence of a config field using the viper package if a default
@@ -1190,6 +1155,170 @@ func migrateConfigTCF2PurposeEnabledFlags(v *viper.Viper) {
1190
1155
}
1191
1156
}
1192
1157
1158
+ func migrateConfigDatabaseConnection (v * viper.Viper ) {
1159
+
1160
+ type QueryParamMigration struct {
1161
+ old string
1162
+ new string
1163
+ }
1164
+
1165
+ type QueryMigration struct {
1166
+ name string
1167
+ params []QueryParamMigration
1168
+ }
1169
+
1170
+ type Migration struct {
1171
+ old string
1172
+ new string
1173
+ fields []string
1174
+ queryMigrations []QueryMigration
1175
+ }
1176
+
1177
+ queryParamMigrations := struct {
1178
+ RequestIdList QueryParamMigration
1179
+ ImpIdList QueryParamMigration
1180
+ IdList QueryParamMigration
1181
+ LastUpdated QueryParamMigration
1182
+ }{
1183
+ RequestIdList : QueryParamMigration {
1184
+ old : "%REQUEST_ID_LIST%" ,
1185
+ new : "$REQUEST_ID_LIST" ,
1186
+ },
1187
+ ImpIdList : QueryParamMigration {
1188
+ old : "%IMP_ID_LIST%" ,
1189
+ new : "$IMP_ID_LIST" ,
1190
+ },
1191
+ IdList : QueryParamMigration {
1192
+ old : "%ID_LIST%" ,
1193
+ new : "$ID_LIST" ,
1194
+ },
1195
+ LastUpdated : QueryParamMigration {
1196
+ old : "$1" ,
1197
+ new : "$LAST_UPDATED" ,
1198
+ },
1199
+ }
1200
+
1201
+ queryMigrations := []QueryMigration {
1202
+ {
1203
+ name : "fetcher.query" ,
1204
+ params : []QueryParamMigration {queryParamMigrations .RequestIdList , queryParamMigrations .ImpIdList , queryParamMigrations .IdList },
1205
+ },
1206
+ {
1207
+ name : "fetcher.amp_query" ,
1208
+ params : []QueryParamMigration {queryParamMigrations .RequestIdList , queryParamMigrations .ImpIdList , queryParamMigrations .IdList },
1209
+ },
1210
+ {
1211
+ name : "poll_for_updates.query" ,
1212
+ params : []QueryParamMigration {queryParamMigrations .LastUpdated },
1213
+ },
1214
+ {
1215
+ name : "poll_for_updates.amp_query" ,
1216
+ params : []QueryParamMigration {queryParamMigrations .LastUpdated },
1217
+ },
1218
+ }
1219
+
1220
+ migrations := []Migration {
1221
+ {
1222
+ old : "stored_requests.postgres" ,
1223
+ new : "stored_requests.database" ,
1224
+ fields : []string {
1225
+ "connection.dbname" ,
1226
+ "connection.host" ,
1227
+ "connection.port" ,
1228
+ "connection.user" ,
1229
+ "connection.password" ,
1230
+ "fetcher.query" ,
1231
+ "fetcher.amp_query" ,
1232
+ "initialize_caches.timeout_ms" ,
1233
+ "initialize_caches.query" ,
1234
+ "initialize_caches.amp_query" ,
1235
+ "poll_for_updates.refresh_rate_seconds" ,
1236
+ "poll_for_updates.timeout_ms" ,
1237
+ "poll_for_updates.query" ,
1238
+ "poll_for_updates.amp_query" ,
1239
+ },
1240
+ queryMigrations : queryMigrations ,
1241
+ },
1242
+ {
1243
+ old : "stored_video_req.postgres" ,
1244
+ new : "stored_video_req.database" ,
1245
+ fields : []string {
1246
+ "connection.dbname" ,
1247
+ "connection.host" ,
1248
+ "connection.port" ,
1249
+ "connection.user" ,
1250
+ "connection.password" ,
1251
+ "fetcher.query" ,
1252
+ "initialize_caches.timeout_ms" ,
1253
+ "initialize_caches.query" ,
1254
+ "poll_for_updates.refresh_rate_seconds" ,
1255
+ "poll_for_updates.timeout_ms" ,
1256
+ "poll_for_updates.query" ,
1257
+ },
1258
+ queryMigrations : queryMigrations ,
1259
+ },
1260
+ {
1261
+ old : "stored_responses.postgres" ,
1262
+ new : "stored_responses.database" ,
1263
+ fields : []string {
1264
+ "connection.dbname" ,
1265
+ "connection.host" ,
1266
+ "connection.port" ,
1267
+ "connection.user" ,
1268
+ "connection.password" ,
1269
+ "fetcher.query" ,
1270
+ "initialize_caches.timeout_ms" ,
1271
+ "initialize_caches.query" ,
1272
+ "poll_for_updates.refresh_rate_seconds" ,
1273
+ "poll_for_updates.timeout_ms" ,
1274
+ "poll_for_updates.query" ,
1275
+ },
1276
+ queryMigrations : queryMigrations ,
1277
+ },
1278
+ }
1279
+
1280
+ for _ , migration := range migrations {
1281
+ driverField := migration .new + ".connection.driver"
1282
+ if ! v .IsSet (migration .new ) && v .IsSet (migration .old ) {
1283
+ glog .Warning (fmt .Sprintf ("%s is deprecated and should be changed to %s" , migration .old , migration .new ))
1284
+ glog .Warning (fmt .Sprintf ("%s is not set, using default (postgres)" , driverField ))
1285
+ v .Set (driverField , "postgres" )
1286
+
1287
+ for _ , field := range migration .fields {
1288
+ oldField := migration .old + "." + field
1289
+ newField := migration .new + "." + field
1290
+ if v .IsSet (oldField ) {
1291
+ glog .Warning (fmt .Sprintf ("%s is deprecated and should be changed to %s" , oldField , newField ))
1292
+ v .Set (newField , v .Get (oldField ))
1293
+ }
1294
+ }
1295
+
1296
+ for _ , queryMigration := range migration .queryMigrations {
1297
+ oldQueryField := migration .old + "." + queryMigration .name
1298
+ newQueryField := migration .new + "." + queryMigration .name
1299
+ queryString := v .GetString (oldQueryField )
1300
+ for _ , queryParam := range queryMigration .params {
1301
+ if strings .Contains (queryString , queryParam .old ) {
1302
+ glog .Warning (fmt .Sprintf ("Query param %s for %s is deprecated and should be changed to %s" , queryParam .old , oldQueryField , queryParam .new ))
1303
+ queryString = strings .ReplaceAll (queryString , queryParam .old , queryParam .new )
1304
+ v .Set (newQueryField , queryString )
1305
+ }
1306
+ }
1307
+ }
1308
+ } else if v .IsSet (migration .new ) && v .IsSet (migration .old ) {
1309
+ glog .Warning (fmt .Sprintf ("using %s and ignoring deprecated %s" , migration .new , migration .old ))
1310
+
1311
+ for _ , field := range migration .fields {
1312
+ oldField := migration .old + "." + field
1313
+ newField := migration .new + "." + field
1314
+ if v .IsSet (oldField ) {
1315
+ glog .Warning (fmt .Sprintf ("using %s and ignoring deprecated %s" , newField , oldField ))
1316
+ }
1317
+ }
1318
+ }
1319
+ }
1320
+ }
1321
+
1193
1322
func setBidderDefaults (v * viper.Viper , bidder string ) {
1194
1323
adapterCfgPrefix := "adapters." + bidder
1195
1324
v .BindEnv (adapterCfgPrefix + ".disabled" , "" )
0 commit comments