rake-db 2.14.2 → 2.14.3

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.
package/dist/index.mjs CHANGED
@@ -2672,23 +2672,7 @@ JOIN pg_class c
2672
2672
  JOIN pg_rewrite r ON r.ev_class = c.oid
2673
2673
  WHERE ${filterSchema("nc.nspname")}
2674
2674
  ORDER BY c.relname`;
2675
- const sql = `SELECT (${schemasSql}) AS "schemas", ${jsonAgg(
2676
- tablesSql,
2677
- "tables"
2678
- )}, ${jsonAgg(viewsSql, "views")}`;
2679
- class DbStructure {
2680
- constructor(db) {
2681
- this.db = db;
2682
- }
2683
- async getStructure() {
2684
- const {
2685
- rows: [structure]
2686
- } = await this.db.query(sql);
2687
- return structure;
2688
- }
2689
- async getIndexes() {
2690
- const { rows } = await this.db.query(
2691
- `SELECT
2675
+ const indexesSql = `SELECT
2692
2676
  n.nspname "schemaName",
2693
2677
  t.relname "tableName",
2694
2678
  ic.relname "name",
@@ -2783,13 +2767,8 @@ JOIN pg_am am ON am.oid = ic.relam
2783
2767
  LEFT JOIN pg_catalog.pg_class tc ON (ic.reltoastrelid = tc.oid)
2784
2768
  WHERE ${filterSchema("n.nspname")}
2785
2769
  AND NOT i.indisprimary
2786
- ORDER BY ic.relname`
2787
- );
2788
- return rows;
2789
- }
2790
- async getConstraints() {
2791
- const { rows } = await this.db.query(
2792
- `SELECT
2770
+ ORDER BY ic.relname`;
2771
+ const constraintsSql = `SELECT
2793
2772
  s.nspname AS "schemaName",
2794
2773
  t.relname AS "tableName",
2795
2774
  c.conname AS "name",
@@ -2855,13 +2834,8 @@ JOIN pg_catalog.pg_namespace s
2855
2834
  ON s.oid = t.relnamespace
2856
2835
  AND contype IN ('p', 'f', 'c')
2857
2836
  AND ${filterSchema("s.nspname")}
2858
- ORDER BY c.conname`
2859
- );
2860
- return rows;
2861
- }
2862
- async getTriggers() {
2863
- const { rows } = await this.db.query(
2864
- `SELECT event_object_schema AS "schemaName",
2837
+ ORDER BY c.conname`;
2838
+ const triggersSql = `SELECT event_object_schema AS "schemaName",
2865
2839
  event_object_table AS "tableName",
2866
2840
  trigger_schema AS "triggerSchema",
2867
2841
  trigger_name AS name,
@@ -2872,25 +2846,15 @@ ORDER BY c.conname`
2872
2846
  FROM information_schema.triggers
2873
2847
  WHERE ${filterSchema("event_object_schema")}
2874
2848
  GROUP BY event_object_schema, event_object_table, trigger_schema, trigger_name, action_timing, action_condition, action_statement
2875
- ORDER BY trigger_name`
2876
- );
2877
- return rows;
2878
- }
2879
- async getExtensions() {
2880
- const { rows } = await this.db.query(
2881
- `SELECT
2849
+ ORDER BY trigger_name`;
2850
+ const extensionsSql = `SELECT
2882
2851
  nspname AS "schemaName",
2883
2852
  extname AS "name",
2884
2853
  extversion AS version
2885
2854
  FROM pg_extension
2886
2855
  JOIN pg_catalog.pg_namespace n ON n.oid = extnamespace
2887
- AND ${filterSchema("n.nspname")}`
2888
- );
2889
- return rows;
2890
- }
2891
- async getEnums() {
2892
- const { rows } = await this.db.query(
2893
- `SELECT
2856
+ AND ${filterSchema("n.nspname")}`;
2857
+ const enumsSql = `SELECT
2894
2858
  n.nspname as "schemaName",
2895
2859
  t.typname as name,
2896
2860
  json_agg(e.enumlabel) as values
@@ -2898,12 +2862,8 @@ FROM pg_type t
2898
2862
  JOIN pg_enum e ON t.oid = e.enumtypid
2899
2863
  JOIN pg_catalog.pg_namespace n ON n.oid = t.typnamespace
2900
2864
  WHERE ${filterSchema("n.nspname")}
2901
- GROUP BY n.nspname, t.typname`
2902
- );
2903
- return rows;
2904
- }
2905
- async getDomains() {
2906
- const { rows } = await this.db.query(`SELECT
2865
+ GROUP BY n.nspname, t.typname`;
2866
+ const domainsSql = `SELECT
2907
2867
  n.nspname AS "schemaName",
2908
2868
  d.typname AS "name",
2909
2869
  t.typname AS "type",
@@ -2931,11 +2891,8 @@ JOIN pg_catalog.pg_type t
2931
2891
  ) = d.typbasetype
2932
2892
  JOIN pg_catalog.pg_namespace s ON s.oid = t.typnamespace
2933
2893
  LEFT JOIN pg_catalog.pg_constraint c ON c.contypid = d.oid
2934
- WHERE d.typtype = 'd' AND ${filterSchema("n.nspname")}`);
2935
- return rows;
2936
- }
2937
- async getCollations() {
2938
- const { rows } = await this.db.query(`SELECT
2894
+ WHERE d.typtype = 'd' AND ${filterSchema("n.nspname")}`;
2895
+ const collationsSql = `SELECT
2939
2896
  nspname "schema",
2940
2897
  collname "name",
2941
2898
  CASE WHEN collprovider = 'i' THEN 'icu' WHEN collprovider = 'c' THEN 'libc' ELSE collprovider::text END "provider",
@@ -2946,10 +2903,23 @@ WHERE d.typtype = 'd' AND ${filterSchema("n.nspname")}`);
2946
2903
  collversion "version"
2947
2904
  FROM pg_collation
2948
2905
  JOIN pg_namespace n on pg_collation.collnamespace = n.oid
2949
- WHERE ${filterSchema("n.nspname")}
2950
- `);
2951
- return rows;
2952
- }
2906
+ WHERE ${filterSchema("n.nspname")}`;
2907
+ const sql = `SELECT (${schemasSql}) AS "schemas", ${jsonAgg(
2908
+ tablesSql,
2909
+ "tables"
2910
+ )}, ${jsonAgg(viewsSql, "views")}, ${jsonAgg(indexesSql, "indexes")}, ${jsonAgg(
2911
+ constraintsSql,
2912
+ "constraints"
2913
+ )}, ${jsonAgg(triggersSql, "triggers")}, ${jsonAgg(
2914
+ extensionsSql,
2915
+ "extensions"
2916
+ )}, ${jsonAgg(enumsSql, "enums")}, ${jsonAgg(domainsSql, "domains")}, ${jsonAgg(
2917
+ collationsSql,
2918
+ "collations"
2919
+ )}`;
2920
+ async function introspectDbSchema(db) {
2921
+ const data = await db.query(sql);
2922
+ return data.rows[0];
2953
2923
  }
2954
2924
 
2955
2925
  var __defProp$1 = Object.defineProperty;
@@ -2996,9 +2966,9 @@ const fkeyActionMap = {
2996
2966
  n: "SET NULL",
2997
2967
  d: "SET DEFAULT"
2998
2968
  };
2999
- const structureToAst = async (ctx, db) => {
2969
+ const structureToAst = async (ctx, adapter) => {
3000
2970
  const ast = [];
3001
- const data = await getData(db);
2971
+ const data = await introspectDbSchema(adapter);
3002
2972
  for (const name of data.schemas) {
3003
2973
  if (name === "public")
3004
2974
  continue;
@@ -3116,36 +3086,6 @@ const structureToAst = async (ctx, db) => {
3116
3086
  }
3117
3087
  return ast;
3118
3088
  };
3119
- const getData = async (db) => {
3120
- const [
3121
- { schemas, tables, views },
3122
- constraints,
3123
- indexes,
3124
- extensions,
3125
- enums,
3126
- domains,
3127
- collations
3128
- ] = await Promise.all([
3129
- db.getStructure(),
3130
- db.getConstraints(),
3131
- db.getIndexes(),
3132
- db.getExtensions(),
3133
- db.getEnums(),
3134
- db.getDomains(),
3135
- db.getCollations()
3136
- ]);
3137
- return {
3138
- schemas,
3139
- tables,
3140
- views,
3141
- constraints,
3142
- indexes,
3143
- extensions,
3144
- enums,
3145
- domains,
3146
- collations
3147
- };
3148
- };
3149
3089
  const makeBelongsToTable = (schema, table) => (item) => item.schemaName === schema && item.tableName === table;
3150
3090
  const getIsSerial = (item) => {
3151
3091
  if (item.type === "int2" || item.type === "int4" || item.type === "int8") {
@@ -3705,7 +3645,6 @@ const pullDbStructure = async (options, config) => {
3705
3645
  var _a, _b, _c, _d;
3706
3646
  const adapter = new Adapter(options);
3707
3647
  const currentSchema = adapter.schema || "public";
3708
- const db = new DbStructure(adapter);
3709
3648
  const ctx = {
3710
3649
  snakeCase: config.snakeCase,
3711
3650
  unsupportedTypes: {},
@@ -3713,7 +3652,7 @@ const pullDbStructure = async (options, config) => {
3713
3652
  columnSchemaConfig: config.schemaConfig,
3714
3653
  columnsByType: makeColumnsByType(config.schemaConfig)
3715
3654
  };
3716
- const ast = await structureToAst(ctx, db);
3655
+ const ast = await structureToAst(ctx, adapter);
3717
3656
  await adapter.close();
3718
3657
  const result = astToMigration(config, ast);
3719
3658
  if (!result)