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