@tricoteuses/senat 3.1.22 → 3.1.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (391) hide show
  1. package/LICENSE.md +32 -32
  2. package/README.md +326 -326
  3. package/lib/src/index.d.ts +1 -0
  4. package/lib/src/other_types/collaborateurs.d.ts +5 -0
  5. package/lib/src/parsers/collaborateurs.d.ts +44 -0
  6. package/lib/src/parsers/collaborateurs.js +157 -0
  7. package/lib/src/rich_types/sens.d.ts +5 -0
  8. package/lib/src/scripts/data-download.js +1 -0
  9. package/lib/src/scripts/retrieve_collaborateurs.js +166 -0
  10. package/lib/src/scripts/retrieve_cr_seance.js +34 -25
  11. package/lib/src/scripts/retrieve_videos.js +13 -8
  12. package/lib/src/scripts/shared/incremental_import_sql.js +866 -859
  13. package/lib/src/scripts/shared/schema_version.js +84 -84
  14. package/lib/src/scripts/shared/staging_metadata_sql.js +214 -214
  15. package/lib/src/scripts/validate_prefixed_tables.js +12 -12
  16. package/lib/src/server/ameli.js +14 -13
  17. package/lib/src/server/conversion_textes.js +106 -106
  18. package/lib/src/server/debats.js +10 -10
  19. package/lib/src/server/documents.js +22 -22
  20. package/lib/src/server/dosleg.js +33 -33
  21. package/lib/src/server/questions.js +10 -10
  22. package/lib/src/server/scrutins.js +3 -3
  23. package/lib/src/server/sens.js +19 -19
  24. package/lib/src/utils/reunion_odj_building.js +0 -4
  25. package/lib/src/videos/match.js +7 -5
  26. package/lib/src/videos/pipeline.js +26 -19
  27. package/lib/tests/collaborateurs.test.js +115 -0
  28. package/lib/tests/incrementalImportSql.test.js +4 -1
  29. package/package.json +121 -119
  30. package/lib/add-js-extensions-v2.js +0 -23
  31. package/lib/add-js-extensions.js +0 -17
  32. package/lib/aggregates.d.ts +0 -52
  33. package/lib/aggregates.js +0 -930
  34. package/lib/aggregates.mjs +0 -713
  35. package/lib/aggregates.ts +0 -833
  36. package/lib/config.d.ts +0 -10
  37. package/lib/config.js +0 -16
  38. package/lib/config.mjs +0 -16
  39. package/lib/config.ts +0 -26
  40. package/lib/databases.d.ts +0 -2
  41. package/lib/databases.js +0 -26
  42. package/lib/databases.mjs +0 -57
  43. package/lib/databases.ts +0 -71
  44. package/lib/datasets.d.ts +0 -34
  45. package/lib/datasets.js +0 -233
  46. package/lib/datasets.mjs +0 -78
  47. package/lib/datasets.ts +0 -118
  48. package/lib/fields.d.ts +0 -10
  49. package/lib/fields.js +0 -68
  50. package/lib/fields.mjs +0 -22
  51. package/lib/fields.ts +0 -29
  52. package/lib/git.d.ts +0 -26
  53. package/lib/git.js +0 -167
  54. package/lib/index.d.ts +0 -13
  55. package/lib/index.js +0 -1
  56. package/lib/index.mjs +0 -7
  57. package/lib/index.ts +0 -64
  58. package/lib/inserters.d.ts +0 -98
  59. package/lib/inserters.js +0 -500
  60. package/lib/inserters.mjs +0 -360
  61. package/lib/inserters.ts +0 -521
  62. package/lib/legislatures.json +0 -38
  63. package/lib/loaders.d.ts +0 -58
  64. package/lib/loaders.js +0 -286
  65. package/lib/loaders.mjs +0 -158
  66. package/lib/loaders.ts +0 -271
  67. package/lib/model/agenda.d.ts +0 -6
  68. package/lib/model/agenda.js +0 -148
  69. package/lib/model/ameli.d.ts +0 -51
  70. package/lib/model/ameli.js +0 -149
  71. package/lib/model/ameli.mjs +0 -84
  72. package/lib/model/ameli.ts +0 -100
  73. package/lib/model/commission.d.ts +0 -18
  74. package/lib/model/commission.js +0 -269
  75. package/lib/model/debats.d.ts +0 -67
  76. package/lib/model/debats.js +0 -95
  77. package/lib/model/debats.mjs +0 -43
  78. package/lib/model/debats.ts +0 -68
  79. package/lib/model/documents.d.ts +0 -12
  80. package/lib/model/documents.js +0 -151
  81. package/lib/model/dosleg.d.ts +0 -7
  82. package/lib/model/dosleg.js +0 -326
  83. package/lib/model/dosleg.mjs +0 -196
  84. package/lib/model/dosleg.ts +0 -240
  85. package/lib/model/index.d.ts +0 -7
  86. package/lib/model/index.js +0 -7
  87. package/lib/model/index.mjs +0 -5
  88. package/lib/model/index.ts +0 -15
  89. package/lib/model/questions.d.ts +0 -45
  90. package/lib/model/questions.js +0 -89
  91. package/lib/model/questions.mjs +0 -71
  92. package/lib/model/questions.ts +0 -93
  93. package/lib/model/scrutins.d.ts +0 -13
  94. package/lib/model/scrutins.js +0 -114
  95. package/lib/model/seance.d.ts +0 -3
  96. package/lib/model/seance.js +0 -267
  97. package/lib/model/sens.d.ts +0 -146
  98. package/lib/model/sens.js +0 -454
  99. package/lib/model/sens.mjs +0 -415
  100. package/lib/model/sens.ts +0 -516
  101. package/lib/model/texte.d.ts +0 -7
  102. package/lib/model/texte.js +0 -256
  103. package/lib/model/texte.mjs +0 -208
  104. package/lib/model/texte.ts +0 -229
  105. package/lib/model/util.d.ts +0 -9
  106. package/lib/model/util.js +0 -38
  107. package/lib/model/util.mjs +0 -19
  108. package/lib/model/util.ts +0 -32
  109. package/lib/parsers/texte.d.ts +0 -7
  110. package/lib/parsers/texte.js +0 -228
  111. package/lib/raw_types/ameli.d.ts +0 -914
  112. package/lib/raw_types/ameli.js +0 -5
  113. package/lib/raw_types/ameli.mjs +0 -163
  114. package/lib/raw_types/debats.d.ts +0 -207
  115. package/lib/raw_types/debats.js +0 -5
  116. package/lib/raw_types/debats.mjs +0 -58
  117. package/lib/raw_types/dosleg.d.ts +0 -1619
  118. package/lib/raw_types/dosleg.js +0 -5
  119. package/lib/raw_types/dosleg.mjs +0 -438
  120. package/lib/raw_types/questions.d.ts +0 -419
  121. package/lib/raw_types/questions.js +0 -5
  122. package/lib/raw_types/questions.mjs +0 -11
  123. package/lib/raw_types/senat.d.ts +0 -11368
  124. package/lib/raw_types/senat.js +0 -5
  125. package/lib/raw_types/sens.d.ts +0 -8248
  126. package/lib/raw_types/sens.js +0 -5
  127. package/lib/raw_types/sens.mjs +0 -508
  128. package/lib/raw_types_kysely/ameli.d.ts +0 -915
  129. package/lib/raw_types_kysely/ameli.js +0 -7
  130. package/lib/raw_types_kysely/ameli.mjs +0 -5
  131. package/lib/raw_types_kysely/ameli.ts +0 -951
  132. package/lib/raw_types_kysely/debats.d.ts +0 -207
  133. package/lib/raw_types_kysely/debats.js +0 -7
  134. package/lib/raw_types_kysely/debats.mjs +0 -5
  135. package/lib/raw_types_kysely/debats.ts +0 -222
  136. package/lib/raw_types_kysely/dosleg.d.ts +0 -3532
  137. package/lib/raw_types_kysely/dosleg.js +0 -7
  138. package/lib/raw_types_kysely/dosleg.mjs +0 -5
  139. package/lib/raw_types_kysely/dosleg.ts +0 -3621
  140. package/lib/raw_types_kysely/questions.d.ts +0 -414
  141. package/lib/raw_types_kysely/questions.js +0 -7
  142. package/lib/raw_types_kysely/questions.mjs +0 -5
  143. package/lib/raw_types_kysely/questions.ts +0 -426
  144. package/lib/raw_types_kysely/sens.d.ts +0 -4394
  145. package/lib/raw_types_kysely/sens.js +0 -7
  146. package/lib/raw_types_kysely/sens.mjs +0 -5
  147. package/lib/raw_types_kysely/sens.ts +0 -4499
  148. package/lib/raw_types_schemats/ameli.d.ts +0 -539
  149. package/lib/raw_types_schemats/ameli.js +0 -2
  150. package/lib/raw_types_schemats/ameli.mjs +0 -2
  151. package/lib/raw_types_schemats/ameli.ts +0 -601
  152. package/lib/raw_types_schemats/debats.d.ts +0 -127
  153. package/lib/raw_types_schemats/debats.js +0 -2
  154. package/lib/raw_types_schemats/debats.mjs +0 -2
  155. package/lib/raw_types_schemats/debats.ts +0 -145
  156. package/lib/raw_types_schemats/dosleg.d.ts +0 -977
  157. package/lib/raw_types_schemats/dosleg.js +0 -2
  158. package/lib/raw_types_schemats/dosleg.mjs +0 -2
  159. package/lib/raw_types_schemats/dosleg.ts +0 -2193
  160. package/lib/raw_types_schemats/questions.d.ts +0 -235
  161. package/lib/raw_types_schemats/questions.js +0 -2
  162. package/lib/raw_types_schemats/questions.mjs +0 -2
  163. package/lib/raw_types_schemats/questions.ts +0 -249
  164. package/lib/raw_types_schemats/sens.d.ts +0 -6915
  165. package/lib/raw_types_schemats/sens.js +0 -2
  166. package/lib/raw_types_schemats/sens.mjs +0 -2
  167. package/lib/raw_types_schemats/sens.ts +0 -2907
  168. package/lib/scripts/convert_data.js +0 -354
  169. package/lib/scripts/convert_data.mjs +0 -181
  170. package/lib/scripts/convert_data.ts +0 -243
  171. package/lib/scripts/data-download.d.ts +0 -1
  172. package/lib/scripts/data-download.js +0 -12
  173. package/lib/scripts/datautil.d.ts +0 -8
  174. package/lib/scripts/datautil.js +0 -34
  175. package/lib/scripts/datautil.mjs +0 -16
  176. package/lib/scripts/datautil.ts +0 -19
  177. package/lib/scripts/images/transparent_150x192.jpg +0 -0
  178. package/lib/scripts/images/transparent_155x225.jpg +0 -0
  179. package/lib/scripts/parse_textes.d.ts +0 -1
  180. package/lib/scripts/parse_textes.js +0 -44
  181. package/lib/scripts/parse_textes.mjs +0 -46
  182. package/lib/scripts/parse_textes.ts +0 -65
  183. package/lib/scripts/retrieve_agenda.d.ts +0 -1
  184. package/lib/scripts/retrieve_agenda.js +0 -132
  185. package/lib/scripts/retrieve_cr_commission.d.ts +0 -1
  186. package/lib/scripts/retrieve_cr_commission.js +0 -364
  187. package/lib/scripts/retrieve_cr_seance.d.ts +0 -6
  188. package/lib/scripts/retrieve_cr_seance.js +0 -347
  189. package/lib/scripts/retrieve_documents.d.ts +0 -3
  190. package/lib/scripts/retrieve_documents.js +0 -219
  191. package/lib/scripts/retrieve_documents.mjs +0 -249
  192. package/lib/scripts/retrieve_documents.ts +0 -298
  193. package/lib/scripts/retrieve_open_data.d.ts +0 -1
  194. package/lib/scripts/retrieve_open_data.js +0 -315
  195. package/lib/scripts/retrieve_open_data.mjs +0 -217
  196. package/lib/scripts/retrieve_open_data.ts +0 -268
  197. package/lib/scripts/retrieve_senateurs_photos.d.ts +0 -1
  198. package/lib/scripts/retrieve_senateurs_photos.js +0 -147
  199. package/lib/scripts/retrieve_senateurs_photos.mjs +0 -147
  200. package/lib/scripts/retrieve_senateurs_photos.ts +0 -177
  201. package/lib/scripts/retrieve_videos.d.ts +0 -1
  202. package/lib/scripts/retrieve_videos.js +0 -461
  203. package/lib/scripts/shared/cli_helpers.d.ts +0 -95
  204. package/lib/scripts/shared/cli_helpers.js +0 -91
  205. package/lib/scripts/shared/cli_helpers.ts +0 -36
  206. package/lib/scripts/shared/util.d.ts +0 -4
  207. package/lib/scripts/shared/util.js +0 -35
  208. package/lib/scripts/shared/util.ts +0 -33
  209. package/lib/scripts/test_iter_load.d.ts +0 -1
  210. package/lib/scripts/test_iter_load.js +0 -12
  211. package/lib/src/ameli.d.ts +0 -66
  212. package/lib/src/ameli.js +0 -1
  213. package/lib/src/config.d.ts +0 -43
  214. package/lib/src/config.js +0 -37
  215. package/lib/src/conversion_textes.d.ts +0 -11
  216. package/lib/src/conversion_textes.js +0 -320
  217. package/lib/src/databases.d.ts +0 -3
  218. package/lib/src/databases.js +0 -26
  219. package/lib/src/databases_postgres.d.ts +0 -4
  220. package/lib/src/databases_postgres.js +0 -23
  221. package/lib/src/datasets.d.ts +0 -38
  222. package/lib/src/datasets.js +0 -247
  223. package/lib/src/db_types/ameli.d.ts +0 -1762
  224. package/lib/src/db_types/ameli.js +0 -1074
  225. package/lib/src/db_types/debats.d.ts +0 -380
  226. package/lib/src/db_types/debats.js +0 -266
  227. package/lib/src/db_types/dosleg.d.ts +0 -2954
  228. package/lib/src/db_types/dosleg.js +0 -2005
  229. package/lib/src/db_types/questions.d.ts +0 -699
  230. package/lib/src/db_types/questions.js +0 -493
  231. package/lib/src/db_types/sens.d.ts +0 -7843
  232. package/lib/src/db_types/sens.js +0 -4691
  233. package/lib/src/debats.d.ts +0 -38
  234. package/lib/src/debats.js +0 -1
  235. package/lib/src/dosleg.d.ts +0 -142
  236. package/lib/src/dosleg.js +0 -193
  237. package/lib/src/git.d.ts +0 -27
  238. package/lib/src/git.js +0 -251
  239. package/lib/src/loaders.d.ts +0 -52
  240. package/lib/src/loaders.js +0 -260
  241. package/lib/src/model/agenda.d.ts +0 -6
  242. package/lib/src/model/agenda.js +0 -148
  243. package/lib/src/model/ameli.d.ts +0 -67
  244. package/lib/src/model/ameli.js +0 -150
  245. package/lib/src/model/ameli_postgres.d.ts +0 -67
  246. package/lib/src/model/ameli_postgres.js +0 -150
  247. package/lib/src/model/commission.d.ts +0 -19
  248. package/lib/src/model/commission.js +0 -269
  249. package/lib/src/model/debats.d.ts +0 -39
  250. package/lib/src/model/debats.js +0 -112
  251. package/lib/src/model/documents.d.ts +0 -32
  252. package/lib/src/model/documents.js +0 -182
  253. package/lib/src/model/dosleg.d.ts +0 -144
  254. package/lib/src/model/dosleg.js +0 -468
  255. package/lib/src/model/index.d.ts +0 -7
  256. package/lib/src/model/index.js +0 -7
  257. package/lib/src/model/questions.d.ts +0 -54
  258. package/lib/src/model/questions.js +0 -91
  259. package/lib/src/model/scrutins.d.ts +0 -48
  260. package/lib/src/model/scrutins.js +0 -121
  261. package/lib/src/model/seance.d.ts +0 -3
  262. package/lib/src/model/seance.js +0 -267
  263. package/lib/src/model/sens.d.ts +0 -112
  264. package/lib/src/model/sens.js +0 -385
  265. package/lib/src/model/util.d.ts +0 -1
  266. package/lib/src/model/util.js +0 -15
  267. package/lib/src/other_types/questions.d.ts +0 -2
  268. package/lib/src/other_types/questions.js +0 -1
  269. package/lib/src/questions.d.ts +0 -53
  270. package/lib/src/questions.js +0 -1
  271. package/lib/src/raw_types/ameli.d.ts +0 -1762
  272. package/lib/src/raw_types/ameli.js +0 -1074
  273. package/lib/src/raw_types/debats.d.ts +0 -380
  274. package/lib/src/raw_types/debats.js +0 -266
  275. package/lib/src/raw_types/dosleg.d.ts +0 -2954
  276. package/lib/src/raw_types/dosleg.js +0 -2005
  277. package/lib/src/raw_types/questions.d.ts +0 -699
  278. package/lib/src/raw_types/questions.js +0 -493
  279. package/lib/src/raw_types/senat.d.ts +0 -11372
  280. package/lib/src/raw_types/senat.js +0 -5
  281. package/lib/src/raw_types/sens.d.ts +0 -7843
  282. package/lib/src/raw_types/sens.js +0 -4691
  283. package/lib/src/raw_types_schemats/ameli.d.ts +0 -541
  284. package/lib/src/raw_types_schemats/ameli.js +0 -2
  285. package/lib/src/raw_types_schemats/debats.d.ts +0 -127
  286. package/lib/src/raw_types_schemats/debats.js +0 -2
  287. package/lib/src/raw_types_schemats/dosleg.d.ts +0 -977
  288. package/lib/src/raw_types_schemats/dosleg.js +0 -2
  289. package/lib/src/raw_types_schemats/questions.d.ts +0 -237
  290. package/lib/src/raw_types_schemats/questions.js +0 -2
  291. package/lib/src/raw_types_schemats/sens.d.ts +0 -2709
  292. package/lib/src/raw_types_schemats/sens.js +0 -2
  293. package/lib/src/rich_types/agenda.d.ts +0 -45
  294. package/lib/src/rich_types/agenda.js +0 -1
  295. package/lib/src/rich_types/compte_rendu.d.ts +0 -83
  296. package/lib/src/rich_types/compte_rendu.js +0 -1
  297. package/lib/src/rich_types/sessions.d.ts +0 -6
  298. package/lib/src/rich_types/sessions.js +0 -19
  299. package/lib/src/rich_types/texte.d.ts +0 -72
  300. package/lib/src/rich_types/texte.js +0 -15
  301. package/lib/src/scripts/test_iter_load.d.ts +0 -1
  302. package/lib/src/scripts/test_iter_load.js +0 -12
  303. package/lib/src/sens.d.ts +0 -104
  304. package/lib/src/sens.js +0 -1
  305. package/lib/src/types/agenda.d.ts +0 -45
  306. package/lib/src/types/agenda.js +0 -1
  307. package/lib/src/types/ameli.d.ts +0 -1762
  308. package/lib/src/types/ameli.js +0 -1074
  309. package/lib/src/types/compte_rendu.d.ts +0 -83
  310. package/lib/src/types/compte_rendu.js +0 -1
  311. package/lib/src/types/debats.d.ts +0 -380
  312. package/lib/src/types/debats.js +0 -266
  313. package/lib/src/types/dosleg.d.ts +0 -2954
  314. package/lib/src/types/dosleg.js +0 -2005
  315. package/lib/src/types/questions.d.ts +0 -699
  316. package/lib/src/types/questions.js +0 -493
  317. package/lib/src/types/sens.d.ts +0 -7843
  318. package/lib/src/types/sens.js +0 -4691
  319. package/lib/src/types/sessions.d.ts +0 -6
  320. package/lib/src/types/sessions.js +0 -19
  321. package/lib/src/types/texte.d.ts +0 -72
  322. package/lib/src/types/texte.js +0 -15
  323. package/lib/src/validators/config.d.ts +0 -9
  324. package/lib/src/validators/config.js +0 -10
  325. package/lib/strings.d.ts +0 -1
  326. package/lib/strings.js +0 -18
  327. package/lib/strings.mjs +0 -18
  328. package/lib/strings.ts +0 -26
  329. package/lib/tsconfig.tsbuildinfo +0 -1
  330. package/lib/types/agenda.d.ts +0 -44
  331. package/lib/types/agenda.js +0 -1
  332. package/lib/types/ameli.d.ts +0 -5
  333. package/lib/types/ameli.js +0 -1
  334. package/lib/types/ameli.mjs +0 -13
  335. package/lib/types/ameli.ts +0 -21
  336. package/lib/types/compte_rendu.d.ts +0 -83
  337. package/lib/types/compte_rendu.js +0 -1
  338. package/lib/types/debats.d.ts +0 -2
  339. package/lib/types/debats.js +0 -1
  340. package/lib/types/debats.mjs +0 -2
  341. package/lib/types/debats.ts +0 -6
  342. package/lib/types/dosleg.d.ts +0 -70
  343. package/lib/types/dosleg.js +0 -1
  344. package/lib/types/dosleg.mjs +0 -151
  345. package/lib/types/dosleg.ts +0 -284
  346. package/lib/types/questions.d.ts +0 -2
  347. package/lib/types/questions.js +0 -1
  348. package/lib/types/questions.mjs +0 -1
  349. package/lib/types/questions.ts +0 -3
  350. package/lib/types/sens.d.ts +0 -10
  351. package/lib/types/sens.js +0 -1
  352. package/lib/types/sens.mjs +0 -1
  353. package/lib/types/sens.ts +0 -12
  354. package/lib/types/sessions.d.ts +0 -5
  355. package/lib/types/sessions.js +0 -84
  356. package/lib/types/sessions.mjs +0 -43
  357. package/lib/types/sessions.ts +0 -42
  358. package/lib/types/texte.d.ts +0 -74
  359. package/lib/types/texte.js +0 -16
  360. package/lib/types/texte.mjs +0 -16
  361. package/lib/types/texte.ts +0 -76
  362. package/lib/typings/windows-1252.d.js +0 -2
  363. package/lib/typings/windows-1252.d.mjs +0 -2
  364. package/lib/typings/windows-1252.d.ts +0 -11
  365. package/lib/utils/cr_spliting.d.ts +0 -28
  366. package/lib/utils/cr_spliting.js +0 -265
  367. package/lib/utils/date.d.ts +0 -10
  368. package/lib/utils/date.js +0 -100
  369. package/lib/utils/nvs-timecode.d.ts +0 -7
  370. package/lib/utils/nvs-timecode.js +0 -79
  371. package/lib/utils/reunion_grouping.d.ts +0 -9
  372. package/lib/utils/reunion_grouping.js +0 -361
  373. package/lib/utils/reunion_odj_building.d.ts +0 -5
  374. package/lib/utils/reunion_odj_building.js +0 -154
  375. package/lib/utils/reunion_parsing.d.ts +0 -23
  376. package/lib/utils/reunion_parsing.js +0 -209
  377. package/lib/utils/scoring.d.ts +0 -14
  378. package/lib/utils/scoring.js +0 -147
  379. package/lib/utils/string_cleaning.d.ts +0 -7
  380. package/lib/utils/string_cleaning.js +0 -57
  381. package/lib/validators/config.d.ts +0 -9
  382. package/lib/validators/config.js +0 -10
  383. package/lib/validators/config.mjs +0 -54
  384. package/lib/validators/config.ts +0 -79
  385. package/lib/validators/senat.d.ts +0 -0
  386. package/lib/validators/senat.js +0 -28
  387. package/lib/validators/senat.mjs +0 -24
  388. package/lib/validators/senat.ts +0 -26
  389. /package/lib/{add-js-extensions-v2.d.ts → src/other_types/collaborateurs.js} +0 -0
  390. /package/lib/{add-js-extensions.d.ts → src/scripts/retrieve_collaborateurs.d.ts} +0 -0
  391. /package/lib/{scripts/convert_data.d.ts → tests/collaborateurs.test.d.ts} +0 -0
@@ -2,94 +2,94 @@ function escapeSqlLiteral(value) {
2
2
  return value.replace(/'/g, "''");
3
3
  }
4
4
  export function buildEnsureSchemaVersionTableSql(schemaName) {
5
- return `
6
- CREATE TABLE IF NOT EXISTS ${schemaName}.version(
7
- number integer PRIMARY KEY
8
- );
9
- COMMENT ON TABLE ${schemaName}.version IS 'version of database';
10
- COMMENT ON COLUMN ${schemaName}.version.number IS 'version number of database schema';
11
- INSERT INTO ${schemaName}.version(number)
12
- SELECT 0
13
- WHERE NOT EXISTS (SELECT 1 FROM ${schemaName}.version);
5
+ return `
6
+ CREATE TABLE IF NOT EXISTS ${schemaName}.version(
7
+ number integer PRIMARY KEY
8
+ );
9
+ COMMENT ON TABLE ${schemaName}.version IS 'version of database';
10
+ COMMENT ON COLUMN ${schemaName}.version.number IS 'version number of database schema';
11
+ INSERT INTO ${schemaName}.version(number)
12
+ SELECT 0
13
+ WHERE NOT EXISTS (SELECT 1 FROM ${schemaName}.version);
14
14
  `;
15
15
  }
16
16
  export function buildSchemaStructureFingerprintQuery(schemaName) {
17
17
  const escapedSchemaName = escapeSqlLiteral(schemaName);
18
- return `
19
- WITH objects AS (
20
- SELECT format('table:%s', table_class.relname) AS entry
21
- FROM pg_class table_class
22
- JOIN pg_namespace table_namespace ON table_namespace.oid = table_class.relnamespace
23
- WHERE table_namespace.nspname = '${escapedSchemaName}'
24
- AND table_class.relkind IN ('r', 'p')
25
- AND table_class.relname <> 'version'
26
-
27
- UNION ALL
28
-
29
- SELECT format(
30
- 'column:%s:%s:%s:%s:%s:%s:%s:%s',
31
- columns.table_name,
32
- columns.ordinal_position,
33
- columns.column_name,
34
- columns.udt_schema,
35
- columns.udt_name,
36
- columns.is_nullable,
37
- coalesce(columns.column_default, ''),
38
- columns.is_identity
39
- ) AS entry
40
- FROM information_schema.columns columns
41
- WHERE columns.table_schema = '${escapedSchemaName}'
42
- AND columns.table_name <> 'version'
43
-
44
- UNION ALL
45
-
46
- SELECT format(
47
- 'constraint:%s:%s:%s:%s',
48
- table_class.relname,
49
- constraint_data.contype,
50
- constraint_data.conname,
51
- pg_get_constraintdef(constraint_data.oid, true)
52
- ) AS entry
53
- FROM pg_constraint constraint_data
54
- JOIN pg_class table_class ON table_class.oid = constraint_data.conrelid
55
- JOIN pg_namespace table_namespace ON table_namespace.oid = table_class.relnamespace
56
- WHERE table_namespace.nspname = '${escapedSchemaName}'
57
- AND table_class.relname <> 'version'
58
- AND constraint_data.contype <> 'n'
59
-
60
- UNION ALL
61
-
62
- SELECT format(
63
- 'index:%s:%s',
64
- table_class.relname,
65
- pg_get_indexdef(idx.indexrelid)
66
- ) AS entry
67
- FROM pg_index idx
68
- JOIN pg_class table_class ON table_class.oid = idx.indrelid
69
- JOIN pg_namespace table_namespace ON table_namespace.oid = table_class.relnamespace
70
- LEFT JOIN pg_constraint constraint_data ON constraint_data.conindid = idx.indexrelid
71
- WHERE table_namespace.nspname = '${escapedSchemaName}'
72
- AND table_class.relname <> 'version'
73
- AND constraint_data.oid IS NULL
74
-
75
- UNION ALL
76
-
77
- SELECT format(
78
- 'sequence:%s:%s:%s:%s:%s:%s:%s:%s',
79
- sequences.sequencename,
80
- sequences.data_type,
81
- sequences.start_value,
82
- sequences.min_value,
83
- sequences.max_value,
84
- sequences.increment_by,
85
- sequences.cycle,
86
- sequences.cache_size
87
- ) AS entry
88
- FROM pg_sequences sequences
89
- WHERE sequences.schemaname = '${escapedSchemaName}'
90
- )
91
- SELECT coalesce(md5(string_agg(entry, E'\\n' ORDER BY entry)), '')
92
- FROM objects
18
+ return `
19
+ WITH objects AS (
20
+ SELECT format('table:%s', table_class.relname) AS entry
21
+ FROM pg_class table_class
22
+ JOIN pg_namespace table_namespace ON table_namespace.oid = table_class.relnamespace
23
+ WHERE table_namespace.nspname = '${escapedSchemaName}'
24
+ AND table_class.relkind IN ('r', 'p')
25
+ AND table_class.relname <> 'version'
26
+
27
+ UNION ALL
28
+
29
+ SELECT format(
30
+ 'column:%s:%s:%s:%s:%s:%s:%s:%s',
31
+ columns.table_name,
32
+ columns.ordinal_position,
33
+ columns.column_name,
34
+ columns.udt_schema,
35
+ columns.udt_name,
36
+ columns.is_nullable,
37
+ coalesce(columns.column_default, ''),
38
+ columns.is_identity
39
+ ) AS entry
40
+ FROM information_schema.columns columns
41
+ WHERE columns.table_schema = '${escapedSchemaName}'
42
+ AND columns.table_name <> 'version'
43
+
44
+ UNION ALL
45
+
46
+ SELECT format(
47
+ 'constraint:%s:%s:%s:%s',
48
+ table_class.relname,
49
+ constraint_data.contype,
50
+ constraint_data.conname,
51
+ pg_get_constraintdef(constraint_data.oid, true)
52
+ ) AS entry
53
+ FROM pg_constraint constraint_data
54
+ JOIN pg_class table_class ON table_class.oid = constraint_data.conrelid
55
+ JOIN pg_namespace table_namespace ON table_namespace.oid = table_class.relnamespace
56
+ WHERE table_namespace.nspname = '${escapedSchemaName}'
57
+ AND table_class.relname <> 'version'
58
+ AND constraint_data.contype <> 'n'
59
+
60
+ UNION ALL
61
+
62
+ SELECT format(
63
+ 'index:%s:%s',
64
+ table_class.relname,
65
+ pg_get_indexdef(idx.indexrelid)
66
+ ) AS entry
67
+ FROM pg_index idx
68
+ JOIN pg_class table_class ON table_class.oid = idx.indrelid
69
+ JOIN pg_namespace table_namespace ON table_namespace.oid = table_class.relnamespace
70
+ LEFT JOIN pg_constraint constraint_data ON constraint_data.conindid = idx.indexrelid
71
+ WHERE table_namespace.nspname = '${escapedSchemaName}'
72
+ AND table_class.relname <> 'version'
73
+ AND constraint_data.oid IS NULL
74
+
75
+ UNION ALL
76
+
77
+ SELECT format(
78
+ 'sequence:%s:%s:%s:%s:%s:%s:%s:%s',
79
+ sequences.sequencename,
80
+ sequences.data_type,
81
+ sequences.start_value,
82
+ sequences.min_value,
83
+ sequences.max_value,
84
+ sequences.increment_by,
85
+ sequences.cycle,
86
+ sequences.cache_size
87
+ ) AS entry
88
+ FROM pg_sequences sequences
89
+ WHERE sequences.schemaname = '${escapedSchemaName}'
90
+ )
91
+ SELECT coalesce(md5(string_agg(entry, E'\\n' ORDER BY entry)), '')
92
+ FROM objects
93
93
  `;
94
94
  }
95
95
  export function buildIncrementSchemaVersionSql(schemaName) {
@@ -3,219 +3,219 @@ function escapeSqlLiteral(value) {
3
3
  }
4
4
  export function buildExportStagingMetadataStatementsQuery(stagingSchema, targetSchema) {
5
5
  const escapedStagingSchema = escapeSqlLiteral(stagingSchema);
6
- return `
7
- WITH ordered_statements AS (
8
- SELECT
9
- 10 AS group_no,
10
- 0 AS order_no,
11
- sequences.sequencename AS object_name,
12
- format('CREATE SEQUENCE IF NOT EXISTS %I.%I', '${targetSchema}', sequences.sequencename) AS statement
13
- FROM pg_sequences sequences
14
- WHERE sequences.schemaname = '${escapedStagingSchema}'
15
-
16
- UNION ALL
17
-
18
- SELECT
19
- 20 AS group_no,
20
- 0 AS order_no,
21
- sequences.sequencename AS object_name,
22
- format(
23
- 'ALTER SEQUENCE %I.%I AS %s INCREMENT BY %s MINVALUE %s MAXVALUE %s START WITH %s CACHE %s %s',
24
- '${targetSchema}',
25
- sequences.sequencename,
26
- sequences.data_type,
27
- sequences.increment_by,
28
- sequences.min_value,
29
- sequences.max_value,
30
- sequences.start_value,
31
- sequences.cache_size,
32
- CASE WHEN sequences.cycle THEN 'CYCLE' ELSE 'NO CYCLE' END
33
- ) AS statement
34
- FROM pg_sequences sequences
35
- WHERE sequences.schemaname = '${escapedStagingSchema}'
36
-
37
- UNION ALL
38
-
39
- SELECT
40
- 30 AS group_no,
41
- 0 AS order_no,
42
- sequence_class.relname AS object_name,
43
- CASE
44
- WHEN dependent_table.relname IS NULL THEN format(
45
- 'ALTER SEQUENCE %I.%I OWNED BY NONE',
46
- '${targetSchema}',
47
- sequence_class.relname
48
- )
49
- ELSE format(
50
- 'ALTER SEQUENCE %I.%I OWNED BY %I.%I.%I',
51
- '${targetSchema}',
52
- sequence_class.relname,
53
- '${targetSchema}',
54
- dependent_table.relname,
55
- dependent_column.attname
56
- )
57
- END AS statement
58
- FROM pg_class sequence_class
59
- JOIN pg_namespace sequence_namespace ON sequence_namespace.oid = sequence_class.relnamespace
60
- LEFT JOIN pg_depend dependency
61
- ON dependency.objid = sequence_class.oid
62
- AND dependency.deptype = 'a'
63
- LEFT JOIN pg_class dependent_table ON dependent_table.oid = dependency.refobjid
64
- LEFT JOIN pg_namespace dependent_namespace ON dependent_namespace.oid = dependent_table.relnamespace
65
- LEFT JOIN pg_attribute dependent_column
66
- ON dependent_column.attrelid = dependent_table.oid
67
- AND dependent_column.attnum = dependency.refobjsubid
68
- WHERE sequence_namespace.nspname = '${escapedStagingSchema}'
69
- AND sequence_class.relkind = 'S'
70
- AND (
71
- dependent_namespace.nspname IS NULL
72
- OR dependent_namespace.nspname = '${escapedStagingSchema}'
73
- )
74
-
75
- UNION ALL
76
-
77
- SELECT
78
- 40 AS group_no,
79
- 0 AS order_no,
80
- format('%s.%s', table_class.relname, attribute.attname) AS object_name,
81
- CASE
82
- WHEN default_expr.expression IS NULL THEN format(
83
- 'ALTER TABLE %I.%I ALTER COLUMN %I DROP DEFAULT',
84
- '${targetSchema}',
85
- table_class.relname,
86
- attribute.attname
87
- )
88
- ELSE format(
89
- 'ALTER TABLE %I.%I ALTER COLUMN %I SET DEFAULT %s',
90
- '${targetSchema}',
91
- table_class.relname,
92
- attribute.attname,
93
- replace(default_expr.expression, '${stagingSchema}.', '${targetSchema}.')
94
- )
95
- END AS statement
96
- FROM pg_class table_class
97
- JOIN pg_namespace table_namespace ON table_namespace.oid = table_class.relnamespace
98
- JOIN pg_attribute attribute ON attribute.attrelid = table_class.oid
99
- LEFT JOIN LATERAL (
100
- SELECT pg_get_expr(attr_def.adbin, attr_def.adrelid) AS expression
101
- FROM pg_attrdef attr_def
102
- WHERE attr_def.adrelid = attribute.attrelid
103
- AND attr_def.adnum = attribute.attnum
104
- ) default_expr ON true
105
- WHERE table_namespace.nspname = '${escapedStagingSchema}'
106
- AND table_class.relkind IN ('r', 'p')
107
- AND attribute.attnum > 0
108
- AND NOT attribute.attisdropped
109
- AND attribute.attgenerated = ''
110
- AND attribute.attidentity = ''
111
-
112
- UNION ALL
113
-
114
- SELECT
115
- 50 AS group_no,
116
- 0 AS order_no,
117
- table_class.relname AS object_name,
118
- format(
119
- 'COMMENT ON TABLE %I.%I IS %L',
120
- '${targetSchema}',
121
- table_class.relname,
122
- obj_description(table_class.oid, 'pg_class')
123
- ) AS statement
124
- FROM pg_class table_class
125
- JOIN pg_namespace table_namespace ON table_namespace.oid = table_class.relnamespace
126
- WHERE table_namespace.nspname = '${escapedStagingSchema}'
127
- AND table_class.relkind IN ('r', 'p')
128
-
129
- UNION ALL
130
-
131
- SELECT
132
- 60 AS group_no,
133
- 0 AS order_no,
134
- format('%s.%s', table_class.relname, attribute.attname) AS object_name,
135
- format(
136
- 'COMMENT ON COLUMN %I.%I.%I IS %L',
137
- '${targetSchema}',
138
- table_class.relname,
139
- attribute.attname,
140
- col_description(table_class.oid, attribute.attnum)
141
- ) AS statement
142
- FROM pg_class table_class
143
- JOIN pg_namespace table_namespace ON table_namespace.oid = table_class.relnamespace
144
- JOIN pg_attribute attribute ON attribute.attrelid = table_class.oid
145
- WHERE table_namespace.nspname = '${escapedStagingSchema}'
146
- AND table_class.relkind IN ('r', 'p')
147
- AND attribute.attnum > 0
148
- AND NOT attribute.attisdropped
149
-
150
- UNION ALL
151
-
152
- SELECT
153
- 70 AS group_no,
154
- CASE constraint_data.contype
155
- WHEN 'p' THEN 1
156
- WHEN 'u' THEN 2
157
- WHEN 'c' THEN 3
158
- WHEN 'f' THEN 4
159
- ELSE 5
160
- END AS order_no,
161
- format('%s.%s', table_class.relname, constraint_data.conname) AS object_name,
162
- format(
163
- 'ALTER TABLE %I.%I ADD CONSTRAINT %I %s',
164
- '${targetSchema}',
165
- table_class.relname,
166
- constraint_data.conname,
167
- replace(
168
- replace(
169
- pg_get_constraintdef(constraint_data.oid, true),
170
- ' REFERENCES ' || '${stagingSchema}' || '.',
171
- ' REFERENCES ${targetSchema}.'
172
- ),
173
- ' REFERENCES ONLY ' || '${stagingSchema}' || '.',
174
- ' REFERENCES ONLY ${targetSchema}.'
175
- )
176
- ) AS statement
177
- FROM pg_constraint constraint_data
178
- JOIN pg_class table_class ON table_class.oid = constraint_data.conrelid
179
- JOIN pg_namespace table_namespace ON table_namespace.oid = table_class.relnamespace
180
- WHERE table_namespace.nspname = '${escapedStagingSchema}'
181
- AND constraint_data.contype <> 'n'
182
-
183
- UNION ALL
184
-
185
- SELECT
186
- 80 AS group_no,
187
- 0 AS order_no,
188
- format('%s.%s', table_class.relname, index_class.relname) AS object_name,
189
- replace(
190
- pg_get_indexdef(index_data.indexrelid),
191
- ' ON ${stagingSchema}.',
192
- ' ON ${targetSchema}.'
193
- ) AS statement
194
- FROM pg_index index_data
195
- JOIN pg_class table_class ON table_class.oid = index_data.indrelid
196
- JOIN pg_namespace table_namespace ON table_namespace.oid = table_class.relnamespace
197
- JOIN pg_class index_class ON index_class.oid = index_data.indexrelid
198
- LEFT JOIN pg_constraint constraint_data ON constraint_data.conindid = index_data.indexrelid
199
- WHERE table_namespace.nspname = '${escapedStagingSchema}'
200
- AND constraint_data.oid IS NULL
201
-
202
- UNION ALL
203
-
204
- SELECT
205
- 90 AS group_no,
206
- 0 AS order_no,
207
- sequences.sequencename AS object_name,
208
- format(
209
- 'SELECT setval(%L, %s, %s)',
210
- '${targetSchema}.' || sequences.sequencename,
211
- coalesce(sequences.last_value, sequences.start_value),
212
- CASE WHEN sequences.last_value IS NULL THEN 'false' ELSE 'true' END
213
- ) AS statement
214
- FROM pg_sequences sequences
215
- WHERE sequences.schemaname = '${escapedStagingSchema}'
216
- )
217
- SELECT encode(convert_to(statement, 'UTF8'), 'hex')
218
- FROM ordered_statements
219
- ORDER BY group_no, order_no, object_name;
6
+ return `
7
+ WITH ordered_statements AS (
8
+ SELECT
9
+ 10 AS group_no,
10
+ 0 AS order_no,
11
+ sequences.sequencename AS object_name,
12
+ format('CREATE SEQUENCE IF NOT EXISTS %I.%I', '${targetSchema}', sequences.sequencename) AS statement
13
+ FROM pg_sequences sequences
14
+ WHERE sequences.schemaname = '${escapedStagingSchema}'
15
+
16
+ UNION ALL
17
+
18
+ SELECT
19
+ 20 AS group_no,
20
+ 0 AS order_no,
21
+ sequences.sequencename AS object_name,
22
+ format(
23
+ 'ALTER SEQUENCE %I.%I AS %s INCREMENT BY %s MINVALUE %s MAXVALUE %s START WITH %s CACHE %s %s',
24
+ '${targetSchema}',
25
+ sequences.sequencename,
26
+ sequences.data_type,
27
+ sequences.increment_by,
28
+ sequences.min_value,
29
+ sequences.max_value,
30
+ sequences.start_value,
31
+ sequences.cache_size,
32
+ CASE WHEN sequences.cycle THEN 'CYCLE' ELSE 'NO CYCLE' END
33
+ ) AS statement
34
+ FROM pg_sequences sequences
35
+ WHERE sequences.schemaname = '${escapedStagingSchema}'
36
+
37
+ UNION ALL
38
+
39
+ SELECT
40
+ 30 AS group_no,
41
+ 0 AS order_no,
42
+ sequence_class.relname AS object_name,
43
+ CASE
44
+ WHEN dependent_table.relname IS NULL THEN format(
45
+ 'ALTER SEQUENCE %I.%I OWNED BY NONE',
46
+ '${targetSchema}',
47
+ sequence_class.relname
48
+ )
49
+ ELSE format(
50
+ 'ALTER SEQUENCE %I.%I OWNED BY %I.%I.%I',
51
+ '${targetSchema}',
52
+ sequence_class.relname,
53
+ '${targetSchema}',
54
+ dependent_table.relname,
55
+ dependent_column.attname
56
+ )
57
+ END AS statement
58
+ FROM pg_class sequence_class
59
+ JOIN pg_namespace sequence_namespace ON sequence_namespace.oid = sequence_class.relnamespace
60
+ LEFT JOIN pg_depend dependency
61
+ ON dependency.objid = sequence_class.oid
62
+ AND dependency.deptype = 'a'
63
+ LEFT JOIN pg_class dependent_table ON dependent_table.oid = dependency.refobjid
64
+ LEFT JOIN pg_namespace dependent_namespace ON dependent_namespace.oid = dependent_table.relnamespace
65
+ LEFT JOIN pg_attribute dependent_column
66
+ ON dependent_column.attrelid = dependent_table.oid
67
+ AND dependent_column.attnum = dependency.refobjsubid
68
+ WHERE sequence_namespace.nspname = '${escapedStagingSchema}'
69
+ AND sequence_class.relkind = 'S'
70
+ AND (
71
+ dependent_namespace.nspname IS NULL
72
+ OR dependent_namespace.nspname = '${escapedStagingSchema}'
73
+ )
74
+
75
+ UNION ALL
76
+
77
+ SELECT
78
+ 40 AS group_no,
79
+ 0 AS order_no,
80
+ format('%s.%s', table_class.relname, attribute.attname) AS object_name,
81
+ CASE
82
+ WHEN default_expr.expression IS NULL THEN format(
83
+ 'ALTER TABLE %I.%I ALTER COLUMN %I DROP DEFAULT',
84
+ '${targetSchema}',
85
+ table_class.relname,
86
+ attribute.attname
87
+ )
88
+ ELSE format(
89
+ 'ALTER TABLE %I.%I ALTER COLUMN %I SET DEFAULT %s',
90
+ '${targetSchema}',
91
+ table_class.relname,
92
+ attribute.attname,
93
+ replace(default_expr.expression, '${stagingSchema}.', '${targetSchema}.')
94
+ )
95
+ END AS statement
96
+ FROM pg_class table_class
97
+ JOIN pg_namespace table_namespace ON table_namespace.oid = table_class.relnamespace
98
+ JOIN pg_attribute attribute ON attribute.attrelid = table_class.oid
99
+ LEFT JOIN LATERAL (
100
+ SELECT pg_get_expr(attr_def.adbin, attr_def.adrelid) AS expression
101
+ FROM pg_attrdef attr_def
102
+ WHERE attr_def.adrelid = attribute.attrelid
103
+ AND attr_def.adnum = attribute.attnum
104
+ ) default_expr ON true
105
+ WHERE table_namespace.nspname = '${escapedStagingSchema}'
106
+ AND table_class.relkind IN ('r', 'p')
107
+ AND attribute.attnum > 0
108
+ AND NOT attribute.attisdropped
109
+ AND attribute.attgenerated = ''
110
+ AND attribute.attidentity = ''
111
+
112
+ UNION ALL
113
+
114
+ SELECT
115
+ 50 AS group_no,
116
+ 0 AS order_no,
117
+ table_class.relname AS object_name,
118
+ format(
119
+ 'COMMENT ON TABLE %I.%I IS %L',
120
+ '${targetSchema}',
121
+ table_class.relname,
122
+ obj_description(table_class.oid, 'pg_class')
123
+ ) AS statement
124
+ FROM pg_class table_class
125
+ JOIN pg_namespace table_namespace ON table_namespace.oid = table_class.relnamespace
126
+ WHERE table_namespace.nspname = '${escapedStagingSchema}'
127
+ AND table_class.relkind IN ('r', 'p')
128
+
129
+ UNION ALL
130
+
131
+ SELECT
132
+ 60 AS group_no,
133
+ 0 AS order_no,
134
+ format('%s.%s', table_class.relname, attribute.attname) AS object_name,
135
+ format(
136
+ 'COMMENT ON COLUMN %I.%I.%I IS %L',
137
+ '${targetSchema}',
138
+ table_class.relname,
139
+ attribute.attname,
140
+ col_description(table_class.oid, attribute.attnum)
141
+ ) AS statement
142
+ FROM pg_class table_class
143
+ JOIN pg_namespace table_namespace ON table_namespace.oid = table_class.relnamespace
144
+ JOIN pg_attribute attribute ON attribute.attrelid = table_class.oid
145
+ WHERE table_namespace.nspname = '${escapedStagingSchema}'
146
+ AND table_class.relkind IN ('r', 'p')
147
+ AND attribute.attnum > 0
148
+ AND NOT attribute.attisdropped
149
+
150
+ UNION ALL
151
+
152
+ SELECT
153
+ 70 AS group_no,
154
+ CASE constraint_data.contype
155
+ WHEN 'p' THEN 1
156
+ WHEN 'u' THEN 2
157
+ WHEN 'c' THEN 3
158
+ WHEN 'f' THEN 4
159
+ ELSE 5
160
+ END AS order_no,
161
+ format('%s.%s', table_class.relname, constraint_data.conname) AS object_name,
162
+ format(
163
+ 'ALTER TABLE %I.%I ADD CONSTRAINT %I %s',
164
+ '${targetSchema}',
165
+ table_class.relname,
166
+ constraint_data.conname,
167
+ replace(
168
+ replace(
169
+ pg_get_constraintdef(constraint_data.oid, true),
170
+ ' REFERENCES ' || '${stagingSchema}' || '.',
171
+ ' REFERENCES ${targetSchema}.'
172
+ ),
173
+ ' REFERENCES ONLY ' || '${stagingSchema}' || '.',
174
+ ' REFERENCES ONLY ${targetSchema}.'
175
+ )
176
+ ) AS statement
177
+ FROM pg_constraint constraint_data
178
+ JOIN pg_class table_class ON table_class.oid = constraint_data.conrelid
179
+ JOIN pg_namespace table_namespace ON table_namespace.oid = table_class.relnamespace
180
+ WHERE table_namespace.nspname = '${escapedStagingSchema}'
181
+ AND constraint_data.contype <> 'n'
182
+
183
+ UNION ALL
184
+
185
+ SELECT
186
+ 80 AS group_no,
187
+ 0 AS order_no,
188
+ format('%s.%s', table_class.relname, index_class.relname) AS object_name,
189
+ replace(
190
+ pg_get_indexdef(index_data.indexrelid),
191
+ ' ON ${stagingSchema}.',
192
+ ' ON ${targetSchema}.'
193
+ ) AS statement
194
+ FROM pg_index index_data
195
+ JOIN pg_class table_class ON table_class.oid = index_data.indrelid
196
+ JOIN pg_namespace table_namespace ON table_namespace.oid = table_class.relnamespace
197
+ JOIN pg_class index_class ON index_class.oid = index_data.indexrelid
198
+ LEFT JOIN pg_constraint constraint_data ON constraint_data.conindid = index_data.indexrelid
199
+ WHERE table_namespace.nspname = '${escapedStagingSchema}'
200
+ AND constraint_data.oid IS NULL
201
+
202
+ UNION ALL
203
+
204
+ SELECT
205
+ 90 AS group_no,
206
+ 0 AS order_no,
207
+ sequences.sequencename AS object_name,
208
+ format(
209
+ 'SELECT setval(%L, %s, %s)',
210
+ '${targetSchema}.' || sequences.sequencename,
211
+ coalesce(sequences.last_value, sequences.start_value),
212
+ CASE WHEN sequences.last_value IS NULL THEN 'false' ELSE 'true' END
213
+ ) AS statement
214
+ FROM pg_sequences sequences
215
+ WHERE sequences.schemaname = '${escapedStagingSchema}'
216
+ )
217
+ SELECT encode(convert_to(statement, 'UTF8'), 'hex')
218
+ FROM ordered_statements
219
+ ORDER BY group_no, order_no, object_name;
220
220
  `;
221
221
  }
@@ -9,12 +9,12 @@ const optionsDefinitions = [categoriesOption, silentOption];
9
9
  const options = commandLineArgs(optionsDefinitions);
10
10
  async function listPrefixedSenatTables(dataset) {
11
11
  const prefix = `${dataset.database}_`;
12
- const result = await sql `
13
- select tablename
14
- from pg_tables
15
- where schemaname = ${senatSchemaName}
16
- and tablename like ${prefix + "%"}
17
- order by tablename
12
+ const result = await sql `
13
+ select tablename
14
+ from pg_tables
15
+ where schemaname = ${senatSchemaName}
16
+ and tablename like ${prefix + "%"}
17
+ order by tablename
18
18
  `.execute(db);
19
19
  return result.rows.map(({ tablename }) => tablename);
20
20
  }
@@ -27,12 +27,12 @@ function listExpectedPrefixedSenatTables(dataset) {
27
27
  return extractPrefixedTableNamesFromGeneratedManifest(manifest, dataset.database);
28
28
  }
29
29
  async function listColumns(schema, relationName) {
30
- const result = await sql `
31
- select column_name
32
- from information_schema.columns
33
- where table_schema = ${schema}
34
- and table_name = ${relationName}
35
- order by ordinal_position
30
+ const result = await sql `
31
+ select column_name
32
+ from information_schema.columns
33
+ where table_schema = ${schema}
34
+ and table_name = ${relationName}
35
+ order by ordinal_position
36
36
  `.execute(db);
37
37
  return result.rows.map(({ column_name }) => column_name);
38
38
  }