@ez4/pgmigration 0.26.0
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/LICENSE +21 -0
- package/README.md +15 -0
- package/dist/common/columns.d.ts +18 -0
- package/dist/common/constraints.d.ts +25 -0
- package/dist/common/database.d.ts +7 -0
- package/dist/common/indexes.d.ts +9 -0
- package/dist/common/relations.d.ts +16 -0
- package/dist/common/tables.d.ts +12 -0
- package/dist/library.cjs +95 -0
- package/dist/library.d.ts +7 -0
- package/dist/library.mjs +88 -0
- package/dist/main.cjs +125 -0
- package/dist/main.d.ts +1 -0
- package/dist/main.mjs +120 -0
- package/dist/service/queries.d.ts +5 -0
- package/dist/types/query.d.ts +10 -0
- package/dist/utils/checks.d.ts +4 -0
- package/dist/utils/columns.d.ts +4 -0
- package/dist/utils/naming.d.ts +5 -0
- package/dist/utils/repository.d.ts +2 -0
- package/package.json +53 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Silas B.
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { PgIndexRepository } from '@ez4/pgclient/library';
|
|
2
|
+
import type { AnySchema, ObjectSchema } from '@ez4/schema';
|
|
3
|
+
import type { ObjectComparison } from '@ez4/utils';
|
|
4
|
+
import type { SqlBuilder } from '@ez4/pgsql';
|
|
5
|
+
export declare const prepareCreateColumns: (builder: SqlBuilder, table: string, indexes: PgIndexRepository, columns: Record<string, AnySchema>) => {
|
|
6
|
+
query: string;
|
|
7
|
+
};
|
|
8
|
+
export declare const prepareUpdateColumns: (builder: SqlBuilder, table: string, schema: ObjectSchema, indexes: PgIndexRepository, changes: Record<string, ObjectComparison>) => {
|
|
9
|
+
check: string;
|
|
10
|
+
query: string;
|
|
11
|
+
}[];
|
|
12
|
+
export declare const prepareRenameColumns: (builder: SqlBuilder, table: string, changes: Record<string, string>) => {
|
|
13
|
+
check: string;
|
|
14
|
+
query: string;
|
|
15
|
+
}[];
|
|
16
|
+
export declare const prepareDeleteColumns: (builder: SqlBuilder, table: string, columns: Record<string, AnySchema>) => {
|
|
17
|
+
query: string;
|
|
18
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { AnySchema, ObjectSchema, ObjectSchemaProperties } from '@ez4/schema';
|
|
2
|
+
import type { ObjectComparison } from '@ez4/utils';
|
|
3
|
+
import type { SqlBuilder } from '@ez4/pgsql';
|
|
4
|
+
export declare const prepareCreateConstraints: (builder: SqlBuilder, table: string, columns: Record<string, AnySchema>) => {
|
|
5
|
+
check: string;
|
|
6
|
+
query: string;
|
|
7
|
+
}[];
|
|
8
|
+
export declare const prepareUpdateConstraints: (builder: SqlBuilder, table: string, targetSchema: ObjectSchema, sourceSchema: ObjectSchema, changes: Record<string, ObjectComparison>) => ({
|
|
9
|
+
query: string;
|
|
10
|
+
check?: undefined;
|
|
11
|
+
} | {
|
|
12
|
+
check: string;
|
|
13
|
+
query: string;
|
|
14
|
+
})[];
|
|
15
|
+
export declare const prepareRenameConstraints: (builder: SqlBuilder, fromTable: string, toTable: string, columns: Record<string, AnySchema>) => {
|
|
16
|
+
check: string;
|
|
17
|
+
query: string;
|
|
18
|
+
}[];
|
|
19
|
+
export declare const prepareRenameConstraintColumns: (builder: SqlBuilder, table: string, columns: ObjectSchemaProperties, changes: Record<string, string>) => {
|
|
20
|
+
check: string;
|
|
21
|
+
query: string;
|
|
22
|
+
}[];
|
|
23
|
+
export declare const prepareDeleteConstraints: (builder: SqlBuilder, table: string, columns: Record<string, AnySchema>) => {
|
|
24
|
+
query: string;
|
|
25
|
+
}[];
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { PgIndexRepository } from '@ez4/pgclient/library';
|
|
2
|
+
import type { ObjectSchema } from '@ez4/schema';
|
|
3
|
+
import type { SqlBuilder } from '@ez4/pgsql';
|
|
4
|
+
import type { PgMigrationQueries } from '../types/query.js';
|
|
5
|
+
type IndexQueries = Pick<PgMigrationQueries, 'constraints' | 'indexes'>;
|
|
6
|
+
export declare const prepareCreateIndexes: (builder: SqlBuilder, table: string, schema: ObjectSchema, indexes: PgIndexRepository, concurrent: boolean) => IndexQueries;
|
|
7
|
+
export declare const prepareRenameIndexes: (builder: SqlBuilder, fromTable: string, toTable: string, indexes: PgIndexRepository) => IndexQueries;
|
|
8
|
+
export declare const prepareDeleteIndexes: (builder: SqlBuilder, table: string, indexes: PgIndexRepository) => IndexQueries;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { PgRelationRepository } from '@ez4/pgclient/library';
|
|
2
|
+
import type { ObjectSchema } from '@ez4/schema';
|
|
3
|
+
import type { ObjectComparison } from '@ez4/utils';
|
|
4
|
+
import type { SqlBuilder } from '@ez4/pgsql';
|
|
5
|
+
export declare const prepareCreateRelations: (builder: SqlBuilder, table: string, schema: ObjectSchema, relations: PgRelationRepository) => {
|
|
6
|
+
check: string;
|
|
7
|
+
query: string;
|
|
8
|
+
}[];
|
|
9
|
+
export declare const prepareUpdateRelations: (builder: SqlBuilder, table: string, relations: PgRelationRepository, changes: Record<string, ObjectComparison>) => any[];
|
|
10
|
+
export declare const prepareRenameRelations: (builder: SqlBuilder, fromTable: string, toTable: string, relations: PgRelationRepository) => {
|
|
11
|
+
check: string;
|
|
12
|
+
query: string;
|
|
13
|
+
}[];
|
|
14
|
+
export declare const prepareDeleteRelations: (builder: SqlBuilder, table: string, relations: PgRelationRepository) => {
|
|
15
|
+
query: string;
|
|
16
|
+
}[];
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { PgIndexRepository } from '@ez4/pgclient/library';
|
|
2
|
+
import type { ObjectSchema } from '@ez4/schema';
|
|
3
|
+
import type { SqlBuilder } from '@ez4/pgsql';
|
|
4
|
+
export declare const prepareCreateTable: (builder: SqlBuilder, table: string, schema: ObjectSchema, indexes: PgIndexRepository) => {
|
|
5
|
+
query: string;
|
|
6
|
+
};
|
|
7
|
+
export declare const prepareRenameTable: (builder: SqlBuilder, fromTable: string, toTable: string) => {
|
|
8
|
+
query: string;
|
|
9
|
+
};
|
|
10
|
+
export declare const prepareDeleteTable: (builder: SqlBuilder, table: string) => {
|
|
11
|
+
query: string;
|
|
12
|
+
};
|
package/dist/library.cjs
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"use strict";var k=Object.defineProperty;var V=Object.getOwnPropertyDescriptor;var v=Object.getOwnPropertyNames;var G=Object.prototype.hasOwnProperty;var i=(e,t)=>k(e,"name",{value:t,configurable:!0});var H=(e,t)=>{for(var r in t)k(e,r,{get:t[r],enumerable:!0})},J=(e,t,r,n)=>{if(t&&
|
|
2
|
+
typeof t=="object"||typeof t=="function")for(let o of v(t))!G.call(e,o)&&o!==r&&
|
|
3
|
+
k(e,o,{get:()=>t[o],enumerable:!(n=V(t,o))||n.enumerable});return e};var W=e=>J(k({},"__esModule",{value:!0}),e);var he={};H(he,{getTableRepositoryChanges:()=>X,prepareCreateColumns:()=>de,prepareCreateDatabase:()=>ee,
|
|
4
|
+
prepareCreateIndexes:()=>ae,prepareCreateRelations:()=>pe,prepareCreateTable:()=>oe,
|
|
5
|
+
prepareDeleteColumns:()=>Se,prepareDeleteDatabase:()=>te,prepareDeleteIndexes:()=>me,
|
|
6
|
+
prepareDeleteRelations:()=>ge,prepareDeleteTable:()=>se,prepareRenameColumns:()=>xe,
|
|
7
|
+
prepareRenameIndexes:()=>ce,prepareRenameRelations:()=>ye,prepareRenameTable:()=>ie,
|
|
8
|
+
prepareUpdateColumns:()=>fe,prepareUpdateRelations:()=>le});module.exports=W(he);var d=require("@ez4/utils"),A=require("@ez4/pgclient/library"),T=require("@ez4/schema");var X=i((e,t)=>(0,d.deepCompareObject)(e,t,{onRename:i((r,n)=>!(0,d.isAnyObject)(
|
|
9
|
+
r)||!(0,d.isAnyObject)(n)?!1:(0,A.isRepositoryTable)(r)&&(0,A.isRepositoryTable)(
|
|
10
|
+
n)?Y(r.schema,n.schema):(0,T.isAnySchema)(r)&&(0,T.isAnySchema)(n)?Z(r,n):!1,"on\
|
|
11
|
+
Rename")}),"getTableRepositoryChanges"),Y=i((e,t)=>(0,d.deepEqual)(Object.keys(e.
|
|
12
|
+
properties),Object.keys(t.properties)),"canRenameTable"),Z=i((e,t)=>(0,d.deepEqual)(
|
|
13
|
+
e,t,{depth:1,include:{type:!0,definitions:!0,nullable:!0,format:!0}}),"canRename\
|
|
14
|
+
Column");var D=require("@ez4/pgsql");var z=i((e,t)=>{let[r]=e.select().rawColumn("1").from("pg_database").where({datname:e.
|
|
15
|
+
rawString(t)}).build();return r},"getCheckDatabaseQuery"),f=i((e,t)=>{let[r]=e.select().
|
|
16
|
+
rawColumn("1").from("pg_constraint").where({conname:e.rawString(t)}).build();return r},
|
|
17
|
+
"getCheckConstraintQuery"),B=i((e,t,r)=>{let[n]=e.select().rawColumn("1").from("\
|
|
18
|
+
information_schema.columns").where({column_name:e.rawString(r),table_name:e.rawString(
|
|
19
|
+
t)}).build();return n},"getCheckColumnQuery");var ee=i(e=>{let t=new D.SqlBuilder;return{check:z(t,e),query:`CREATE DATABASE "${e}\
|
|
20
|
+
"`}},"prepareCreateDatabase"),te=i(e=>({query:`DROP DATABASE IF EXISTS "${e}" WI\
|
|
21
|
+
TH (FORCE)`}),"prepareDeleteDatabase");var E=require("@ez4/database");var p=require("@ez4/schema"),Q=require("@ez4/utils");var h=i(e=>!!(e.nullable||e.optional),"isOptionalColumn"),q=i((e,t)=>{if((0,p.isScalarSchema)(
|
|
22
|
+
e)||(0,p.isObjectSchema)(e)||(0,p.isArraySchema)(e)||(0,p.isTupleSchema)(e)){let{
|
|
23
|
+
definitions:r}=e;switch(typeof r?.default){case"boolean":case"number":return`${r.
|
|
24
|
+
default}`;case"string":return`'${r.default}'`;case"object":return`'${JSON.stringify(
|
|
25
|
+
r.default)}'`}}if((0,p.isEnumSchema)(e)){let{definitions:r}=e;if(r?.default)return`\
|
|
26
|
+
'${r.default}'`}if((0,p.isStringSchema)(e)&&t)switch(e.format){case"date-time":case"\
|
|
27
|
+
date":case"time":return"now()";case"uuid":return"gen_random_uuid()"}if(h(e))return"\
|
|
28
|
+
null"},"getColumnDefault"),b=i((e,t)=>{switch(e.type){case p.SchemaType.Array:case p.SchemaType.
|
|
29
|
+
Object:case p.SchemaType.Reference:case p.SchemaType.Union:case p.SchemaType.Tuple:
|
|
30
|
+
return"jsonb";case p.SchemaType.Boolean:return"boolean";case p.SchemaType.Enum:return"\
|
|
31
|
+
text";case p.SchemaType.Number:return re(e,t);case p.SchemaType.String:return ne(
|
|
32
|
+
e)}},"getColumnType"),re=i((e,t)=>e.format==="integer"?t?"bigserial":"bigint":"d\
|
|
33
|
+
ecimal","getColumNumberType"),ne=i(e=>{switch(e.format){case"uuid":case"time":case"\
|
|
34
|
+
date":return e.format;case"date-time":return"timestamptz";default:let t=e.definitions?.
|
|
35
|
+
maxLength;return(0,Q.isAnyNumber)(t)?`varchar(${t})`:"text"}},"getColumnTextType");var oe=i((e,t,r,n)=>{let o=e.table(t).create().missing();for(let a in r.properties){
|
|
36
|
+
let s=r.properties[a],u=n[a]?.type===E.Index.Primary,c=!h(s),l=b(s,u),g=q(s,u);o.
|
|
37
|
+
column(a,l,c,g).missing()}return{query:o.build()}},"prepareCreateTable"),ie=i((e,t,r)=>({
|
|
38
|
+
query:e.table(t).rename(r).existing().build()}),"prepareRenameTable"),se=i((e,t)=>({
|
|
39
|
+
query:e.table(t).drop().existing().cascade().build()}),"prepareDeleteTable");var N=require("@ez4/schema"),y=require("@ez4/database");var _=require("@ez4/utils");var C=i((e,t)=>`${O(e,t)}_pk`,"getPrimaryKeyName"),R=i((e,t)=>`${O(e,t)}_uk`,"ge\
|
|
40
|
+
tUniqueKeyName"),I=i((e,t)=>`${O(e,t)}_sk`,"getSecondaryKeyName"),x=i((e,t)=>`${O(
|
|
41
|
+
e,t)}_fk`,"getRelationName");var O=i((e,t)=>`${e}_${(0,_.toSnakeCase)(t.replaceAll(":","_"))}`,"getName");var ae=i((e,t,r,n,o)=>{let a={constraints:[],indexes:[]};for(let s in n){let{columns:m,
|
|
42
|
+
type:u}=n[s];switch(u){default:throw new Error("Unsupported index type.");case y.Index.
|
|
43
|
+
Primary:{let c=C(t,s),l=e.table(t).alter().existing().constraint(c).primary(m);a.
|
|
44
|
+
constraints.push({check:f(e,c),query:l.build()});break}case y.Index.Unique:{let c=R(
|
|
45
|
+
t,s),l=e.table(t).alter().existing().constraint(c).unique(m);a.constraints.push(
|
|
46
|
+
{check:f(e,c),query:l.build()});break}case y.Index.Secondary:{let c=I(t,s),l=ue(
|
|
47
|
+
m,r),g=e.index(c).create(t,m).type(l).missing();o&&g.concurrent(),a.indexes.push(
|
|
48
|
+
{query:g.build()});break}}}return a},"prepareCreateIndexes"),ce=i((e,t,r,n)=>{let o={
|
|
49
|
+
constraints:[],indexes:[]};for(let a in n){let{type:s}=n[a];switch(s){default:throw new Error(
|
|
50
|
+
"Unsupported index type.");case y.Index.Primary:{let m=C(t,a),u=C(r,a),c=e.table(
|
|
51
|
+
r).alter().existing().constraint(m).rename(u);o.constraints.push({check:f(e,u),query:c.
|
|
52
|
+
build()});break}case y.Index.Unique:{let m=R(t,a),u=R(r,a),c=e.table(r).alter().
|
|
53
|
+
existing().constraint(m).rename(u);o.constraints.push({check:f(e,u),query:c.build()});
|
|
54
|
+
break}case y.Index.Secondary:{let m=I(t,a),u=I(r,a),c=e.index(m).rename(u).existing();
|
|
55
|
+
o.indexes.push({query:c.build()});break}}}return o},"prepareRenameIndexes"),me=i(
|
|
56
|
+
(e,t,r)=>{let n={constraints:[],indexes:[]};for(let o in r){let{type:a}=r[o];switch(a){default:
|
|
57
|
+
throw new Error("Unsupported index type.");case y.Index.Primary:{let s=C(t,o),m=e.
|
|
58
|
+
table(t).alter().existing().constraint(s).drop().existing();n.constraints.push({
|
|
59
|
+
query:m.build()});break}case y.Index.Unique:{let s=R(t,o),m=e.table(t).alter().existing().
|
|
60
|
+
constraint(s).drop().existing();n.constraints.push({query:m.build()});break}case y.Index.
|
|
61
|
+
Secondary:{let s=I(t,o),m=e.index(s).drop().existing().concurrent();n.indexes.push(
|
|
62
|
+
{query:m.build()});break}}}return n},"prepareDeleteIndexes"),ue=i((e,t)=>{if(e.length===
|
|
63
|
+
1){let[r]=e;switch(t.properties[r]?.type){case N.SchemaType.Object:case N.SchemaType.
|
|
64
|
+
Union:case N.SchemaType.Array:case N.SchemaType.Tuple:return"GIN"}}return"BTREE"},
|
|
65
|
+
"getIndexType");var $=require("@ez4/pgclient/library"),U=require("@ez4/schema"),P=require("@ez4/database");var pe=i((e,t,r,n)=>{let o=[];for(let a in n){let s=n[a];if(s.targetIndex===P.Index.
|
|
66
|
+
Primary)continue;let{[s.targetColumn]:m}=r.properties,u=x(t,a),c=!!(0,U.IsNullishSchema)(
|
|
67
|
+
m);o.push({check:f(e,u),query:F(e,t,u,s,c).build()})}return o},"prepareCreateRel\
|
|
68
|
+
ations"),le=i((e,t,r,n)=>{let o=[];for(let a in r){let s=r[a];if(s.targetIndex===
|
|
69
|
+
P.Index.Primary)continue;let m=n[s.targetColumn]?.update,u=m?.optional??m?.nullable;
|
|
70
|
+
if(u===void 0)continue;let c=x(t,a);o.push({query:K(e,t,c).build()},{query:F(e,t,
|
|
71
|
+
c,s,u).build()})}return o},"prepareUpdateRelations"),ye=i((e,t,r,n)=>{let o=[];for(let a in n){
|
|
72
|
+
if(n[a].targetIndex===P.Index.Primary)continue;let m=x(t,a),u=x(r,a),c=e.table(r).
|
|
73
|
+
alter().existing().constraint(m).rename(u);o.push({check:f(e,u),query:c.build()})}
|
|
74
|
+
return o},"prepareRenameRelations"),ge=i((e,t,r)=>{let n=[];for(let o in r){if(r[o].
|
|
75
|
+
targetIndex===P.Index.Primary)continue;let s=x(t,o);n.push({query:K(e,t,s).build()})}
|
|
76
|
+
return n},"prepareDeleteRelations"),K=i((e,t,r)=>e.table(t).alter().existing().constraint(
|
|
77
|
+
r).drop().existing(),"getDeleteRelationQuery"),F=i((e,t,r,n,o)=>{let{sourceAlias:a,
|
|
78
|
+
sourceColumn:s,targetColumn:m}=n,u=(0,$.getTableName)(a),c=e.table(t).alter().existing().
|
|
79
|
+
constraint(r).foreign(m,u,[s]);return o?c.delete().null():c.delete().cascade(),c.
|
|
80
|
+
update().cascade(),c},"getCreateRelationQuery");var j=require("@ez4/database");var de=i((e,t,r,n)=>{let o=e.table(t).alter().existing();for(let a in n){let s=n[a],
|
|
81
|
+
u=r[a]?.type===j.Index.Primary,c=!h(s),l=b(s,u),g=q(s,u);o.add(a,l,c,g).missing()}
|
|
82
|
+
return{query:o.build()}},"prepareCreateColumns"),fe=i((e,t,r,n,o)=>{let a=[];for(let s in o){
|
|
83
|
+
let{update:m,nested:u}=o[s],c=r.properties[s],g=n[s]?.type===j.Index.Primary,L=u?.
|
|
84
|
+
definitions?.update?.default,w=m?.optional??m?.nullable,M=m?.type,S=e.table(t).alter().
|
|
85
|
+
existing().column(s);M!==void 0&&S.type(b(c,g)),w!==void 0&&S.optional(w),L!==void 0&&
|
|
86
|
+
S.default(q(c,g)),!S.empty&&a.push({check:B(e,t,s),query:S.build()})}return a},"\
|
|
87
|
+
prepareUpdateColumns"),xe=i((e,t,r)=>{let n=[];for(let o in r){let a=r[o],s=e.table(
|
|
88
|
+
t).alter().existing().rename(o,a);n.push({check:B(e,t,o),query:s.build()})}return n},
|
|
89
|
+
"prepareRenameColumns"),Se=i((e,t,r)=>{let n=e.table(t).alter().existing();for(let o in r)
|
|
90
|
+
n.drop(o).existing();return{query:n.build()}},"prepareDeleteColumns");0&&(module.exports={getTableRepositoryChanges,prepareCreateColumns,prepareCreateDatabase,
|
|
91
|
+
prepareCreateIndexes,prepareCreateRelations,prepareCreateTable,prepareDeleteColumns,
|
|
92
|
+
prepareDeleteDatabase,prepareDeleteIndexes,prepareDeleteRelations,prepareDeleteTable,
|
|
93
|
+
prepareRenameColumns,prepareRenameIndexes,prepareRenameRelations,prepareRenameTable,
|
|
94
|
+
prepareUpdateColumns,prepareUpdateRelations});
|
|
95
|
+
//# sourceMappingURL=library.cjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export * from './utils/repository.js';
|
|
2
|
+
export * from './types/query.js';
|
|
3
|
+
export * from './common/database.js';
|
|
4
|
+
export * from './common/tables.js';
|
|
5
|
+
export * from './common/indexes.js';
|
|
6
|
+
export * from './common/relations.js';
|
|
7
|
+
export * from './common/columns.js';
|
package/dist/library.mjs
ADDED
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
var $=Object.defineProperty;var o=(e,t)=>$(e,"name",{value:t,configurable:!0});import{deepEqual as j,deepCompareObject as U,isAnyObject as A}from"@ez4/utils";import{
|
|
2
|
+
isRepositoryTable as T}from"@ez4/pgclient/library";import{isAnySchema as B}from"@ez4/schema";var ce=o((e,t)=>U(e,t,{onRename:o((r,n)=>!A(r)||!A(n)?!1:T(r)&&T(n)?K(r.schema,n.
|
|
3
|
+
schema):B(r)&&B(n)?F(r,n):!1,"onRename")}),"getTableRepositoryChanges"),K=o((e,t)=>j(
|
|
4
|
+
Object.keys(e.properties),Object.keys(t.properties)),"canRenameTable"),F=o((e,t)=>j(
|
|
5
|
+
e,t,{depth:1,include:{type:!0,definitions:!0,nullable:!0,format:!0}}),"canRename\
|
|
6
|
+
Column");import{SqlBuilder as L}from"@ez4/pgsql";var w=o((e,t)=>{let[r]=e.select().rawColumn("1").from("pg_database").where({datname:e.
|
|
7
|
+
rawString(t)}).build();return r},"getCheckDatabaseQuery"),d=o((e,t)=>{let[r]=e.select().
|
|
8
|
+
rawColumn("1").from("pg_constraint").where({conname:e.rawString(t)}).build();return r},
|
|
9
|
+
"getCheckConstraintQuery"),k=o((e,t,r)=>{let[n]=e.select().rawColumn("1").from("\
|
|
10
|
+
information_schema.columns").where({column_name:e.rawString(r),table_name:e.rawString(
|
|
11
|
+
t)}).build();return n},"getCheckColumnQuery");var de=o(e=>{let t=new L;return{check:w(t,e),query:`CREATE DATABASE "${e}"`}},"p\
|
|
12
|
+
repareCreateDatabase"),fe=o(e=>({query:`DROP DATABASE IF EXISTS "${e}" WITH (FOR\
|
|
13
|
+
CE)`}),"prepareDeleteDatabase");import{Index as Z}from"@ez4/database";import{isArraySchema as M,isEnumSchema as V,isObjectSchema as v,isScalarSchema as G,
|
|
14
|
+
isStringSchema as H,isTupleSchema as J,SchemaType as y}from"@ez4/schema";import{
|
|
15
|
+
isAnyNumber as W}from"@ez4/utils";var S=o(e=>!!(e.nullable||e.optional),"isOptionalColumn"),h=o((e,t)=>{if(G(e)||v(
|
|
16
|
+
e)||M(e)||J(e)){let{definitions:r}=e;switch(typeof r?.default){case"boolean":case"\
|
|
17
|
+
number":return`${r.default}`;case"string":return`'${r.default}'`;case"object":return`\
|
|
18
|
+
'${JSON.stringify(r.default)}'`}}if(V(e)){let{definitions:r}=e;if(r?.default)return`\
|
|
19
|
+
'${r.default}'`}if(H(e)&&t)switch(e.format){case"date-time":case"date":case"time":
|
|
20
|
+
return"now()";case"uuid":return"gen_random_uuid()"}if(S(e))return"null"},"getCol\
|
|
21
|
+
umnDefault"),q=o((e,t)=>{switch(e.type){case y.Array:case y.Object:case y.Reference:case y.
|
|
22
|
+
Union:case y.Tuple:return"jsonb";case y.Boolean:return"boolean";case y.Enum:return"\
|
|
23
|
+
text";case y.Number:return X(e,t);case y.String:return Y(e)}},"getColumnType"),X=o(
|
|
24
|
+
(e,t)=>e.format==="integer"?t?"bigserial":"bigint":"decimal","getColumNumberType"),
|
|
25
|
+
Y=o(e=>{switch(e.format){case"uuid":case"time":case"date":return e.format;case"d\
|
|
26
|
+
ate-time":return"timestamptz";default:let t=e.definitions?.maxLength;return W(t)?
|
|
27
|
+
`varchar(${t})`:"text"}},"getColumnTextType");var Ne=o((e,t,r,n)=>{let s=e.table(t).create().missing();for(let a in r.properties){
|
|
28
|
+
let i=r.properties[a],u=n[a]?.type===Z.Primary,c=!S(i),p=q(i,u),l=h(i,u);s.column(
|
|
29
|
+
a,p,c,l).missing()}return{query:s.build()}},"prepareCreateTable"),Pe=o((e,t,r)=>({
|
|
30
|
+
query:e.table(t).rename(r).existing().build()}),"prepareRenameTable"),ke=o((e,t)=>({
|
|
31
|
+
query:e.table(t).drop().existing().cascade().build()}),"prepareDeleteTable");import{SchemaType as N}from"@ez4/schema";import{Index as g}from"@ez4/database";import{toSnakeCase as ee}from"@ez4/utils";var b=o((e,t)=>`${I(e,t)}_pk`,"getPrimaryKeyName"),C=o((e,t)=>`${I(e,t)}_uk`,"ge\
|
|
32
|
+
tUniqueKeyName"),R=o((e,t)=>`${I(e,t)}_sk`,"getSecondaryKeyName"),f=o((e,t)=>`${I(
|
|
33
|
+
e,t)}_fk`,"getRelationName");var I=o((e,t)=>`${e}_${ee(t.replaceAll(":","_"))}`,"getName");var Ee=o((e,t,r,n,s)=>{let a={constraints:[],indexes:[]};for(let i in n){let{columns:m,
|
|
34
|
+
type:u}=n[i];switch(u){default:throw new Error("Unsupported index type.");case g.
|
|
35
|
+
Primary:{let c=b(t,i),p=e.table(t).alter().existing().constraint(c).primary(m);a.
|
|
36
|
+
constraints.push({check:d(e,c),query:p.build()});break}case g.Unique:{let c=C(t,
|
|
37
|
+
i),p=e.table(t).alter().existing().constraint(c).unique(m);a.constraints.push({check:d(
|
|
38
|
+
e,c),query:p.build()});break}case g.Secondary:{let c=R(t,i),p=te(m,r),l=e.index(
|
|
39
|
+
c).create(t,m).type(p).missing();s&&l.concurrent(),a.indexes.push({query:l.build()});
|
|
40
|
+
break}}}return a},"prepareCreateIndexes"),_e=o((e,t,r,n)=>{let s={constraints:[],
|
|
41
|
+
indexes:[]};for(let a in n){let{type:i}=n[a];switch(i){default:throw new Error("\
|
|
42
|
+
Unsupported index type.");case g.Primary:{let m=b(t,a),u=b(r,a),c=e.table(r).alter().
|
|
43
|
+
existing().constraint(m).rename(u);s.constraints.push({check:d(e,u),query:c.build()});
|
|
44
|
+
break}case g.Unique:{let m=C(t,a),u=C(r,a),c=e.table(r).alter().existing().constraint(
|
|
45
|
+
m).rename(u);s.constraints.push({check:d(e,u),query:c.build()});break}case g.Secondary:{
|
|
46
|
+
let m=R(t,a),u=R(r,a),c=e.index(m).rename(u).existing();s.indexes.push({query:c.
|
|
47
|
+
build()});break}}}return s},"prepareRenameIndexes"),$e=o((e,t,r)=>{let n={constraints:[],
|
|
48
|
+
indexes:[]};for(let s in r){let{type:a}=r[s];switch(a){default:throw new Error("\
|
|
49
|
+
Unsupported index type.");case g.Primary:{let i=b(t,s),m=e.table(t).alter().existing().
|
|
50
|
+
constraint(i).drop().existing();n.constraints.push({query:m.build()});break}case g.
|
|
51
|
+
Unique:{let i=C(t,s),m=e.table(t).alter().existing().constraint(i).drop().existing();
|
|
52
|
+
n.constraints.push({query:m.build()});break}case g.Secondary:{let i=R(t,s),m=e.index(
|
|
53
|
+
i).drop().existing().concurrent();n.indexes.push({query:m.build()});break}}}return n},
|
|
54
|
+
"prepareDeleteIndexes"),te=o((e,t)=>{if(e.length===1){let[r]=e;switch(t.properties[r]?.
|
|
55
|
+
type){case N.Object:case N.Union:case N.Array:case N.Tuple:return"GIN"}}return"B\
|
|
56
|
+
TREE"},"getIndexType");import{getTableName as re}from"@ez4/pgclient/library";import{IsNullishSchema as ne}from"@ez4/schema";
|
|
57
|
+
import{Index as P}from"@ez4/database";var Ge=o((e,t,r,n)=>{let s=[];for(let a in n){let i=n[a];if(i.targetIndex===P.Primary)
|
|
58
|
+
continue;let{[i.targetColumn]:m}=r.properties,u=f(t,a),c=!!ne(m);s.push({check:d(
|
|
59
|
+
e,u),query:D(e,t,u,i,c).build()})}return s},"prepareCreateRelations"),He=o((e,t,r,n)=>{
|
|
60
|
+
let s=[];for(let a in r){let i=r[a];if(i.targetIndex===P.Primary)continue;let m=n[i.
|
|
61
|
+
targetColumn]?.update,u=m?.optional??m?.nullable;if(u===void 0)continue;let c=f(
|
|
62
|
+
t,a);s.push({query:z(e,t,c).build()},{query:D(e,t,c,i,u).build()})}return s},"pr\
|
|
63
|
+
epareUpdateRelations"),Je=o((e,t,r,n)=>{let s=[];for(let a in n){if(n[a].targetIndex===
|
|
64
|
+
P.Primary)continue;let m=f(t,a),u=f(r,a),c=e.table(r).alter().existing().constraint(
|
|
65
|
+
m).rename(u);s.push({check:d(e,u),query:c.build()})}return s},"prepareRenameRela\
|
|
66
|
+
tions"),We=o((e,t,r)=>{let n=[];for(let s in r){if(r[s].targetIndex===P.Primary)
|
|
67
|
+
continue;let i=f(t,s);n.push({query:z(e,t,i).build()})}return n},"prepareDeleteR\
|
|
68
|
+
elations"),z=o((e,t,r)=>e.table(t).alter().existing().constraint(r).drop().existing(),
|
|
69
|
+
"getDeleteRelationQuery"),D=o((e,t,r,n,s)=>{let{sourceAlias:a,sourceColumn:i,targetColumn:m}=n,
|
|
70
|
+
u=re(a),c=e.table(t).alter().existing().constraint(r).foreign(m,u,[i]);return s?
|
|
71
|
+
c.delete().null():c.delete().cascade(),c.update().cascade(),c},"getCreateRelatio\
|
|
72
|
+
nQuery");import{Index as Q}from"@ez4/database";var rt=o((e,t,r,n)=>{let s=e.table(t).alter().existing();for(let a in n){let i=n[a],
|
|
73
|
+
u=r[a]?.type===Q.Primary,c=!S(i),p=q(i,u),l=h(i,u);s.add(a,p,c,l).missing()}return{
|
|
74
|
+
query:s.build()}},"prepareCreateColumns"),nt=o((e,t,r,n,s)=>{let a=[];for(let i in s){
|
|
75
|
+
let{update:m,nested:u}=s[i],c=r.properties[i],l=n[i]?.type===Q.Primary,E=u?.definitions?.
|
|
76
|
+
update?.default,O=m?.optional??m?.nullable,_=m?.type,x=e.table(t).alter().existing().
|
|
77
|
+
column(i);_!==void 0&&x.type(q(c,l)),O!==void 0&&x.optional(O),E!==void 0&&x.default(
|
|
78
|
+
h(c,l)),!x.empty&&a.push({check:k(e,t,i),query:x.build()})}return a},"prepareUpd\
|
|
79
|
+
ateColumns"),ot=o((e,t,r)=>{let n=[];for(let s in r){let a=r[s],i=e.table(t).alter().
|
|
80
|
+
existing().rename(s,a);n.push({check:k(e,t,s),query:i.build()})}return n},"prepa\
|
|
81
|
+
reRenameColumns"),it=o((e,t,r)=>{let n=e.table(t).alter().existing();for(let s in r)
|
|
82
|
+
n.drop(s).existing();return{query:n.build()}},"prepareDeleteColumns");export{ce as getTableRepositoryChanges,rt as prepareCreateColumns,de as prepareCreateDatabase,
|
|
83
|
+
Ee as prepareCreateIndexes,Ge as prepareCreateRelations,Ne as prepareCreateTable,
|
|
84
|
+
it as prepareDeleteColumns,fe as prepareDeleteDatabase,$e as prepareDeleteIndexes,
|
|
85
|
+
We as prepareDeleteRelations,ke as prepareDeleteTable,ot as prepareRenameColumns,
|
|
86
|
+
_e as prepareRenameIndexes,Je as prepareRenameRelations,Pe as prepareRenameTable,
|
|
87
|
+
nt as prepareUpdateColumns,He as prepareUpdateRelations};
|
|
88
|
+
//# sourceMappingURL=library.mjs.map
|
package/dist/main.cjs
ADDED
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"use strict";var Q=Object.defineProperty;var he=Object.getOwnPropertyDescriptor;var xe=Object.getOwnPropertyNames;var Se=Object.prototype.hasOwnProperty;var a=(e,t)=>Q(e,"name",{value:t,configurable:!0});var be=(e,t)=>{for(var n in t)Q(e,n,{get:t[n],enumerable:!0})},qe=(e,t,n,s)=>{if(t&&
|
|
2
|
+
typeof t=="object"||typeof t=="function")for(let r of xe(t))!Se.call(e,r)&&r!==n&&
|
|
3
|
+
Q(e,r,{get:()=>t[r],enumerable:!(s=he(t,r))||s.enumerable});return e};var Ce=e=>qe(Q({},"__esModule",{value:!0}),e);var je={};be(je,{getCreateQueries:()=>ye,getDeleteQueries:()=>fe,getUpdateQueries:()=>ke});
|
|
4
|
+
module.exports=Ce(je);var z=require("@ez4/pgsql");var G=require("@ez4/database");var l=require("@ez4/schema"),V=require("@ez4/utils");var P=a(e=>!!(e.nullable||e.optional),"isOptionalColumn"),N=a((e,t)=>{if((0,l.isScalarSchema)(
|
|
5
|
+
e)||(0,l.isObjectSchema)(e)||(0,l.isArraySchema)(e)||(0,l.isTupleSchema)(e)){let{
|
|
6
|
+
definitions:n}=e;switch(typeof n?.default){case"boolean":case"number":return`${n.
|
|
7
|
+
default}`;case"string":return`'${n.default}'`;case"object":return`'${JSON.stringify(
|
|
8
|
+
n.default)}'`}}if((0,l.isEnumSchema)(e)){let{definitions:n}=e;if(n?.default)return`\
|
|
9
|
+
'${n.default}'`}if((0,l.isStringSchema)(e)&&t)switch(e.format){case"date-time":case"\
|
|
10
|
+
date":case"time":return"now()";case"uuid":return"gen_random_uuid()"}if(P(e))return"\
|
|
11
|
+
null"},"getColumnDefault"),I=a((e,t)=>{switch(e.type){case l.SchemaType.Array:case l.SchemaType.
|
|
12
|
+
Object:case l.SchemaType.Reference:case l.SchemaType.Union:case l.SchemaType.Tuple:
|
|
13
|
+
return"jsonb";case l.SchemaType.Boolean:return"boolean";case l.SchemaType.Enum:return"\
|
|
14
|
+
text";case l.SchemaType.Number:return Re(e,t);case l.SchemaType.String:return Pe(
|
|
15
|
+
e)}},"getColumnType"),Re=a((e,t)=>e.format==="integer"?t?"bigserial":"bigint":"d\
|
|
16
|
+
ecimal","getColumNumberType"),Pe=a(e=>{switch(e.format){case"uuid":case"time":case"\
|
|
17
|
+
date":return e.format;case"date-time":return"timestamptz";default:let t=e.definitions?.
|
|
18
|
+
maxLength;return(0,V.isAnyNumber)(t)?`varchar(${t})`:"text"}},"getColumnTextType");var J=a((e,t,n,s)=>{let r=e.table(t).create().missing();for(let o in n.properties){
|
|
19
|
+
let i=n.properties[o],p=s[o]?.type===G.Index.Primary,c=!P(i),u=I(i,p),g=N(i,p);r.
|
|
20
|
+
column(o,u,c,g).missing()}return{query:r.build()}},"prepareCreateTable"),F=a((e,t,n)=>({
|
|
21
|
+
query:e.table(t).rename(n).existing().build()}),"prepareRenameTable"),H=a((e,t)=>({
|
|
22
|
+
query:e.table(t).drop().existing().cascade().build()}),"prepareDeleteTable");var U=require("@ez4/database");var d=a((e,t)=>{let[n]=e.select().rawColumn("1").from("pg_constraint").where({conname:e.
|
|
23
|
+
rawString(t)}).build();return n},"getCheckConstraintQuery"),D=a((e,t,n)=>{let[s]=e.
|
|
24
|
+
select().rawColumn("1").from("information_schema.columns").where({column_name:e.
|
|
25
|
+
rawString(n),table_name:e.rawString(t)}).build();return s},"getCheckColumnQuery");var W=a((e,t,n,s)=>{let r=e.table(t).alter().existing();for(let o in s){let i=s[o],
|
|
26
|
+
p=n[o]?.type===U.Index.Primary,c=!P(i),u=I(i,p),g=N(i,p);r.add(o,u,c,g).missing()}
|
|
27
|
+
return{query:r.build()}},"prepareCreateColumns"),X=a((e,t,n,s,r)=>{let o=[];for(let i in r){
|
|
28
|
+
let{update:m,nested:p}=r[i],c=n.properties[i],g=s[i]?.type===U.Index.Primary,b=p?.
|
|
29
|
+
definitions?.update?.default,A=m?.optional??m?.nullable,S=m?.type,R=e.table(t).alter().
|
|
30
|
+
existing().column(i);S!==void 0&&R.type(I(c,g)),A!==void 0&&R.optional(A),b!==void 0&&
|
|
31
|
+
R.default(N(c,g)),!R.empty&&o.push({check:D(e,t,i),query:R.build()})}return o},"\
|
|
32
|
+
prepareUpdateColumns"),Y=a((e,t,n)=>{let s=[];for(let r in n){let o=n[r],i=e.table(
|
|
33
|
+
t).alter().existing().rename(r,o);s.push({check:D(e,t,r),query:i.build()})}return s},
|
|
34
|
+
"prepareRenameColumns"),Z=a((e,t,n)=>{let s=e.table(t).alter().existing();for(let r in n)
|
|
35
|
+
s.drop(r).existing();return{query:s.build()}},"prepareDeleteColumns");var h=require("@ez4/schema");var ee=require("@ez4/utils");var O=a((e,t)=>`${T(e,t)}_pk`,"getPrimaryKeyName"),k=a((e,t)=>`${T(e,t)}_uk`,"ge\
|
|
36
|
+
tUniqueKeyName"),j=a((e,t)=>`${T(e,t)}_sk`,"getSecondaryKeyName"),q=a((e,t)=>`${T(
|
|
37
|
+
e,t)}_fk`,"getRelationName"),y=a((e,t)=>`${T(e,t)}_ck`,"getConstraintName"),T=a(
|
|
38
|
+
(e,t)=>`${e}_${(0,ee.toSnakeCase)(t.replaceAll(":","_"))}`,"getName");var v=a((e,t,n)=>{let s=[];for(let r in n){let o=n[r];if(!(0,h.isEnumSchema)(o))
|
|
39
|
+
continue;let i=y(t,r);s.push({check:d(e,i),query:$(e,t,i,r,o.options).build()})}
|
|
40
|
+
return s},"prepareCreateConstraints"),te=a((e,t,n,s,r)=>{let o=[];for(let i in r){
|
|
41
|
+
let{update:m,create:p,remove:c}=r[i];if(c){let u=s.properties[i];if((0,h.isEnumSchema)(
|
|
42
|
+
u)){let g=y(t,i);o.push({query:_(e,t,g).build()})}}if(m){let u=s.properties[i],g=n.
|
|
43
|
+
properties[i];if((0,h.isEnumSchema)(u)&&(0,h.isEnumSchema)(g)){let b=y(t,i);o.push(
|
|
44
|
+
{query:_(e,t,b).build()},{query:$(e,t,b,i,g.options).build()})}}if(p){let u=n.properties[i];
|
|
45
|
+
if((0,h.isEnumSchema)(u)){let g=y(t,i);o.push({check:d(e,g),query:$(e,t,g,i,u.options).
|
|
46
|
+
build()})}}}return o},"prepareUpdateConstraints"),ne=a((e,t,n,s)=>{let r=[];for(let o in s){
|
|
47
|
+
let i=s[o];if(!(0,h.isEnumSchema)(i))continue;let m=y(t,o),p=y(n,o),c=e.table(n).
|
|
48
|
+
alter().existing().constraint(m).rename(p);r.push({check:d(e,p),query:c.build()})}
|
|
49
|
+
return r},"prepareRenameConstraints"),re=a((e,t,n,s)=>{let r=[];for(let o in s){
|
|
50
|
+
let i=s[o],m=n[i];if(!(0,h.isEnumSchema)(m))continue;let p=y(t,o),c=y(t,i),u=e.table(
|
|
51
|
+
t).alter().existing().constraint(p).rename(c);r.push({check:d(e,c),query:u.build()})}
|
|
52
|
+
return r},"prepareRenameConstraintColumns"),oe=a((e,t,n)=>{let s=[];for(let r in n){
|
|
53
|
+
let o=n[r];if(!(0,h.isEnumSchema)(o))continue;let i=y(t,r);s.push({query:_(e,t,i).
|
|
54
|
+
build()})}return s},"prepareDeleteConstraints"),_=a((e,t,n)=>e.table(t).alter().
|
|
55
|
+
existing().constraint(n).drop().existing(),"getDeleteConstraintQuery"),$=a((e,t,n,s,r)=>{
|
|
56
|
+
let o=r.map(({value:i})=>`${i}`);return e.table(t).alter().existing().constraint(
|
|
57
|
+
n).check({[s]:{isIn:o}})},"getCreateConstraintQuery");var se=require("@ez4/pgclient/library"),ie=require("@ez4/schema"),B=require("@ez4/database");var E=a((e,t,n,s)=>{let r=[];for(let o in s){let i=s[o];if(i.targetIndex===B.Index.
|
|
58
|
+
Primary)continue;let{[i.targetColumn]:m}=n.properties,p=q(t,o),c=!!(0,ie.IsNullishSchema)(
|
|
59
|
+
m);r.push({check:d(e,p),query:ue(e,t,p,i,c).build()})}return r},"prepareCreateRe\
|
|
60
|
+
lations"),ae=a((e,t,n,s)=>{let r=[];for(let o in n){let i=n[o];if(i.targetIndex===
|
|
61
|
+
B.Index.Primary)continue;let m=s[i.targetColumn]?.update,p=m?.optional??m?.nullable;
|
|
62
|
+
if(p===void 0)continue;let c=q(t,o);r.push({query:pe(e,t,c).build()},{query:ue(e,
|
|
63
|
+
t,c,i,p).build()})}return r},"prepareUpdateRelations"),ce=a((e,t,n,s)=>{let r=[];
|
|
64
|
+
for(let o in s){if(s[o].targetIndex===B.Index.Primary)continue;let m=q(t,o),p=q(
|
|
65
|
+
n,o),c=e.table(n).alter().existing().constraint(m).rename(p);r.push({check:d(e,p),
|
|
66
|
+
query:c.build()})}return r},"prepareRenameRelations"),me=a((e,t,n)=>{let s=[];for(let r in n){
|
|
67
|
+
if(n[r].targetIndex===B.Index.Primary)continue;let i=q(t,r);s.push({query:pe(e,t,
|
|
68
|
+
i).build()})}return s},"prepareDeleteRelations"),pe=a((e,t,n)=>e.table(t).alter().
|
|
69
|
+
existing().constraint(n).drop().existing(),"getDeleteRelationQuery"),ue=a((e,t,n,s,r)=>{
|
|
70
|
+
let{sourceAlias:o,sourceColumn:i,targetColumn:m}=s,p=(0,se.getTableName)(o),c=e.
|
|
71
|
+
table(t).alter().existing().constraint(n).foreign(m,p,[i]);return r?c.delete().null():
|
|
72
|
+
c.delete().cascade(),c.update().cascade(),c},"getCreateRelationQuery");var w=require("@ez4/schema"),f=require("@ez4/database");var M=a((e,t,n,s,r)=>{let o={constraints:[],indexes:[]};for(let i in s){let{columns:m,
|
|
73
|
+
type:p}=s[i];switch(p){default:throw new Error("Unsupported index type.");case f.Index.
|
|
74
|
+
Primary:{let c=O(t,i),u=e.table(t).alter().existing().constraint(c).primary(m);o.
|
|
75
|
+
constraints.push({check:d(e,c),query:u.build()});break}case f.Index.Unique:{let c=k(
|
|
76
|
+
t,i),u=e.table(t).alter().existing().constraint(c).unique(m);o.constraints.push(
|
|
77
|
+
{check:d(e,c),query:u.build()});break}case f.Index.Secondary:{let c=j(t,i),u=Ne(
|
|
78
|
+
m,n),g=e.index(c).create(t,m).type(u).missing();r&&g.concurrent(),o.indexes.push(
|
|
79
|
+
{query:g.build()});break}}}return o},"prepareCreateIndexes"),le=a((e,t,n,s)=>{let r={
|
|
80
|
+
constraints:[],indexes:[]};for(let o in s){let{type:i}=s[o];switch(i){default:throw new Error(
|
|
81
|
+
"Unsupported index type.");case f.Index.Primary:{let m=O(t,o),p=O(n,o),c=e.table(
|
|
82
|
+
n).alter().existing().constraint(m).rename(p);r.constraints.push({check:d(e,p),query:c.
|
|
83
|
+
build()});break}case f.Index.Unique:{let m=k(t,o),p=k(n,o),c=e.table(n).alter().
|
|
84
|
+
existing().constraint(m).rename(p);r.constraints.push({check:d(e,p),query:c.build()});
|
|
85
|
+
break}case f.Index.Secondary:{let m=j(t,o),p=j(n,o),c=e.index(m).rename(p).existing();
|
|
86
|
+
r.indexes.push({query:c.build()});break}}}return r},"prepareRenameIndexes"),ge=a(
|
|
87
|
+
(e,t,n)=>{let s={constraints:[],indexes:[]};for(let r in n){let{type:o}=n[r];switch(o){default:
|
|
88
|
+
throw new Error("Unsupported index type.");case f.Index.Primary:{let i=O(t,r),m=e.
|
|
89
|
+
table(t).alter().existing().constraint(i).drop().existing();s.constraints.push({
|
|
90
|
+
query:m.build()});break}case f.Index.Unique:{let i=k(t,r),m=e.table(t).alter().existing().
|
|
91
|
+
constraint(i).drop().existing();s.constraints.push({query:m.build()});break}case f.Index.
|
|
92
|
+
Secondary:{let i=j(t,r),m=e.index(i).drop().existing().concurrent();s.indexes.push(
|
|
93
|
+
{query:m.build()});break}}}return s},"prepareDeleteIndexes"),Ne=a((e,t)=>{if(e.length===
|
|
94
|
+
1){let[n]=e;switch(t.properties[n]?.type){case w.SchemaType.Object:case w.SchemaType.
|
|
95
|
+
Union:case w.SchemaType.Array:case w.SchemaType.Tuple:return"GIN"}}return"BTREE"},
|
|
96
|
+
"getIndexType");var x=require("@ez4/utils"),K=require("@ez4/pgclient/library"),L=require("@ez4/schema");var de=a((e,t)=>(0,x.deepCompareObject)(e,t,{onRename:a((n,s)=>!(0,x.isAnyObject)(
|
|
97
|
+
n)||!(0,x.isAnyObject)(s)?!1:(0,K.isRepositoryTable)(n)&&(0,K.isRepositoryTable)(
|
|
98
|
+
s)?Ie(n.schema,s.schema):(0,L.isAnySchema)(n)&&(0,L.isAnySchema)(s)?Oe(n,s):!1,"\
|
|
99
|
+
onRename")}),"getTableRepositoryChanges"),Ie=a((e,t)=>(0,x.deepEqual)(Object.keys(
|
|
100
|
+
e.properties),Object.keys(t.properties)),"canRenameTable"),Oe=a((e,t)=>(0,x.deepEqual)(
|
|
101
|
+
e,t,{depth:1,include:{type:!0,definitions:!0,nullable:!0,format:!0}}),"canRename\
|
|
102
|
+
Column");var ye=a(e=>{let t=new z.SqlBuilder,n={tables:[],constraints:[],relations:[],indexes:[]};
|
|
103
|
+
for(let s in e){let{name:r,schema:o,indexes:i,relations:m}=e[s];C(n,M(t,r,o,i,!1)),
|
|
104
|
+
n.tables.push(J(t,r,o,i)),n.constraints.push(...v(t,r,o.properties)),n.relations.
|
|
105
|
+
push(...E(t,r,o,m))}return n},"getCreateQueries"),ke=a((e,t)=>{let n=de(e,t),s=new z.SqlBuilder,
|
|
106
|
+
r={tables:[],constraints:[],relations:[],indexes:[]};if(n.create&&C(r,ye(n.create)),
|
|
107
|
+
n.rename)for(let o in n.rename){let i=n.rename[o],m=e[i].indexes,p=e[i].relations,
|
|
108
|
+
c=e[i].schema;C(r,le(s,o,i,m)),r.constraints.push(...ne(s,o,i,c.properties)),r.relations.
|
|
109
|
+
push(...ce(s,o,i,p)),r.tables.push(F(s,o,i))}if(n.nested)for(let o in n.nested){
|
|
110
|
+
let{nested:i}=n.nested[o];if(!i)continue;let{schema:m,relations:p,indexes:c}=i,u=m?.
|
|
111
|
+
nested?.properties,g=e[o].indexes,b=e[o].relations,A=t[o].schema,S=e[o].schema;u?.
|
|
112
|
+
create&&(r.tables.push(W(s,o,g,u.create)),r.constraints.push(...v(s,o,u.create))),
|
|
113
|
+
u?.nested&&(r.tables.push(...X(s,o,S,g,u.nested)),r.constraints.push(...te(s,o,S,
|
|
114
|
+
A,u.nested)),r.relations.push(...ae(s,o,b,u.nested))),u?.rename&&(r.tables.push(
|
|
115
|
+
...Y(s,o,u.rename)),r.constraints.push(...re(s,o,S.properties,u.rename))),u?.remove&&
|
|
116
|
+
(r.tables.push(Z(s,o,u.remove)),r.constraints.push(...oe(s,o,u.remove))),c?.create&&
|
|
117
|
+
C(r,M(s,o,S,c.create,!0)),c?.remove&&C(r,ge(s,o,c.remove)),p?.create&&r.relations.
|
|
118
|
+
push(...E(s,o,S,p.create)),p?.remove&&r.relations.push(...me(s,o,p.remove))}return n.
|
|
119
|
+
remove&&C(r,fe(n.remove)),r},"getUpdateQueries"),fe=a(e=>{let t=new z.SqlBuilder,
|
|
120
|
+
n={tables:[],constraints:[],relations:[],indexes:[]};for(let s in e){let{name:r}=e[s];
|
|
121
|
+
n.tables.push(H(t,r))}return n},"getDeleteQueries"),C=a((e,t)=>{t.indexes&&e.indexes.
|
|
122
|
+
push(...t.indexes),t.constraints&&e.constraints.push(...t.constraints),t.relations&&
|
|
123
|
+
e.relations.push(...t.relations),t.tables&&e.tables.push(...t.tables)},"combineM\
|
|
124
|
+
igrationQueries");0&&(module.exports={getCreateQueries,getDeleteQueries,getUpdateQueries});
|
|
125
|
+
//# sourceMappingURL=main.cjs.map
|
package/dist/main.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './service/queries.js';
|
package/dist/main.mjs
ADDED
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
var pe=Object.defineProperty;var a=(e,t)=>pe(e,"name",{value:t,configurable:!0});import{SqlBuilder as $}from"@ez4/pgsql";import{Index as be}from"@ez4/database";import{isArraySchema as ue,isEnumSchema as le,isObjectSchema as ge,isScalarSchema as de,
|
|
2
|
+
isStringSchema as ye,isTupleSchema as fe,SchemaType as y}from"@ez4/schema";import{
|
|
3
|
+
isAnyNumber as he}from"@ez4/utils";var R=a(e=>!!(e.nullable||e.optional),"isOptionalColumn"),P=a((e,t)=>{if(de(e)||
|
|
4
|
+
ge(e)||ue(e)||fe(e)){let{definitions:n}=e;switch(typeof n?.default){case"boolean":case"\
|
|
5
|
+
number":return`${n.default}`;case"string":return`'${n.default}'`;case"object":return`\
|
|
6
|
+
'${JSON.stringify(n.default)}'`}}if(le(e)){let{definitions:n}=e;if(n?.default)return`\
|
|
7
|
+
'${n.default}'`}if(ye(e)&&t)switch(e.format){case"date-time":case"date":case"tim\
|
|
8
|
+
e":return"now()";case"uuid":return"gen_random_uuid()"}if(R(e))return"null"},"get\
|
|
9
|
+
ColumnDefault"),N=a((e,t)=>{switch(e.type){case y.Array:case y.Object:case y.Reference:case y.
|
|
10
|
+
Union:case y.Tuple:return"jsonb";case y.Boolean:return"boolean";case y.Enum:return"\
|
|
11
|
+
text";case y.Number:return xe(e,t);case y.String:return Se(e)}},"getColumnType"),
|
|
12
|
+
xe=a((e,t)=>e.format==="integer"?t?"bigserial":"bigint":"decimal","getColumNumbe\
|
|
13
|
+
rType"),Se=a(e=>{switch(e.format){case"uuid":case"time":case"date":return e.format;case"\
|
|
14
|
+
date-time":return"timestamptz";default:let t=e.definitions?.maxLength;return he(
|
|
15
|
+
t)?`varchar(${t})`:"text"}},"getColumnTextType");var v=a((e,t,n,s)=>{let o=e.table(t).create().missing();for(let r in n.properties){
|
|
16
|
+
let i=n.properties[r],p=s[r]?.type===be.Primary,c=!R(i),u=N(i,p),l=P(i,p);o.column(
|
|
17
|
+
r,u,c,l).missing()}return{query:o.build()}},"prepareCreateTable"),E=a((e,t,n)=>({
|
|
18
|
+
query:e.table(t).rename(n).existing().build()}),"prepareRenameTable"),M=a((e,t)=>({
|
|
19
|
+
query:e.table(t).drop().existing().cascade().build()}),"prepareDeleteTable");import{Index as K}from"@ez4/database";var g=a((e,t)=>{let[n]=e.select().rawColumn("1").from("pg_constraint").where({conname:e.
|
|
20
|
+
rawString(t)}).build();return n},"getCheckConstraintQuery"),A=a((e,t,n)=>{let[s]=e.
|
|
21
|
+
select().rawColumn("1").from("information_schema.columns").where({column_name:e.
|
|
22
|
+
rawString(n),table_name:e.rawString(t)}).build();return s},"getCheckColumnQuery");var L=a((e,t,n,s)=>{let o=e.table(t).alter().existing();for(let r in s){let i=s[r],
|
|
23
|
+
p=n[r]?.type===K.Primary,c=!R(i),u=N(i,p),l=P(i,p);o.add(r,u,c,l).missing()}return{
|
|
24
|
+
query:o.build()}},"prepareCreateColumns"),V=a((e,t,n,s,o)=>{let r=[];for(let i in o){
|
|
25
|
+
let{update:m,nested:p}=o[i],c=n.properties[i],l=s[i]?.type===K.Primary,S=p?.definitions?.
|
|
26
|
+
update?.default,T=m?.optional??m?.nullable,x=m?.type,C=e.table(t).alter().existing().
|
|
27
|
+
column(i);x!==void 0&&C.type(N(c,l)),T!==void 0&&C.optional(T),S!==void 0&&C.default(
|
|
28
|
+
P(c,l)),!C.empty&&r.push({check:A(e,t,i),query:C.build()})}return r},"prepareUpd\
|
|
29
|
+
ateColumns"),G=a((e,t,n)=>{let s=[];for(let o in n){let r=n[o],i=e.table(t).alter().
|
|
30
|
+
existing().rename(o,r);s.push({check:A(e,t,o),query:i.build()})}return s},"prepa\
|
|
31
|
+
reRenameColumns"),J=a((e,t,n)=>{let s=e.table(t).alter().existing();for(let o in n)
|
|
32
|
+
s.drop(o).existing();return{query:s.build()}},"prepareDeleteColumns");import{isEnumSchema as h}from"@ez4/schema";import{toSnakeCase as qe}from"@ez4/utils";var I=a((e,t)=>`${j(e,t)}_pk`,"getPrimaryKeyName"),O=a((e,t)=>`${j(e,t)}_uk`,"ge\
|
|
33
|
+
tUniqueKeyName"),k=a((e,t)=>`${j(e,t)}_sk`,"getSecondaryKeyName"),b=a((e,t)=>`${j(
|
|
34
|
+
e,t)}_fk`,"getRelationName"),d=a((e,t)=>`${j(e,t)}_ck`,"getConstraintName"),j=a(
|
|
35
|
+
(e,t)=>`${e}_${qe(t.replaceAll(":","_"))}`,"getName");var D=a((e,t,n)=>{let s=[];for(let o in n){let r=n[o];if(!h(r))continue;let i=d(
|
|
36
|
+
t,o);s.push({check:g(e,i),query:z(e,t,i,o,r.options).build()})}return s},"prepar\
|
|
37
|
+
eCreateConstraints"),F=a((e,t,n,s,o)=>{let r=[];for(let i in o){let{update:m,create:p,
|
|
38
|
+
remove:c}=o[i];if(c){let u=s.properties[i];if(h(u)){let l=d(t,i);r.push({query:Q(
|
|
39
|
+
e,t,l).build()})}}if(m){let u=s.properties[i],l=n.properties[i];if(h(u)&&h(l)){let S=d(
|
|
40
|
+
t,i);r.push({query:Q(e,t,S).build()},{query:z(e,t,S,i,l.options).build()})}}if(p){
|
|
41
|
+
let u=n.properties[i];if(h(u)){let l=d(t,i);r.push({check:g(e,l),query:z(e,t,l,i,
|
|
42
|
+
u.options).build()})}}}return r},"prepareUpdateConstraints"),H=a((e,t,n,s)=>{let o=[];
|
|
43
|
+
for(let r in s){let i=s[r];if(!h(i))continue;let m=d(t,r),p=d(n,r),c=e.table(n).
|
|
44
|
+
alter().existing().constraint(m).rename(p);o.push({check:g(e,p),query:c.build()})}
|
|
45
|
+
return o},"prepareRenameConstraints"),W=a((e,t,n,s)=>{let o=[];for(let r in s){let i=s[r],
|
|
46
|
+
m=n[i];if(!h(m))continue;let p=d(t,r),c=d(t,i),u=e.table(t).alter().existing().constraint(
|
|
47
|
+
p).rename(c);o.push({check:g(e,c),query:u.build()})}return o},"prepareRenameCons\
|
|
48
|
+
traintColumns"),X=a((e,t,n)=>{let s=[];for(let o in n){let r=n[o];if(!h(r))continue;
|
|
49
|
+
let i=d(t,o);s.push({query:Q(e,t,i).build()})}return s},"prepareDeleteConstraint\
|
|
50
|
+
s"),Q=a((e,t,n)=>e.table(t).alter().existing().constraint(n).drop().existing(),"\
|
|
51
|
+
getDeleteConstraintQuery"),z=a((e,t,n,s,o)=>{let r=o.map(({value:i})=>`${i}`);return e.
|
|
52
|
+
table(t).alter().existing().constraint(n).check({[s]:{isIn:r}})},"getCreateConst\
|
|
53
|
+
raintQuery");import{getTableName as Ce}from"@ez4/pgclient/library";import{IsNullishSchema as Re}from"@ez4/schema";
|
|
54
|
+
import{Index as B}from"@ez4/database";var U=a((e,t,n,s)=>{let o=[];for(let r in s){let i=s[r];if(i.targetIndex===B.Primary)
|
|
55
|
+
continue;let{[i.targetColumn]:m}=n.properties,p=b(t,r),c=!!Re(m);o.push({check:g(
|
|
56
|
+
e,p),query:ne(e,t,p,i,c).build()})}return o},"prepareCreateRelations"),Y=a((e,t,n,s)=>{
|
|
57
|
+
let o=[];for(let r in n){let i=n[r];if(i.targetIndex===B.Primary)continue;let m=s[i.
|
|
58
|
+
targetColumn]?.update,p=m?.optional??m?.nullable;if(p===void 0)continue;let c=b(
|
|
59
|
+
t,r);o.push({query:te(e,t,c).build()},{query:ne(e,t,c,i,p).build()})}return o},"\
|
|
60
|
+
prepareUpdateRelations"),Z=a((e,t,n,s)=>{let o=[];for(let r in s){if(s[r].targetIndex===
|
|
61
|
+
B.Primary)continue;let m=b(t,r),p=b(n,r),c=e.table(n).alter().existing().constraint(
|
|
62
|
+
m).rename(p);o.push({check:g(e,p),query:c.build()})}return o},"prepareRenameRela\
|
|
63
|
+
tions"),ee=a((e,t,n)=>{let s=[];for(let o in n){if(n[o].targetIndex===B.Primary)
|
|
64
|
+
continue;let i=b(t,o);s.push({query:te(e,t,i).build()})}return s},"prepareDelete\
|
|
65
|
+
Relations"),te=a((e,t,n)=>e.table(t).alter().existing().constraint(n).drop().existing(),
|
|
66
|
+
"getDeleteRelationQuery"),ne=a((e,t,n,s,o)=>{let{sourceAlias:r,sourceColumn:i,targetColumn:m}=s,
|
|
67
|
+
p=Ce(r),c=e.table(t).alter().existing().constraint(n).foreign(m,p,[i]);return o?
|
|
68
|
+
c.delete().null():c.delete().cascade(),c.update().cascade(),c},"getCreateRelatio\
|
|
69
|
+
nQuery");import{SchemaType as w}from"@ez4/schema";import{Index as f}from"@ez4/database";var _=a((e,t,n,s,o)=>{let r={constraints:[],indexes:[]};for(let i in s){let{columns:m,
|
|
70
|
+
type:p}=s[i];switch(p){default:throw new Error("Unsupported index type.");case f.
|
|
71
|
+
Primary:{let c=I(t,i),u=e.table(t).alter().existing().constraint(c).primary(m);r.
|
|
72
|
+
constraints.push({check:g(e,c),query:u.build()});break}case f.Unique:{let c=O(t,
|
|
73
|
+
i),u=e.table(t).alter().existing().constraint(c).unique(m);r.constraints.push({check:g(
|
|
74
|
+
e,c),query:u.build()});break}case f.Secondary:{let c=k(t,i),u=Pe(m,n),l=e.index(
|
|
75
|
+
c).create(t,m).type(u).missing();o&&l.concurrent(),r.indexes.push({query:l.build()});
|
|
76
|
+
break}}}return r},"prepareCreateIndexes"),re=a((e,t,n,s)=>{let o={constraints:[],
|
|
77
|
+
indexes:[]};for(let r in s){let{type:i}=s[r];switch(i){default:throw new Error("\
|
|
78
|
+
Unsupported index type.");case f.Primary:{let m=I(t,r),p=I(n,r),c=e.table(n).alter().
|
|
79
|
+
existing().constraint(m).rename(p);o.constraints.push({check:g(e,p),query:c.build()});
|
|
80
|
+
break}case f.Unique:{let m=O(t,r),p=O(n,r),c=e.table(n).alter().existing().constraint(
|
|
81
|
+
m).rename(p);o.constraints.push({check:g(e,p),query:c.build()});break}case f.Secondary:{
|
|
82
|
+
let m=k(t,r),p=k(n,r),c=e.index(m).rename(p).existing();o.indexes.push({query:c.
|
|
83
|
+
build()});break}}}return o},"prepareRenameIndexes"),oe=a((e,t,n)=>{let s={constraints:[],
|
|
84
|
+
indexes:[]};for(let o in n){let{type:r}=n[o];switch(r){default:throw new Error("\
|
|
85
|
+
Unsupported index type.");case f.Primary:{let i=I(t,o),m=e.table(t).alter().existing().
|
|
86
|
+
constraint(i).drop().existing();s.constraints.push({query:m.build()});break}case f.
|
|
87
|
+
Unique:{let i=O(t,o),m=e.table(t).alter().existing().constraint(i).drop().existing();
|
|
88
|
+
s.constraints.push({query:m.build()});break}case f.Secondary:{let i=k(t,o),m=e.index(
|
|
89
|
+
i).drop().existing().concurrent();s.indexes.push({query:m.build()});break}}}return s},
|
|
90
|
+
"prepareDeleteIndexes"),Pe=a((e,t)=>{if(e.length===1){let[n]=e;switch(t.properties[n]?.
|
|
91
|
+
type){case w.Object:case w.Union:case w.Array:case w.Tuple:return"GIN"}}return"B\
|
|
92
|
+
TREE"},"getIndexType");import{deepEqual as ce,deepCompareObject as Ne,isAnyObject as se}from"@ez4/utils";
|
|
93
|
+
import{isRepositoryTable as ie}from"@ez4/pgclient/library";import{isAnySchema as ae}from"@ez4/schema";var me=a((e,t)=>Ne(e,t,{onRename:a((n,s)=>!se(n)||!se(s)?!1:ie(n)&&ie(s)?Ie(n.schema,
|
|
94
|
+
s.schema):ae(n)&&ae(s)?Oe(n,s):!1,"onRename")}),"getTableRepositoryChanges"),Ie=a(
|
|
95
|
+
(e,t)=>ce(Object.keys(e.properties),Object.keys(t.properties)),"canRenameTable"),
|
|
96
|
+
Oe=a((e,t)=>ce(e,t,{depth:1,include:{type:!0,definitions:!0,nullable:!0,format:!0}}),
|
|
97
|
+
"canRenameColumn");var ke=a(e=>{let t=new $,n={tables:[],constraints:[],relations:[],indexes:[]};for(let s in e){
|
|
98
|
+
let{name:o,schema:r,indexes:i,relations:m}=e[s];q(n,_(t,o,r,i,!1)),n.tables.push(
|
|
99
|
+
v(t,o,r,i)),n.constraints.push(...D(t,o,r.properties)),n.relations.push(...U(t,o,
|
|
100
|
+
r,m))}return n},"getCreateQueries"),Nt=a((e,t)=>{let n=me(e,t),s=new $,o={tables:[],
|
|
101
|
+
constraints:[],relations:[],indexes:[]};if(n.create&&q(o,ke(n.create)),n.rename)
|
|
102
|
+
for(let r in n.rename){let i=n.rename[r],m=e[i].indexes,p=e[i].relations,c=e[i].
|
|
103
|
+
schema;q(o,re(s,r,i,m)),o.constraints.push(...H(s,r,i,c.properties)),o.relations.
|
|
104
|
+
push(...Z(s,r,i,p)),o.tables.push(E(s,r,i))}if(n.nested)for(let r in n.nested){let{
|
|
105
|
+
nested:i}=n.nested[r];if(!i)continue;let{schema:m,relations:p,indexes:c}=i,u=m?.
|
|
106
|
+
nested?.properties,l=e[r].indexes,S=e[r].relations,T=t[r].schema,x=e[r].schema;u?.
|
|
107
|
+
create&&(o.tables.push(L(s,r,l,u.create)),o.constraints.push(...D(s,r,u.create))),
|
|
108
|
+
u?.nested&&(o.tables.push(...V(s,r,x,l,u.nested)),o.constraints.push(...F(s,r,x,
|
|
109
|
+
T,u.nested)),o.relations.push(...Y(s,r,S,u.nested))),u?.rename&&(o.tables.push(...G(
|
|
110
|
+
s,r,u.rename)),o.constraints.push(...W(s,r,x.properties,u.rename))),u?.remove&&(o.
|
|
111
|
+
tables.push(J(s,r,u.remove)),o.constraints.push(...X(s,r,u.remove))),c?.create&&
|
|
112
|
+
q(o,_(s,r,x,c.create,!0)),c?.remove&&q(o,oe(s,r,c.remove)),p?.create&&o.relations.
|
|
113
|
+
push(...U(s,r,x,p.create)),p?.remove&&o.relations.push(...ee(s,r,p.remove))}return n.
|
|
114
|
+
remove&&q(o,je(n.remove)),o},"getUpdateQueries"),je=a(e=>{let t=new $,n={tables:[],
|
|
115
|
+
constraints:[],relations:[],indexes:[]};for(let s in e){let{name:o}=e[s];n.tables.
|
|
116
|
+
push(M(t,o))}return n},"getDeleteQueries"),q=a((e,t)=>{t.indexes&&e.indexes.push(
|
|
117
|
+
...t.indexes),t.constraints&&e.constraints.push(...t.constraints),t.relations&&e.
|
|
118
|
+
relations.push(...t.relations),t.tables&&e.tables.push(...t.tables)},"combineMig\
|
|
119
|
+
rationQueries");export{ke as getCreateQueries,je as getDeleteQueries,Nt as getUpdateQueries};
|
|
120
|
+
//# sourceMappingURL=main.mjs.map
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { PgTableRepository } from '@ez4/pgclient/library';
|
|
2
|
+
import type { PgMigrationQueries } from '../types/query.js';
|
|
3
|
+
export declare const getCreateQueries: (target: PgTableRepository) => PgMigrationQueries;
|
|
4
|
+
export declare const getUpdateQueries: (target: PgTableRepository, source: PgTableRepository) => PgMigrationQueries;
|
|
5
|
+
export declare const getDeleteQueries: (target: PgTableRepository) => PgMigrationQueries;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export type PgMigrationStatement = {
|
|
2
|
+
check?: string;
|
|
3
|
+
query: string;
|
|
4
|
+
};
|
|
5
|
+
export type PgMigrationQueries = {
|
|
6
|
+
tables: PgMigrationStatement[];
|
|
7
|
+
constraints: PgMigrationStatement[];
|
|
8
|
+
relations: PgMigrationStatement[];
|
|
9
|
+
indexes: PgMigrationStatement[];
|
|
10
|
+
};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { SqlBuilder } from '@ez4/pgsql';
|
|
2
|
+
export declare const getCheckDatabaseQuery: (builder: SqlBuilder, database: string) => string;
|
|
3
|
+
export declare const getCheckConstraintQuery: (builder: SqlBuilder, name: string) => string;
|
|
4
|
+
export declare const getCheckColumnQuery: (builder: SqlBuilder, table: string, column: string) => string;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { AnySchema } from '@ez4/schema';
|
|
2
|
+
export declare const isOptionalColumn: (schema: AnySchema) => boolean;
|
|
3
|
+
export declare const getColumnDefault: (schema: AnySchema, primaryIndex: boolean) => string | undefined;
|
|
4
|
+
export declare const getColumnType: (schema: AnySchema, primaryIndex: boolean) => string;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare const getPrimaryKeyName: (table: string, name: string) => string;
|
|
2
|
+
export declare const getUniqueKeyName: (table: string, name: string) => string;
|
|
3
|
+
export declare const getSecondaryKeyName: (table: string, name: string) => string;
|
|
4
|
+
export declare const getRelationName: (table: string, name: string) => string;
|
|
5
|
+
export declare const getConstraintName: (table: string, name: string) => string;
|
package/package.json
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@ez4/pgmigration",
|
|
3
|
+
"description": "EZ4: A PostgreSQL migration library",
|
|
4
|
+
"version": "0.26.0",
|
|
5
|
+
"author": "Silas B.",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"keywords": [
|
|
9
|
+
"ez4"
|
|
10
|
+
],
|
|
11
|
+
"repository": {
|
|
12
|
+
"type": "git",
|
|
13
|
+
"url": "git+https://github.com/sbalmt/ez4.git",
|
|
14
|
+
"directory": "packages/pgmigration"
|
|
15
|
+
},
|
|
16
|
+
"engines": {
|
|
17
|
+
"node": ">=22.7"
|
|
18
|
+
},
|
|
19
|
+
"exports": {
|
|
20
|
+
".": {
|
|
21
|
+
"types": "./dist/main.d.ts",
|
|
22
|
+
"require": "./dist/main.cjs",
|
|
23
|
+
"import": "./dist/main.mjs"
|
|
24
|
+
},
|
|
25
|
+
"./library": {
|
|
26
|
+
"types": "./dist/library.d.ts",
|
|
27
|
+
"require": "./dist/library.cjs",
|
|
28
|
+
"import": "./dist/library.mjs"
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
"workspaces": [
|
|
32
|
+
"packages/*"
|
|
33
|
+
],
|
|
34
|
+
"scripts": {
|
|
35
|
+
"lint": "eslint --cache",
|
|
36
|
+
"clean": "rm -f *.tsbuildinfo && rm -rf dist/*",
|
|
37
|
+
"build": "tsc -p tsconfig.json && node tools/bundler.mjs",
|
|
38
|
+
"test": "npm run test:types && node --test --import ../../tools/tsnode.mjs test/*.spec.ts",
|
|
39
|
+
"test:client": "npm run test:types && node --test --import ../../tools/tsnode.mjs test/client-*.spec.ts",
|
|
40
|
+
"test:only": "npm run test:types && node --test-only --test --import ../../tools/tsnode.mjs test/*.spec.ts",
|
|
41
|
+
"test:types": "npm run build && tsc -p tsconfig.test.json",
|
|
42
|
+
"local:publish": "npm run build && npm run clean:registry && npm publish --registry http://localhost:4873",
|
|
43
|
+
"clean:registry": "rm -rf ../../.registry/@ez4/pgmigration",
|
|
44
|
+
"live:publish": "npm run build && npm publish --access public"
|
|
45
|
+
},
|
|
46
|
+
"dependencies": {
|
|
47
|
+
"@ez4/database": "^0.26.0",
|
|
48
|
+
"@ez4/pgsql": "^0.26.0",
|
|
49
|
+
"@ez4/pgclient": "^0.26.0",
|
|
50
|
+
"@ez4/schema": "^0.26.0",
|
|
51
|
+
"@ez4/utils": "^0.26.0"
|
|
52
|
+
}
|
|
53
|
+
}
|