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.js +33 -94
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +33 -94
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -3
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
|
|
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
|
-
|
|
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
|
-
|
|
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,
|
|
2969
|
+
const structureToAst = async (ctx, adapter) => {
|
|
3000
2970
|
const ast = [];
|
|
3001
|
-
const data = await
|
|
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,
|
|
3655
|
+
const ast = await structureToAst(ctx, adapter);
|
|
3717
3656
|
await adapter.close();
|
|
3718
3657
|
const result = astToMigration(config, ast);
|
|
3719
3658
|
if (!result)
|