@ez4/pgmigration 0.49.0 → 0.51.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/dist/library.cjs CHANGED
@@ -1,107 +1,2 @@
1
- "use strict";var _=Object.defineProperty;var ee=Object.getOwnPropertyDescriptor;var te=Object.getOwnPropertyNames;var ne=Object.prototype.hasOwnProperty;var r=(e,o)=>_(e,"name",{value:o,configurable:!0});var re=(e,o)=>{for(var l in o)_(e,l,{get:o[l],enumerable:!0})},oe=(e,o,l,f)=>{if(o&&
2
- typeof o=="object"||typeof o=="function")for(let y of te(o))!ne.call(e,y)&&y!==l&&
3
- _(e,y,{get:()=>o[y],enumerable:!(f=ee(o,y))||f.enumerable});return e};var ie=e=>oe(_({},"__esModule",{value:!0}),e);var pe={};re(pe,{ColumnQuery:()=>Q,DatabaseQueries:()=>F,IndexQueries:()=>W,RelationQuery:()=>Z,
4
- TableQuery:()=>H,getTableRepositoryChanges:()=>se});module.exports=ie(pe);var b=require("@ez4/utils"),$=require("@ez4/pgclient/library"),E=require("@ez4/schema");var se=r((e,o)=>(0,b.deepCompareObject)(e,o,{onSimilarName:r((l,f)=>{let y=new Set(
5
- (0,b.toSnakeCase)(l).split("_")),x=new Set((0,b.toSnakeCase)(f).split("_"));for(let d of x)
6
- if(d.length>1&&y.has(d))return!0;return!1},"onSimilarName"),onRename:r((l,f)=>!(0,b.isAnyObject)(
7
- l)||!(0,b.isAnyObject)(f)?!1:(0,$.isTableMetadata)(l)&&(0,$.isTableMetadata)(f)?
8
- ae(l.schema,f.schema):(0,E.isAnySchema)(l)&&(0,E.isAnySchema)(f)?ce(l,f):!1,"onR\
9
- ename")}),"getTableRepositoryChanges"),ae=r((e,o)=>(0,b.deepEqual)(Object.keys(e.
10
- properties),Object.keys(o.properties)),"canRenameTable"),ce=r((e,o)=>(0,b.deepEqual)(
11
- e,o,{depth:1,include:{type:!0,definitions:!0,nullable:!0,format:!0}}),"canRename\
12
- Column");var V=require("@ez4/pgsql");var K=r((e,o)=>{let[l]=e.select().rawColumn("1").from("pg_database").where({datname:e.
13
- rawString(o)}).build();return l},"getCheckDatabaseQuery"),N=r((e,o)=>{let[l]=e.select().
14
- rawColumn("1").from("pg_constraint").where({conname:e.rawString(o)}).build();return l},
15
- "getCheckConstraintQuery"),U=r((e,o,l)=>{let[f]=e.select().rawColumn("1").where(
16
- {NOT:{exists:e.select().from(e.rawValue("information_schema.columns")).rawColumn(
17
- "1").where({column_name:e.rawString(l),table_name:e.rawString(o)})}}).build();return f},
18
- "getCheckColumnQuery");var F;(l=>(l.prepareCreate=r(f=>{let y=new V.SqlBuilder;return{check:K(y,f),query:`\
19
- CREATE DATABASE "${f}"`}},"prepareCreate"),l.prepareDelete=r(f=>({query:`DROP DA\
20
- TABASE IF EXISTS "${f}" WITH (FORCE)`}),"prepareDelete")))(F||={});var G=require("@ez4/database");var S=require("@ez4/schema"),L=require("@ez4/utils");var B=r(e=>!!(e.nullable||e.optional),"isOptionalColumn"),P=r((e,o)=>{if((0,S.isScalarSchema)(
21
- e)||(0,S.isObjectSchema)(e)||(0,S.isArraySchema)(e)||(0,S.isTupleSchema)(e)){let{
22
- definitions:l}=e;switch(typeof l?.default){case"boolean":case"number":return`${l.
23
- default}`;case"string":return`'${l.default}'`;case"object":return`'${JSON.stringify(
24
- l.default)}'`}}if((0,S.isEnumSchema)(e)){let{definitions:l}=e;if(l?.default)return`\
25
- '${l.default}'`}if((0,S.isStringSchema)(e)&&o)switch(e.format){case"date-time":case"\
26
- date":case"time":return"now()";case"uuid":return"gen_random_uuid()"}if(B(e))return"\
27
- null"},"getColumnDefault"),T=r((e,o)=>{switch(e.type){case S.SchemaType.Array:case S.SchemaType.
28
- Object:case S.SchemaType.Reference:case S.SchemaType.Union:case S.SchemaType.Tuple:
29
- return"jsonb";case S.SchemaType.Boolean:return"boolean";case S.SchemaType.Enum:return"\
30
- text";case S.SchemaType.Number:return me(e,o);case S.SchemaType.String:return ue(
31
- e)}},"getColumnType"),me=r((e,o)=>e.format==="integer"?o?"bigserial":"bigint":"d\
32
- ecimal","getColumNumberType"),ue=r(e=>{switch(e.format){case"uuid":case"time":case"\
33
- date":return e.format;case"date-time":return"timestamptz";default:let o=e.definitions?.
34
- maxLength;return(0,L.isAnyNumber)(o)?`varchar(${o})`:"text"}},"getColumnTextType");var H;(f=>(f.prepareCreate=r((y,x,d,i)=>{let t=y.table(x).create().missing();for(let n in d.
35
- properties){let s=d.properties[n],g=i[n]?.type===G.Index.Primary,m=!B(s),c=T(s,g),
36
- p=P(s,g);t.column(n,c,m,p).missing()}return{query:t.build()}},"prepareCreate"),f.
37
- prepareRename=r((y,x,d)=>({query:y.table(x).rename(d).existing().build()}),"prep\
38
- areRename"),f.prepareDelete=r((y,x)=>({query:y.table(x).drop().existing().cascade().
39
- build()}),"prepareDelete")))(H||={});var z=require("@ez4/schema"),C=require("@ez4/database");var J=require("@ez4/utils");var j=r((e,o)=>`${D(e,o)}_pk`,"getPrimaryKeyName"),A=r((e,o)=>`${D(e,o)}_uk`,"ge\
40
- tUniqueKeyName"),I=r((e,o)=>`${D(e,o)}_sk`,"getSecondaryKeyName"),O=r((e,o)=>`${D(
41
- e,o)}_fk`,"getRelationName");var D=r((e,o)=>`${e}_${(0,J.toSnakeCase)(o.replaceAll(":","_"))}`,"getName");var W;(d=>{d.prepareCreate=r((i,t,n,s)=>{let a={constraints:[],validations:[],indexes:[]};
42
- for(let g in s){let{columns:m,type:c,name:p}=s[g];switch(c){default:throw new Error(
43
- "Unsupported index type.");case C.Index.Primary:{let u=j(t,p);a.constraints.push(
44
- {check:N(i,u),query:i.table(t).alter().existing().constraint(u).primary(m).build()});
45
- break}case C.Index.Unique:{let u=A(t,p),h=x(m,n);a.indexes.push({query:i.index(u).
46
- create(t,m).type(h).unique().concurrent().missing().build()}),a.validations.push(
47
- {query:(0,d.getValidationQuery)(i,u),name:u});break}case C.Index.Secondary:{let u=I(
48
- t,p),h=x(m,n);a.indexes.push({query:i.index(u).create(t,m).type(h).concurrent().
49
- missing().build()}),a.validations.push({query:(0,d.getValidationQuery)(i,u),name:u});
50
- break}}}return a},"prepareCreate"),d.prepareUpdate=r((i,t,n,s,a,g)=>{let m={constraints:[],
51
- validations:[],indexes:[]};for(let c in g){let{update:p,create:u,remove:h}=g[c];
52
- if(h||p){let q=(0,d.prepareDelete)(i,t,{[c]:s[c]});m.constraints.push(...q.constraints),
53
- m.indexes.push(...q.indexes)}if(u||p){let q=(0,d.prepareCreate)(i,t,n,{[c]:a[c]});
54
- m.constraints.push(...q.constraints),m.indexes.push(...q.indexes)}}return m},"pr\
55
- epareUpdate"),d.prepareRename=r((i,t,n,s)=>{let a={validations:[],constraints:[],
56
- indexes:[]};for(let g in s){let{type:m,name:c}=s[g];switch(m){default:throw new Error(
57
- "Unsupported index type.");case C.Index.Primary:{let p=j(t,c),u=j(n,c);a.constraints.
58
- push({check:N(i,u),query:i.table(n).alter().existing().constraint(p).rename(u).build()});
59
- break}case C.Index.Unique:{let p=A(t,c),u=A(n,c);a.indexes.push({query:i.index(p).
60
- rename(u).existing().build()});break}case C.Index.Secondary:{let p=I(t,c),u=I(n,
61
- c);a.indexes.push({query:i.index(p).rename(u).existing().build()});break}}}return a},
62
- "prepareRename"),d.prepareDelete=r((i,t,n)=>{let s={validations:[],constraints:[],
63
- indexes:[]};for(let a in n){let{type:g,name:m}=n[a];switch(g){default:throw new Error(
64
- "Unsupported index type.");case C.Index.Primary:{let c=j(t,m),p=i.table(t).alter().
65
- existing().constraint(c).drop().existing();s.constraints.push({query:p.build()});
66
- break}case C.Index.Unique:{let c=A(t,m),p=i.index(c).drop().existing().concurrent();
67
- s.indexes.push({query:p.build()});break}case C.Index.Secondary:{let c=I(t,m),p=i.
68
- index(c).drop().existing().concurrent();s.indexes.push({query:p.build()});break}}}
69
- return s},"prepareDelete"),d.getValidationQuery=r((i,t)=>{let[n]=i.select().rawColumn(
70
- "1").from("pg_index").where({indexrelid:i.rawValue(`${i.rawString(t).build()}::r\
71
- egclass`),indisvalid:i.rawValue("false"),indisready:i.rawValue("true")}).build();
72
- return n},"getValidationQuery");let x=r((i,t)=>{if(i.length===1){let[n]=i;switch(t.
73
- properties[n]?.type){case z.SchemaType.Object:case z.SchemaType.Union:case z.SchemaType.
74
- Array:case z.SchemaType.Tuple:return"GIN"}}return"BTREE"},"getIndexType")})(W||=
75
- {});var X=require("@ez4/pgclient/library"),Y=require("@ez4/schema"),v=require("@ez4/database");var Z;(i=>{i.prepareCreate=r((t,n,s,a)=>{let g=[];for(let m in a){let c=a[m];if(y(
76
- c))continue;let{[c.targetColumn]:p}=s.properties,u=O(n,m),h=!!(0,Y.isNullishSchema)(
77
- p);g.push({check:N(t,u),query:d(t,n,u,c,h).build()})}return g},"prepareCreate"),
78
- i.prepareUpdate=r((t,n,s,a)=>{let g=[];for(let m in s){let c=s[m];if(y(c))continue;
79
- let p=a[c.targetColumn]?.update,u=p?.optional??p?.nullable;if(u===void 0)continue;
80
- let h=O(n,m);g.push({query:x(t,n,h).build()},{query:d(t,n,h,c,u).build()})}return g},
81
- "prepareUpdate"),i.prepareRename=r((t,n,s,a)=>{let g=[];for(let m in a){let c=a[m];
82
- if(y(c))continue;let p=O(n,m),u=O(s,m),h=t.table(s).alter().existing().constraint(
83
- p).rename(u);g.push({check:N(t,u),query:h.build()})}return g},"prepareRename"),i.
84
- prepareDelete=r((t,n,s)=>{let a=[];for(let g in s){let m=s[g];if(y(m))continue;let c=O(
85
- n,g);a.push({query:x(t,n,c).build()})}return a},"prepareDelete");let y=r(t=>{let{
86
- sourceIndex:n,targetIndex:s}=t;return!n||n===v.Index.Secondary||s===v.Index.Primary},
87
- "isNotRealRelation"),x=r((t,n,s)=>t.table(n).alter().existing().constraint(s).drop().
88
- existing(),"getDeleteQuery"),d=r((t,n,s,a,g)=>{let{sourceTable:m,sourceColumn:c,
89
- targetColumn:p}=a,u=(0,X.getTableName)(m),h=t.table(n).alter().existing().constraint(
90
- s),q=h.foreign(p,u,[c]).validate(!1);return g?q.delete().null():q.delete().cascade(),
91
- q.update().cascade(),h},"getCreateQuery")})(Z||={});var M=require("@ez4/database");var Q;(y=>(y.prepareCreate=r((x,d,i,t)=>{let n=x.table(d).alter().existing();for(let s in t){
92
- let a=t[s],m=i[s]?.type===M.Index.Primary,c=!B(a),p=T(a,m),u=P(a,m);n.add(s,p,c,
93
- u).missing()}return{query:n.build()}},"prepareCreate"),y.prepareUpdate=r((x,d,i,t,n)=>{
94
- let s=[];for(let a in n){let{create:g,update:m,nested:c,remove:p}=n[a],u=i.properties[a],
95
- q=t[a]?.type===M.Index.Primary,R=x.table(d).alter().existing().column(a);if(g){let k=g.
96
- definitions?.default,w=g?.nullable;k!==void 0&&R.default(P(u,q)),!q&&w!==void 0&&
97
- R.optional(w)}if(m||c){let k=c?.definitions?.update?.default,w=m?.nullable;m?.type!==
98
- void 0&&R.type(T(u,q)),k!==void 0&&R.default(P(u,q)),!q&&w!==void 0&&R.optional(
99
- w)}if(p){let k=p.definitions?.default,w=p?.nullable;k!==void 0&&R.default(null),
100
- !q&&w!==void 0&&R.optional(w)}R.empty||s.push({check:U(x,d,a),query:R.build()})}
101
- return s},"prepareUpdate"),y.prepareRename=r((x,d,i)=>{let t=[];for(let n in i){
102
- let s=i[n],a=x.table(d).alter().existing().rename(n,s);t.push({check:U(x,d,n),query:a.
103
- build()})}return t},"prepareRename"),y.prepareDelete=r((x,d,i)=>{let t=x.table(d).
104
- alter().existing();for(let n in i)t.drop(n).existing();return{query:t.build()}},
105
- "prepareDelete")))(Q||={});0&&(module.exports={ColumnQuery,DatabaseQueries,IndexQueries,RelationQuery,TableQuery,
106
- getTableRepositoryChanges});
1
+ var _=Object.defineProperty;var ee=Object.getOwnPropertyDescriptor;var te=Object.getOwnPropertyNames;var ne=Object.prototype.hasOwnProperty;var r=(e,o)=>_(e,"name",{value:o,configurable:!0});var re=(e,o)=>{for(var l in o)_(e,l,{get:o[l],enumerable:!0})},oe=(e,o,l,f)=>{if(o&&typeof o=="object"||typeof o=="function")for(let y of te(o))!ne.call(e,y)&&y!==l&&_(e,y,{get:()=>o[y],enumerable:!(f=ee(o,y))||f.enumerable});return e};var ie=e=>oe(_({},"__esModule",{value:!0}),e);var pe={};re(pe,{ColumnQuery:()=>Q,DatabaseQueries:()=>F,IndexQueries:()=>W,RelationQuery:()=>Z,TableQuery:()=>H,getTableRepositoryChanges:()=>se});module.exports=ie(pe);var b=require("@ez4/utils"),$=require("@ez4/pgclient/library"),E=require("@ez4/schema");var se=r((e,o)=>(0,b.deepCompareObject)(e,o,{onSimilarName:r((l,f)=>{let y=new Set((0,b.toSnakeCase)(l).split("_")),x=new Set((0,b.toSnakeCase)(f).split("_"));for(let d of x)if(d.length>1&&y.has(d))return!0;return!1},"onSimilarName"),onRename:r((l,f)=>!(0,b.isAnyObject)(l)||!(0,b.isAnyObject)(f)?!1:(0,$.isTableMetadata)(l)&&(0,$.isTableMetadata)(f)?ae(l.schema,f.schema):(0,E.isAnySchema)(l)&&(0,E.isAnySchema)(f)?ce(l,f):!1,"onRename")}),"getTableRepositoryChanges"),ae=r((e,o)=>(0,b.deepEqual)(Object.keys(e.properties),Object.keys(o.properties)),"canRenameTable"),ce=r((e,o)=>(0,b.deepEqual)(e,o,{depth:1,include:{type:!0,definitions:!0,nullable:!0,format:!0}}),"canRenameColumn");var V=require("@ez4/pgsql");var K=r((e,o)=>{let[l]=e.select().rawColumn(1).from("pg_database").where({datname:e.rawString(o)}).build();return l},"getCheckDatabaseQuery"),N=r((e,o)=>{let[l]=e.select().rawColumn(1).from("pg_constraint").where({conname:e.rawString(o)}).build();return l},"getCheckConstraintQuery"),U=r((e,o,l)=>{let[f]=e.select().rawColumn(1).where({NOT:{exists:e.select().from(e.rawValue("information_schema.columns")).rawColumn(1).where({column_name:e.rawString(l),table_name:e.rawString(o)})}}).build();return f},"getCheckColumnQuery");var F;(l=>(l.prepareCreate=r(f=>{let y=new V.SqlBuilder;return{check:K(y,f),query:`CREATE DATABASE "${f}"`}},"prepareCreate"),l.prepareDelete=r(f=>({query:`DROP DATABASE IF EXISTS "${f}" WITH (FORCE)`}),"prepareDelete")))(F||={});var G=require("@ez4/database");var S=require("@ez4/schema"),L=require("@ez4/utils");var B=r(e=>!!(e.nullable||e.optional),"isOptionalColumn"),P=r((e,o)=>{if((0,S.isScalarSchema)(e)||(0,S.isObjectSchema)(e)||(0,S.isArraySchema)(e)||(0,S.isTupleSchema)(e)){let{definitions:l}=e;switch(typeof l?.default){case"boolean":case"number":return`${l.default}`;case"string":return`'${l.default}'`;case"object":return`'${JSON.stringify(l.default)}'`}}if((0,S.isEnumSchema)(e)){let{definitions:l}=e;if(l?.default)return`'${l.default}'`}if((0,S.isStringSchema)(e)&&o)switch(e.format){case"date-time":case"date":case"time":return"now()";case"uuid":return"gen_random_uuid()"}if(B(e))return"null"},"getColumnDefault"),T=r((e,o)=>{switch(e.type){case S.SchemaType.Array:case S.SchemaType.Object:case S.SchemaType.Reference:case S.SchemaType.Union:case S.SchemaType.Tuple:return"jsonb";case S.SchemaType.Boolean:return"boolean";case S.SchemaType.Enum:return"text";case S.SchemaType.Number:return me(e,o);case S.SchemaType.String:return ue(e)}},"getColumnType"),me=r((e,o)=>e.format==="integer"?o?"bigserial":"bigint":"decimal","getColumNumberType"),ue=r(e=>{switch(e.format){case"uuid":case"time":case"date":return e.format;case"date-time":return"timestamptz";default:let o=e.definitions?.maxLength;return(0,L.isAnyNumber)(o)?`varchar(${o})`:"text"}},"getColumnTextType");var H;(f=>(f.prepareCreate=r((y,x,d,i)=>{let t=y.table(x).create().missing();for(let n in d.properties){let s=d.properties[n],g=i[n]?.type===G.Index.Primary,m=!B(s),c=T(s,g),p=P(s,g);t.column(n,c,m,p).missing()}return{query:t.build()}},"prepareCreate"),f.prepareRename=r((y,x,d)=>({query:y.table(x).rename(d).existing().build()}),"prepareRename"),f.prepareDelete=r((y,x)=>({query:y.table(x).drop().existing().cascade().build()}),"prepareDelete")))(H||={});var z=require("@ez4/schema"),C=require("@ez4/database");var J=require("@ez4/utils");var j=r((e,o)=>`${D(e,o)}_pk`,"getPrimaryKeyName"),A=r((e,o)=>`${D(e,o)}_uk`,"getUniqueKeyName"),I=r((e,o)=>`${D(e,o)}_sk`,"getSecondaryKeyName"),O=r((e,o)=>`${D(e,o)}_fk`,"getRelationName");var D=r((e,o)=>`${e}_${(0,J.toSnakeCase)(o.replaceAll(":","_"))}`,"getName");var W;(d=>{d.prepareCreate=r((i,t,n,s)=>{let a={constraints:[],validations:[],indexes:[]};for(let g in s){let{columns:m,type:c,name:p}=s[g];switch(c){default:throw new Error("Unsupported index type.");case C.Index.Primary:{let u=j(t,p);a.constraints.push({check:N(i,u),query:i.table(t).alter().existing().constraint(u).primary(m).build()});break}case C.Index.Unique:{let u=A(t,p),h=x(m,n);a.indexes.push({query:i.index(u).create(t,m).type(h).unique().concurrent().missing().build()}),a.validations.push({query:(0,d.getValidationQuery)(i,u),name:u});break}case C.Index.Secondary:{let u=I(t,p),h=x(m,n);a.indexes.push({query:i.index(u).create(t,m).type(h).concurrent().missing().build()}),a.validations.push({query:(0,d.getValidationQuery)(i,u),name:u});break}}}return a},"prepareCreate"),d.prepareUpdate=r((i,t,n,s,a,g)=>{let m={constraints:[],validations:[],indexes:[]};for(let c in g){let{update:p,create:u,remove:h}=g[c];if(h||p){let q=(0,d.prepareDelete)(i,t,{[c]:s[c]});m.constraints.push(...q.constraints),m.indexes.push(...q.indexes)}if(u||p){let q=(0,d.prepareCreate)(i,t,n,{[c]:a[c]});m.constraints.push(...q.constraints),m.indexes.push(...q.indexes)}}return m},"prepareUpdate"),d.prepareRename=r((i,t,n,s)=>{let a={validations:[],constraints:[],indexes:[]};for(let g in s){let{type:m,name:c}=s[g];switch(m){default:throw new Error("Unsupported index type.");case C.Index.Primary:{let p=j(t,c),u=j(n,c);a.constraints.push({check:N(i,u),query:i.table(n).alter().existing().constraint(p).rename(u).build()});break}case C.Index.Unique:{let p=A(t,c),u=A(n,c);a.indexes.push({query:i.index(p).rename(u).existing().build()});break}case C.Index.Secondary:{let p=I(t,c),u=I(n,c);a.indexes.push({query:i.index(p).rename(u).existing().build()});break}}}return a},"prepareRename"),d.prepareDelete=r((i,t,n)=>{let s={validations:[],constraints:[],indexes:[]};for(let a in n){let{type:g,name:m}=n[a];switch(g){default:throw new Error("Unsupported index type.");case C.Index.Primary:{let c=j(t,m),p=i.table(t).alter().existing().constraint(c).drop().existing();s.constraints.push({query:p.build()});break}case C.Index.Unique:{let c=A(t,m),p=i.index(c).drop().existing().concurrent();s.indexes.push({query:p.build()});break}case C.Index.Secondary:{let c=I(t,m),p=i.index(c).drop().existing().concurrent();s.indexes.push({query:p.build()});break}}}return s},"prepareDelete"),d.getValidationQuery=r((i,t)=>{let[n]=i.select().rawColumn(1).from("pg_index").where({indexrelid:i.rawValue(`${i.rawString(t).build()}::regclass`),indisvalid:i.rawValue("false"),indisready:i.rawValue("true")}).build();return n},"getValidationQuery");let x=r((i,t)=>{if(i.length===1){let[n]=i;switch(t.properties[n]?.type){case z.SchemaType.Object:case z.SchemaType.Union:case z.SchemaType.Array:case z.SchemaType.Tuple:return"GIN"}}return"BTREE"},"getIndexType")})(W||={});var X=require("@ez4/pgclient/utils"),Y=require("@ez4/schema"),v=require("@ez4/database");var Z;(i=>{i.prepareCreate=r((t,n,s,a)=>{let g=[];for(let m in a){let c=a[m];if(y(c))continue;let{[c.targetColumn]:p}=s.properties,u=O(n,m),h=!!(0,Y.isNullishSchema)(p);g.push({check:N(t,u),query:d(t,n,u,c,h).build()})}return g},"prepareCreate"),i.prepareUpdate=r((t,n,s,a)=>{let g=[];for(let m in s){let c=s[m];if(y(c))continue;let p=a[c.targetColumn]?.update,u=p?.optional??p?.nullable;if(u===void 0)continue;let h=O(n,m);g.push({query:x(t,n,h).build()},{query:d(t,n,h,c,u).build()})}return g},"prepareUpdate"),i.prepareRename=r((t,n,s,a)=>{let g=[];for(let m in a){let c=a[m];if(y(c))continue;let p=O(n,m),u=O(s,m),h=t.table(s).alter().existing().constraint(p).rename(u);g.push({check:N(t,u),query:h.build()})}return g},"prepareRename"),i.prepareDelete=r((t,n,s)=>{let a=[];for(let g in s){let m=s[g];if(y(m))continue;let c=O(n,g);a.push({query:x(t,n,c).build()})}return a},"prepareDelete");let y=r(t=>{let{sourceIndex:n,targetIndex:s}=t;return!n||n===v.Index.Secondary||s===v.Index.Primary},"isNotRealRelation"),x=r((t,n,s)=>t.table(n).alter().existing().constraint(s).drop().existing(),"getDeleteQuery"),d=r((t,n,s,a,g)=>{let{sourceTable:m,sourceColumn:c,targetColumn:p}=a,u=(0,X.getTableName)(m),h=t.table(n).alter().existing().constraint(s),q=h.foreign(p,u,[c]).validate(!1);return g?q.delete().null():q.delete().cascade(),q.update().cascade(),h},"getCreateQuery")})(Z||={});var M=require("@ez4/database");var Q;(y=>(y.prepareCreate=r((x,d,i,t)=>{let n=x.table(d).alter().existing();for(let s in t){let a=t[s],m=i[s]?.type===M.Index.Primary,c=!B(a),p=T(a,m),u=P(a,m);n.add(s,p,c,u).missing()}return{query:n.build()}},"prepareCreate"),y.prepareUpdate=r((x,d,i,t,n)=>{let s=[];for(let a in n){let{create:g,update:m,nested:c,remove:p}=n[a],u=i.properties[a],q=t[a]?.type===M.Index.Primary,R=x.table(d).alter().existing().column(a);if(g){let k=g.definitions?.default,w=g?.nullable;k!==void 0&&R.default(P(u,q)),!q&&w!==void 0&&R.optional(w)}if(m||c){let k=c?.definitions?.update?.default,w=m?.nullable;m?.type!==void 0&&R.type(T(u,q)),k!==void 0&&R.default(P(u,q)),!q&&w!==void 0&&R.optional(w)}if(p){let k=p.definitions?.default,w=p?.nullable;k!==void 0&&R.default(null),!q&&w!==void 0&&R.optional(w)}R.empty||s.push({check:U(x,d,a),query:R.build()})}return s},"prepareUpdate"),y.prepareRename=r((x,d,i)=>{let t=[];for(let n in i){let s=i[n],a=x.table(d).alter().existing().rename(n,s);t.push({check:U(x,d,n),query:a.build()})}return t},"prepareRename"),y.prepareDelete=r((x,d,i)=>{let t=x.table(d).alter().existing();for(let n in i)t.drop(n).existing();return{query:t.build()}},"prepareDelete")))(Q||={});0&&(module.exports={ColumnQuery,DatabaseQueries,IndexQueries,RelationQuery,TableQuery,getTableRepositoryChanges});
107
2
  //# sourceMappingURL=library.cjs.map
package/dist/library.mjs CHANGED
@@ -1,101 +1,2 @@
1
- var F=Object.defineProperty;var r=(e,m)=>F(e,"name",{value:m,configurable:!0});import{deepEqual as v,deepCompareObject as L,isAnyObject as D,toSnakeCase as $}from"@ez4/utils";
2
- import{isTableMetadata as E}from"@ez4/pgclient/library";import{isAnySchema as U}from"@ez4/schema";var Se=r((e,m)=>L(e,m,{onSimilarName:r((g,f)=>{let x=new Set($(g).split("_")),y=new Set(
3
- $(f).split("_"));for(let l of y)if(l.length>1&&x.has(l))return!0;return!1},"onSi\
4
- milarName"),onRename:r((g,f)=>!D(g)||!D(f)?!1:E(g)&&E(f)?G(g.schema,f.schema):U(
5
- g)&&U(f)?H(g,f):!1,"onRename")}),"getTableRepositoryChanges"),G=r((e,m)=>v(Object.
6
- keys(e.properties),Object.keys(m.properties)),"canRenameTable"),H=r((e,m)=>v(e,m,
7
- {depth:1,include:{type:!0,definitions:!0,nullable:!0,format:!0}}),"canRenameColu\
8
- mn");import{SqlBuilder as J}from"@ez4/pgsql";var M=r((e,m)=>{let[g]=e.select().rawColumn("1").from("pg_database").where({datname:e.
9
- rawString(m)}).build();return g},"getCheckDatabaseQuery"),w=r((e,m)=>{let[g]=e.select().
10
- rawColumn("1").from("pg_constraint").where({conname:e.rawString(m)}).build();return g},
11
- "getCheckConstraintQuery"),_=r((e,m,g)=>{let[f]=e.select().rawColumn("1").where(
12
- {NOT:{exists:e.select().from(e.rawValue("information_schema.columns")).rawColumn(
13
- "1").where({column_name:e.rawString(g),table_name:e.rawString(m)})}}).build();return f},
14
- "getCheckColumnQuery");var W;(g=>(g.prepareCreate=r(f=>{let x=new J;return{check:M(x,f),query:`CREATE D\
15
- ATABASE "${f}"`}},"prepareCreate"),g.prepareDelete=r(f=>({query:`DROP DATABASE I\
16
- F EXISTS "${f}" WITH (FORCE)`}),"prepareDelete")))(W||={});import{Index as ie}from"@ez4/database";import{isArraySchema as X,isEnumSchema as Y,isObjectSchema as Z,isScalarSchema as Q,
17
- isStringSchema as ee,isTupleSchema as te,SchemaType as b}from"@ez4/schema";import{
18
- isAnyNumber as ne}from"@ez4/utils";var k=r(e=>!!(e.nullable||e.optional),"isOptionalColumn"),N=r((e,m)=>{if(Q(e)||Z(
19
- e)||X(e)||te(e)){let{definitions:g}=e;switch(typeof g?.default){case"boolean":case"\
20
- number":return`${g.default}`;case"string":return`'${g.default}'`;case"object":return`\
21
- '${JSON.stringify(g.default)}'`}}if(Y(e)){let{definitions:g}=e;if(g?.default)return`\
22
- '${g.default}'`}if(ee(e)&&m)switch(e.format){case"date-time":case"date":case"tim\
23
- e":return"now()";case"uuid":return"gen_random_uuid()"}if(k(e))return"null"},"get\
24
- ColumnDefault"),B=r((e,m)=>{switch(e.type){case b.Array:case b.Object:case b.Reference:case b.
25
- Union:case b.Tuple:return"jsonb";case b.Boolean:return"boolean";case b.Enum:return"\
26
- text";case b.Number:return re(e,m);case b.String:return oe(e)}},"getColumnType"),
27
- re=r((e,m)=>e.format==="integer"?m?"bigserial":"bigint":"decimal","getColumNumbe\
28
- rType"),oe=r(e=>{switch(e.format){case"uuid":case"time":case"date":return e.format;case"\
29
- date-time":return"timestamptz";default:let m=e.definitions?.maxLength;return ne(
30
- m)?`varchar(${m})`:"text"}},"getColumnTextType");var se;(f=>(f.prepareCreate=r((x,y,l,o)=>{let t=x.table(y).create().missing();for(let n in l.
31
- properties){let i=l.properties[n],d=o[n]?.type===ie.Primary,c=!k(i),a=B(i,d),p=N(
32
- i,d);t.column(n,a,c,p).missing()}return{query:t.build()}},"prepareCreate"),f.prepareRename=
33
- r((x,y,l)=>({query:x.table(y).rename(l).existing().build()}),"prepareRename"),f.
34
- prepareDelete=r((x,y)=>({query:x.table(y).drop().existing().cascade().build()}),
35
- "prepareDelete")))(se||={});import{SchemaType as z}from"@ez4/schema";import{Index as C}from"@ez4/database";import{toSnakeCase as ae}from"@ez4/utils";var T=r((e,m)=>`${I(e,m)}_pk`,"getPrimaryKeyName"),j=r((e,m)=>`${I(e,m)}_uk`,"ge\
36
- tUniqueKeyName"),A=r((e,m)=>`${I(e,m)}_sk`,"getSecondaryKeyName"),P=r((e,m)=>`${I(
37
- e,m)}_fk`,"getRelationName");var I=r((e,m)=>`${e}_${ae(m.replaceAll(":","_"))}`,"getName");var ce;(l=>{l.prepareCreate=r((o,t,n,i)=>{let s={constraints:[],validations:[],indexes:[]};
38
- for(let d in i){let{columns:c,type:a,name:p}=i[d];switch(a){default:throw new Error(
39
- "Unsupported index type.");case C.Primary:{let u=T(t,p);s.constraints.push({check:w(
40
- o,u),query:o.table(t).alter().existing().constraint(u).primary(c).build()});break}case C.
41
- Unique:{let u=j(t,p),S=y(c,n);s.indexes.push({query:o.index(u).create(t,c).type(
42
- S).unique().concurrent().missing().build()}),s.validations.push({query:(0,l.getValidationQuery)(
43
- o,u),name:u});break}case C.Secondary:{let u=A(t,p),S=y(c,n);s.indexes.push({query:o.
44
- index(u).create(t,c).type(S).concurrent().missing().build()}),s.validations.push(
45
- {query:(0,l.getValidationQuery)(o,u),name:u});break}}}return s},"prepareCreate"),
46
- l.prepareUpdate=r((o,t,n,i,s,d)=>{let c={constraints:[],validations:[],indexes:[]};
47
- for(let a in d){let{update:p,create:u,remove:S}=d[a];if(S||p){let h=(0,l.prepareDelete)(
48
- o,t,{[a]:i[a]});c.constraints.push(...h.constraints),c.indexes.push(...h.indexes)}
49
- if(u||p){let h=(0,l.prepareCreate)(o,t,n,{[a]:s[a]});c.constraints.push(...h.constraints),
50
- c.indexes.push(...h.indexes)}}return c},"prepareUpdate"),l.prepareRename=r((o,t,n,i)=>{
51
- let s={validations:[],constraints:[],indexes:[]};for(let d in i){let{type:c,name:a}=i[d];
52
- switch(c){default:throw new Error("Unsupported index type.");case C.Primary:{let p=T(
53
- t,a),u=T(n,a);s.constraints.push({check:w(o,u),query:o.table(n).alter().existing().
54
- constraint(p).rename(u).build()});break}case C.Unique:{let p=j(t,a),u=j(n,a);s.indexes.
55
- push({query:o.index(p).rename(u).existing().build()});break}case C.Secondary:{let p=A(
56
- t,a),u=A(n,a);s.indexes.push({query:o.index(p).rename(u).existing().build()});break}}}
57
- return s},"prepareRename"),l.prepareDelete=r((o,t,n)=>{let i={validations:[],constraints:[],
58
- indexes:[]};for(let s in n){let{type:d,name:c}=n[s];switch(d){default:throw new Error(
59
- "Unsupported index type.");case C.Primary:{let a=T(t,c),p=o.table(t).alter().existing().
60
- constraint(a).drop().existing();i.constraints.push({query:p.build()});break}case C.
61
- Unique:{let a=j(t,c),p=o.index(a).drop().existing().concurrent();i.indexes.push(
62
- {query:p.build()});break}case C.Secondary:{let a=A(t,c),p=o.index(a).drop().existing().
63
- concurrent();i.indexes.push({query:p.build()});break}}}return i},"prepareDelete"),
64
- l.getValidationQuery=r((o,t)=>{let[n]=o.select().rawColumn("1").from("pg_index").
65
- where({indexrelid:o.rawValue(`${o.rawString(t).build()}::regclass`),indisvalid:o.
66
- rawValue("false"),indisready:o.rawValue("true")}).build();return n},"getValidati\
67
- onQuery");let y=r((o,t)=>{if(o.length===1){let[n]=o;switch(t.properties[n]?.type){case z.
68
- Object:case z.Union:case z.Array:case z.Tuple:return"GIN"}}return"BTREE"},"getIn\
69
- dexType")})(ce||={});import{getTableName as me}from"@ez4/pgclient/library";import{isNullishSchema as ue}from"@ez4/schema";
70
- import{Index as K}from"@ez4/database";var pe;(o=>{o.prepareCreate=r((t,n,i,s)=>{let d=[];for(let c in s){let a=s[c];if(x(
71
- a))continue;let{[a.targetColumn]:p}=i.properties,u=P(n,c),S=!!ue(p);d.push({check:w(
72
- t,u),query:l(t,n,u,a,S).build()})}return d},"prepareCreate"),o.prepareUpdate=r((t,n,i,s)=>{
73
- let d=[];for(let c in i){let a=i[c];if(x(a))continue;let p=s[a.targetColumn]?.update,
74
- u=p?.optional??p?.nullable;if(u===void 0)continue;let S=P(n,c);d.push({query:y(t,
75
- n,S).build()},{query:l(t,n,S,a,u).build()})}return d},"prepareUpdate"),o.prepareRename=
76
- r((t,n,i,s)=>{let d=[];for(let c in s){let a=s[c];if(x(a))continue;let p=P(n,c),
77
- u=P(i,c),S=t.table(i).alter().existing().constraint(p).rename(u);d.push({check:w(
78
- t,u),query:S.build()})}return d},"prepareRename"),o.prepareDelete=r((t,n,i)=>{let s=[];
79
- for(let d in i){let c=i[d];if(x(c))continue;let a=P(n,d);s.push({query:y(t,n,a).
80
- build()})}return s},"prepareDelete");let x=r(t=>{let{sourceIndex:n,targetIndex:i}=t;
81
- return!n||n===K.Secondary||i===K.Primary},"isNotRealRelation"),y=r((t,n,i)=>t.table(
82
- n).alter().existing().constraint(i).drop().existing(),"getDeleteQuery"),l=r((t,n,i,s,d)=>{
83
- let{sourceTable:c,sourceColumn:a,targetColumn:p}=s,u=me(c),S=t.table(n).alter().
84
- existing().constraint(i),h=S.foreign(p,u,[a]).validate(!1);return d?h.delete().null():
85
- h.delete().cascade(),h.update().cascade(),S},"getCreateQuery")})(pe||={});import{Index as V}from"@ez4/database";var le;(x=>(x.prepareCreate=r((y,l,o,t)=>{let n=y.table(l).alter().existing();for(let i in t){
86
- let s=t[i],c=o[i]?.type===V.Primary,a=!k(s),p=B(s,c),u=N(s,c);n.add(i,p,a,u).missing()}
87
- return{query:n.build()}},"prepareCreate"),x.prepareUpdate=r((y,l,o,t,n)=>{let i=[];
88
- for(let s in n){let{create:d,update:c,nested:a,remove:p}=n[s],u=o.properties[s],
89
- h=t[s]?.type===V.Primary,q=y.table(l).alter().existing().column(s);if(d){let O=d.
90
- definitions?.default,R=d?.nullable;O!==void 0&&q.default(N(u,h)),!h&&R!==void 0&&
91
- q.optional(R)}if(c||a){let O=a?.definitions?.update?.default,R=c?.nullable;c?.type!==
92
- void 0&&q.type(B(u,h)),O!==void 0&&q.default(N(u,h)),!h&&R!==void 0&&q.optional(
93
- R)}if(p){let O=p.definitions?.default,R=p?.nullable;O!==void 0&&q.default(null),
94
- !h&&R!==void 0&&q.optional(R)}q.empty||i.push({check:_(y,l,s),query:q.build()})}
95
- return i},"prepareUpdate"),x.prepareRename=r((y,l,o)=>{let t=[];for(let n in o){
96
- let i=o[n],s=y.table(l).alter().existing().rename(n,i);t.push({check:_(y,l,n),query:s.
97
- build()})}return t},"prepareRename"),x.prepareDelete=r((y,l,o)=>{let t=y.table(l).
98
- alter().existing();for(let n in o)t.drop(n).existing();return{query:t.build()}},
99
- "prepareDelete")))(le||={});export{le as ColumnQuery,W as DatabaseQueries,ce as IndexQueries,pe as RelationQuery,
100
- se as TableQuery,Se as getTableRepositoryChanges};
1
+ var F=Object.defineProperty;var r=(e,m)=>F(e,"name",{value:m,configurable:!0});import{deepEqual as v,deepCompareObject as L,isAnyObject as D,toSnakeCase as $}from"@ez4/utils";import{isTableMetadata as E}from"@ez4/pgclient/library";import{isAnySchema as U}from"@ez4/schema";var Se=r((e,m)=>L(e,m,{onSimilarName:r((g,f)=>{let x=new Set($(g).split("_")),y=new Set($(f).split("_"));for(let l of y)if(l.length>1&&x.has(l))return!0;return!1},"onSimilarName"),onRename:r((g,f)=>!D(g)||!D(f)?!1:E(g)&&E(f)?G(g.schema,f.schema):U(g)&&U(f)?H(g,f):!1,"onRename")}),"getTableRepositoryChanges"),G=r((e,m)=>v(Object.keys(e.properties),Object.keys(m.properties)),"canRenameTable"),H=r((e,m)=>v(e,m,{depth:1,include:{type:!0,definitions:!0,nullable:!0,format:!0}}),"canRenameColumn");import{SqlBuilder as J}from"@ez4/pgsql";var M=r((e,m)=>{let[g]=e.select().rawColumn(1).from("pg_database").where({datname:e.rawString(m)}).build();return g},"getCheckDatabaseQuery"),w=r((e,m)=>{let[g]=e.select().rawColumn(1).from("pg_constraint").where({conname:e.rawString(m)}).build();return g},"getCheckConstraintQuery"),_=r((e,m,g)=>{let[f]=e.select().rawColumn(1).where({NOT:{exists:e.select().from(e.rawValue("information_schema.columns")).rawColumn(1).where({column_name:e.rawString(g),table_name:e.rawString(m)})}}).build();return f},"getCheckColumnQuery");var W;(g=>(g.prepareCreate=r(f=>{let x=new J;return{check:M(x,f),query:`CREATE DATABASE "${f}"`}},"prepareCreate"),g.prepareDelete=r(f=>({query:`DROP DATABASE IF EXISTS "${f}" WITH (FORCE)`}),"prepareDelete")))(W||={});import{Index as ie}from"@ez4/database";import{isArraySchema as X,isEnumSchema as Y,isObjectSchema as Z,isScalarSchema as Q,isStringSchema as ee,isTupleSchema as te,SchemaType as b}from"@ez4/schema";import{isAnyNumber as ne}from"@ez4/utils";var k=r(e=>!!(e.nullable||e.optional),"isOptionalColumn"),N=r((e,m)=>{if(Q(e)||Z(e)||X(e)||te(e)){let{definitions:g}=e;switch(typeof g?.default){case"boolean":case"number":return`${g.default}`;case"string":return`'${g.default}'`;case"object":return`'${JSON.stringify(g.default)}'`}}if(Y(e)){let{definitions:g}=e;if(g?.default)return`'${g.default}'`}if(ee(e)&&m)switch(e.format){case"date-time":case"date":case"time":return"now()";case"uuid":return"gen_random_uuid()"}if(k(e))return"null"},"getColumnDefault"),B=r((e,m)=>{switch(e.type){case b.Array:case b.Object:case b.Reference:case b.Union:case b.Tuple:return"jsonb";case b.Boolean:return"boolean";case b.Enum:return"text";case b.Number:return re(e,m);case b.String:return oe(e)}},"getColumnType"),re=r((e,m)=>e.format==="integer"?m?"bigserial":"bigint":"decimal","getColumNumberType"),oe=r(e=>{switch(e.format){case"uuid":case"time":case"date":return e.format;case"date-time":return"timestamptz";default:let m=e.definitions?.maxLength;return ne(m)?`varchar(${m})`:"text"}},"getColumnTextType");var se;(f=>(f.prepareCreate=r((x,y,l,o)=>{let t=x.table(y).create().missing();for(let n in l.properties){let i=l.properties[n],d=o[n]?.type===ie.Primary,c=!k(i),a=B(i,d),p=N(i,d);t.column(n,a,c,p).missing()}return{query:t.build()}},"prepareCreate"),f.prepareRename=r((x,y,l)=>({query:x.table(y).rename(l).existing().build()}),"prepareRename"),f.prepareDelete=r((x,y)=>({query:x.table(y).drop().existing().cascade().build()}),"prepareDelete")))(se||={});import{SchemaType as z}from"@ez4/schema";import{Index as C}from"@ez4/database";import{toSnakeCase as ae}from"@ez4/utils";var T=r((e,m)=>`${I(e,m)}_pk`,"getPrimaryKeyName"),j=r((e,m)=>`${I(e,m)}_uk`,"getUniqueKeyName"),A=r((e,m)=>`${I(e,m)}_sk`,"getSecondaryKeyName"),P=r((e,m)=>`${I(e,m)}_fk`,"getRelationName");var I=r((e,m)=>`${e}_${ae(m.replaceAll(":","_"))}`,"getName");var ce;(l=>{l.prepareCreate=r((o,t,n,i)=>{let s={constraints:[],validations:[],indexes:[]};for(let d in i){let{columns:c,type:a,name:p}=i[d];switch(a){default:throw new Error("Unsupported index type.");case C.Primary:{let u=T(t,p);s.constraints.push({check:w(o,u),query:o.table(t).alter().existing().constraint(u).primary(c).build()});break}case C.Unique:{let u=j(t,p),S=y(c,n);s.indexes.push({query:o.index(u).create(t,c).type(S).unique().concurrent().missing().build()}),s.validations.push({query:(0,l.getValidationQuery)(o,u),name:u});break}case C.Secondary:{let u=A(t,p),S=y(c,n);s.indexes.push({query:o.index(u).create(t,c).type(S).concurrent().missing().build()}),s.validations.push({query:(0,l.getValidationQuery)(o,u),name:u});break}}}return s},"prepareCreate"),l.prepareUpdate=r((o,t,n,i,s,d)=>{let c={constraints:[],validations:[],indexes:[]};for(let a in d){let{update:p,create:u,remove:S}=d[a];if(S||p){let h=(0,l.prepareDelete)(o,t,{[a]:i[a]});c.constraints.push(...h.constraints),c.indexes.push(...h.indexes)}if(u||p){let h=(0,l.prepareCreate)(o,t,n,{[a]:s[a]});c.constraints.push(...h.constraints),c.indexes.push(...h.indexes)}}return c},"prepareUpdate"),l.prepareRename=r((o,t,n,i)=>{let s={validations:[],constraints:[],indexes:[]};for(let d in i){let{type:c,name:a}=i[d];switch(c){default:throw new Error("Unsupported index type.");case C.Primary:{let p=T(t,a),u=T(n,a);s.constraints.push({check:w(o,u),query:o.table(n).alter().existing().constraint(p).rename(u).build()});break}case C.Unique:{let p=j(t,a),u=j(n,a);s.indexes.push({query:o.index(p).rename(u).existing().build()});break}case C.Secondary:{let p=A(t,a),u=A(n,a);s.indexes.push({query:o.index(p).rename(u).existing().build()});break}}}return s},"prepareRename"),l.prepareDelete=r((o,t,n)=>{let i={validations:[],constraints:[],indexes:[]};for(let s in n){let{type:d,name:c}=n[s];switch(d){default:throw new Error("Unsupported index type.");case C.Primary:{let a=T(t,c),p=o.table(t).alter().existing().constraint(a).drop().existing();i.constraints.push({query:p.build()});break}case C.Unique:{let a=j(t,c),p=o.index(a).drop().existing().concurrent();i.indexes.push({query:p.build()});break}case C.Secondary:{let a=A(t,c),p=o.index(a).drop().existing().concurrent();i.indexes.push({query:p.build()});break}}}return i},"prepareDelete"),l.getValidationQuery=r((o,t)=>{let[n]=o.select().rawColumn(1).from("pg_index").where({indexrelid:o.rawValue(`${o.rawString(t).build()}::regclass`),indisvalid:o.rawValue("false"),indisready:o.rawValue("true")}).build();return n},"getValidationQuery");let y=r((o,t)=>{if(o.length===1){let[n]=o;switch(t.properties[n]?.type){case z.Object:case z.Union:case z.Array:case z.Tuple:return"GIN"}}return"BTREE"},"getIndexType")})(ce||={});import{getTableName as me}from"@ez4/pgclient/utils";import{isNullishSchema as ue}from"@ez4/schema";import{Index as K}from"@ez4/database";var pe;(o=>{o.prepareCreate=r((t,n,i,s)=>{let d=[];for(let c in s){let a=s[c];if(x(a))continue;let{[a.targetColumn]:p}=i.properties,u=P(n,c),S=!!ue(p);d.push({check:w(t,u),query:l(t,n,u,a,S).build()})}return d},"prepareCreate"),o.prepareUpdate=r((t,n,i,s)=>{let d=[];for(let c in i){let a=i[c];if(x(a))continue;let p=s[a.targetColumn]?.update,u=p?.optional??p?.nullable;if(u===void 0)continue;let S=P(n,c);d.push({query:y(t,n,S).build()},{query:l(t,n,S,a,u).build()})}return d},"prepareUpdate"),o.prepareRename=r((t,n,i,s)=>{let d=[];for(let c in s){let a=s[c];if(x(a))continue;let p=P(n,c),u=P(i,c),S=t.table(i).alter().existing().constraint(p).rename(u);d.push({check:w(t,u),query:S.build()})}return d},"prepareRename"),o.prepareDelete=r((t,n,i)=>{let s=[];for(let d in i){let c=i[d];if(x(c))continue;let a=P(n,d);s.push({query:y(t,n,a).build()})}return s},"prepareDelete");let x=r(t=>{let{sourceIndex:n,targetIndex:i}=t;return!n||n===K.Secondary||i===K.Primary},"isNotRealRelation"),y=r((t,n,i)=>t.table(n).alter().existing().constraint(i).drop().existing(),"getDeleteQuery"),l=r((t,n,i,s,d)=>{let{sourceTable:c,sourceColumn:a,targetColumn:p}=s,u=me(c),S=t.table(n).alter().existing().constraint(i),h=S.foreign(p,u,[a]).validate(!1);return d?h.delete().null():h.delete().cascade(),h.update().cascade(),S},"getCreateQuery")})(pe||={});import{Index as V}from"@ez4/database";var le;(x=>(x.prepareCreate=r((y,l,o,t)=>{let n=y.table(l).alter().existing();for(let i in t){let s=t[i],c=o[i]?.type===V.Primary,a=!k(s),p=B(s,c),u=N(s,c);n.add(i,p,a,u).missing()}return{query:n.build()}},"prepareCreate"),x.prepareUpdate=r((y,l,o,t,n)=>{let i=[];for(let s in n){let{create:d,update:c,nested:a,remove:p}=n[s],u=o.properties[s],h=t[s]?.type===V.Primary,q=y.table(l).alter().existing().column(s);if(d){let O=d.definitions?.default,R=d?.nullable;O!==void 0&&q.default(N(u,h)),!h&&R!==void 0&&q.optional(R)}if(c||a){let O=a?.definitions?.update?.default,R=c?.nullable;c?.type!==void 0&&q.type(B(u,h)),O!==void 0&&q.default(N(u,h)),!h&&R!==void 0&&q.optional(R)}if(p){let O=p.definitions?.default,R=p?.nullable;O!==void 0&&q.default(null),!h&&R!==void 0&&q.optional(R)}q.empty||i.push({check:_(y,l,s),query:q.build()})}return i},"prepareUpdate"),x.prepareRename=r((y,l,o)=>{let t=[];for(let n in o){let i=o[n],s=y.table(l).alter().existing().rename(n,i);t.push({check:_(y,l,n),query:s.build()})}return t},"prepareRename"),x.prepareDelete=r((y,l,o)=>{let t=y.table(l).alter().existing();for(let n in o)t.drop(n).existing();return{query:t.build()}},"prepareDelete")))(le||={});export{le as ColumnQuery,W as DatabaseQueries,ce as IndexQueries,pe as RelationQuery,se as TableQuery,Se as getTableRepositoryChanges};
101
2
  //# sourceMappingURL=library.mjs.map
package/dist/main.cjs CHANGED
@@ -1,162 +1,2 @@
1
- "use strict";var F=Object.defineProperty;var le=Object.getOwnPropertyDescriptor;var de=Object.getOwnPropertyNames;var ge=Object.prototype.hasOwnProperty;var a=(e,n)=>F(e,"name",{value:n,configurable:!0});var ye=(e,n)=>{for(var y in n)F(e,y,{get:n[y],enumerable:!0})},fe=(e,n,y,h)=>{if(n&&
2
- typeof n=="object"||typeof n=="function")for(let d of de(n))!ge.call(e,d)&&d!==y&&
3
- F(e,d,{get:()=>n[d],enumerable:!(h=le(n,d))||h.enumerable});return e};var he=e=>fe(F({},"__esModule",{value:!0}),e);var Re={};ye(Re,{getCreateQueries:()=>me,getDeleteQueries:()=>pe,getUpdateQueries:()=>Ce});
4
- module.exports=he(Re);var H=require("@ez4/pgsql");var N=require("@ez4/utils"),X=require("@ez4/pgclient/library"),Y=require("@ez4/schema");var re=a((e,n)=>(0,N.deepCompareObject)(e,n,{onSimilarName:a((y,h)=>{let d=new Set(
5
- (0,N.toSnakeCase)(y).split("_")),u=new Set((0,N.toSnakeCase)(h).split("_"));for(let f of u)
6
- if(f.length>1&&d.has(f))return!0;return!1},"onSimilarName"),onRename:a((y,h)=>!(0,N.isAnyObject)(
7
- y)||!(0,N.isAnyObject)(h)?!1:(0,X.isTableMetadata)(y)&&(0,X.isTableMetadata)(h)?
8
- xe(y.schema,h.schema):(0,Y.isAnySchema)(y)&&(0,Y.isAnySchema)(h)?Se(y,h):!1,"onR\
9
- ename")}),"getTableRepositoryChanges"),xe=a((e,n)=>(0,N.deepEqual)(Object.keys(e.
10
- properties),Object.keys(n.properties)),"canRenameTable"),Se=a((e,n)=>(0,N.deepEqual)(
11
- e,n,{depth:1,include:{type:!0,definitions:!0,nullable:!0,format:!0}}),"canRename\
12
- Column");var R=require("@ez4/schema"),z=require("@ez4/utils");var w=a((e,n)=>{let[y]=e.select().rawColumn("1").from("pg_constraint").where({conname:e.
13
- rawString(n)}).build();return y},"getCheckConstraintQuery"),Z=a((e,n,y)=>{let[h]=e.
14
- select().rawColumn("1").where({NOT:{exists:e.select().from(e.rawValue("informati\
15
- on_schema.columns")).rawColumn("1").where({column_name:e.rawString(y),table_name:e.
16
- rawString(n)})}}).build();return h},"getCheckColumnQuery"),ee=a((e,n)=>{let[y]=e.
17
- select().rawColumn("1").from("pg_constraint").where({convalidated:e.rawValue("tr\
18
- ue"),conname:e.rawString(n)}).build();return y},"getCheckConstraintValidatedQuer\
19
- y");var oe=require("@ez4/utils");var _=a((e,n)=>`${$(e,n)}_pk`,"getPrimaryKeyName"),Q=a((e,n)=>`${$(e,n)}_uk`,"ge\
20
- tUniqueKeyName"),E=a((e,n)=>`${$(e,n)}_sk`,"getSecondaryKeyName"),I=a((e,n)=>`${$(
21
- e,n)}_fk`,"getRelationName"),O=a((e,n)=>`${$(e,n)}_ck`,"getConstraintName"),$=a(
22
- (e,n)=>`${e}_${(0,oe.toSnakeCase)(n.replaceAll(":","_"))}`,"getName");var B;(s=>{s.prepareCreate=a((t,m,i)=>{let p={constraints:[],validations:[]};for(let c in i){
23
- let l=i[c];if((0,R.isEnumSchema)(l)||(0,R.isScalarSchema)(l)&&(0,z.isNotNullish)(
24
- l.definitions?.value)){let x=O(m,c);p.constraints.push({check:w(t,x),query:g(t,m,
25
- x,c,l).build()}),p.validations.push({check:ee(t,x),query:f(t,m,x).build(),name:x})}}
26
- return p},"prepareCreate"),s.prepareUpdate=a((t,m,i,p,c)=>{let l={constraints:[],
27
- validations:[]};for(let x in c){let{update:S,create:b,remove:P,nested:C}=c[x],U=[];
28
- if(P||S||C){let J=p.properties[x],W={...P,...S,...C};if(o(J,W)){let j=O(m,x);U.push(
29
- {query:u(t,m,j).build()})}}if(b||S||C){let J=i.properties[x],W={...b,...S,...C};
30
- if(o(J,W)){let j=O(m,x),ue=U.length;U.push({...!ue&&{check:w(t,j)},query:g(t,m,j,
31
- x,J).build()}),l.validations.push({check:ee(t,j),query:f(t,m,j).build(),name:j})}}
32
- l.constraints.push(...U)}return l},"prepareUpdate"),s.prepareRenameTable=a((t,m,i,p)=>{
33
- let c=[];for(let l in p){let x=p[l];if(r(x)){let S=O(m,l),b=O(i,l),P=t.table(i).
34
- alter().existing().constraint(S).rename(b);c.push({check:w(t,b),query:P.build()})}}
35
- return c},"prepareRenameTable"),s.prepareRenameColumns=a((t,m,i,p)=>{let c=[];for(let l in p){
36
- let x=p[l],S=i[x];if(r(S)){let b=O(m,l),P=O(m,x),C=t.table(m).alter().existing().
37
- constraint(b).rename(P);c.push({check:w(t,P),query:C.build()})}}return c},"prepa\
38
- reRenameColumns"),s.prepareDelete=a((t,m,i)=>{let p=[];for(let c in i){let l=i[c];
39
- if(r(l)){let x=O(m,c);p.push({query:u(t,m,x).build()})}}return p},"prepareDelete");
40
- let u=a((t,m,i)=>t.table(m).alter().existing().constraint(i).drop().existing(),"\
41
- getDeleteQuery"),f=a((t,m,i)=>t.table(m).alter().existing().constraint(i).validate(),
42
- "getValidationQuery"),g=a((t,m,i,p,c)=>{let l=t.table(m).alter().existing().constraint(
43
- i);switch(c.type){case R.SchemaType.Enum:{let x=c.options.map(({value:b})=>`${b}`);
44
- l.check({[p]:{isIn:x}}).validate(!1);break}case R.SchemaType.Boolean:case R.SchemaType.
45
- Number:case R.SchemaType.String:{l.check({[p]:{equal:c.definitions?.value}}).validate(
46
- !1);break}}return l},"getCreateQuery"),r=a(t=>(0,R.isEnumSchema)(t)||(0,R.isScalarSchema)(
47
- t)&&(0,z.isNotNullish)(t.definitions?.value),"isConstrainedSchema"),o=a((t,m)=>{
48
- switch(t.type){case R.SchemaType.Boolean:case R.SchemaType.Number:case R.SchemaType.
49
- String:return(0,z.isNotNullish)(m.definitions?.value)||(0,z.isNotNullish)(m.definitions?.
50
- update?.value);case R.SchemaType.Enum:return(0,z.isNotNullish)(m.options)}return!1},
51
- "isConstrainedChange")})(B||={});var se=require("@ez4/pgclient/library"),ie=require("@ez4/schema"),te=require("@ez4/database");var T;(g=>{g.prepareCreate=a((r,o,s,t)=>{let m=[];for(let i in t){let p=t[i];if(d(
52
- p))continue;let{[p.targetColumn]:c}=s.properties,l=I(o,i),x=!!(0,ie.isNullishSchema)(
53
- c);m.push({check:w(r,l),query:f(r,o,l,p,x).build()})}return m},"prepareCreate"),
54
- g.prepareUpdate=a((r,o,s,t)=>{let m=[];for(let i in s){let p=s[i];if(d(p))continue;
55
- let c=t[p.targetColumn]?.update,l=c?.optional??c?.nullable;if(l===void 0)continue;
56
- let x=I(o,i);m.push({query:u(r,o,x).build()},{query:f(r,o,x,p,l).build()})}return m},
57
- "prepareUpdate"),g.prepareRename=a((r,o,s,t)=>{let m=[];for(let i in t){let p=t[i];
58
- if(d(p))continue;let c=I(o,i),l=I(s,i),x=r.table(s).alter().existing().constraint(
59
- c).rename(l);m.push({check:w(r,l),query:x.build()})}return m},"prepareRename"),g.
60
- prepareDelete=a((r,o,s)=>{let t=[];for(let m in s){let i=s[m];if(d(i))continue;let p=I(
61
- o,m);t.push({query:u(r,o,p).build()})}return t},"prepareDelete");let d=a(r=>{let{
62
- sourceIndex:o,targetIndex:s}=r;return!o||o===te.Index.Secondary||s===te.Index.Primary},
63
- "isNotRealRelation"),u=a((r,o,s)=>r.table(o).alter().existing().constraint(s).drop().
64
- existing(),"getDeleteQuery"),f=a((r,o,s,t,m)=>{let{sourceTable:i,sourceColumn:p,
65
- targetColumn:c}=t,l=(0,se.getTableName)(i),x=r.table(o).alter().existing().constraint(
66
- s),S=x.foreign(c,l,[p]).validate(!1);return m?S.delete().null():S.delete().cascade(),
67
- S.update().cascade(),x},"getCreateQuery")})(T||={});var V=require("@ez4/schema"),k=require("@ez4/database");var A;(f=>{f.prepareCreate=a((g,r,o,s)=>{let t={constraints:[],validations:[],indexes:[]};
68
- for(let m in s){let{columns:i,type:p,name:c}=s[m];switch(p){default:throw new Error(
69
- "Unsupported index type.");case k.Index.Primary:{let l=_(r,c);t.constraints.push(
70
- {check:w(g,l),query:g.table(r).alter().existing().constraint(l).primary(i).build()});
71
- break}case k.Index.Unique:{let l=Q(r,c),x=u(i,o);t.indexes.push({query:g.index(l).
72
- create(r,i).type(x).unique().concurrent().missing().build()}),t.validations.push(
73
- {query:(0,f.getValidationQuery)(g,l),name:l});break}case k.Index.Secondary:{let l=E(
74
- r,c),x=u(i,o);t.indexes.push({query:g.index(l).create(r,i).type(x).concurrent().
75
- missing().build()}),t.validations.push({query:(0,f.getValidationQuery)(g,l),name:l});
76
- break}}}return t},"prepareCreate"),f.prepareUpdate=a((g,r,o,s,t,m)=>{let i={constraints:[],
77
- validations:[],indexes:[]};for(let p in m){let{update:c,create:l,remove:x}=m[p];
78
- if(x||c){let S=(0,f.prepareDelete)(g,r,{[p]:s[p]});i.constraints.push(...S.constraints),
79
- i.indexes.push(...S.indexes)}if(l||c){let S=(0,f.prepareCreate)(g,r,o,{[p]:t[p]});
80
- i.constraints.push(...S.constraints),i.indexes.push(...S.indexes)}}return i},"pr\
81
- epareUpdate"),f.prepareRename=a((g,r,o,s)=>{let t={validations:[],constraints:[],
82
- indexes:[]};for(let m in s){let{type:i,name:p}=s[m];switch(i){default:throw new Error(
83
- "Unsupported index type.");case k.Index.Primary:{let c=_(r,p),l=_(o,p);t.constraints.
84
- push({check:w(g,l),query:g.table(o).alter().existing().constraint(c).rename(l).build()});
85
- break}case k.Index.Unique:{let c=Q(r,p),l=Q(o,p);t.indexes.push({query:g.index(c).
86
- rename(l).existing().build()});break}case k.Index.Secondary:{let c=E(r,p),l=E(o,
87
- p);t.indexes.push({query:g.index(c).rename(l).existing().build()});break}}}return t},
88
- "prepareRename"),f.prepareDelete=a((g,r,o)=>{let s={validations:[],constraints:[],
89
- indexes:[]};for(let t in o){let{type:m,name:i}=o[t];switch(m){default:throw new Error(
90
- "Unsupported index type.");case k.Index.Primary:{let p=_(r,i),c=g.table(r).alter().
91
- existing().constraint(p).drop().existing();s.constraints.push({query:c.build()});
92
- break}case k.Index.Unique:{let p=Q(r,i),c=g.index(p).drop().existing().concurrent();
93
- s.indexes.push({query:c.build()});break}case k.Index.Secondary:{let p=E(r,i),c=g.
94
- index(p).drop().existing().concurrent();s.indexes.push({query:c.build()});break}}}
95
- return s},"prepareDelete"),f.getValidationQuery=a((g,r)=>{let[o]=g.select().rawColumn(
96
- "1").from("pg_index").where({indexrelid:g.rawValue(`${g.rawString(r).build()}::r\
97
- egclass`),indisvalid:g.rawValue("false"),indisready:g.rawValue("true")}).build();
98
- return o},"getValidationQuery");let u=a((g,r)=>{if(g.length===1){let[o]=g;switch(r.
99
- properties[o]?.type){case V.SchemaType.Object:case V.SchemaType.Union:case V.SchemaType.
100
- Array:case V.SchemaType.Tuple:return"GIN"}}return"BTREE"},"getIndexType")})(A||=
101
- {});var ne=require("@ez4/database");var q=require("@ez4/schema"),ae=require("@ez4/utils");var K=a(e=>!!(e.nullable||e.optional),"isOptionalColumn"),M=a((e,n)=>{if((0,q.isScalarSchema)(
102
- e)||(0,q.isObjectSchema)(e)||(0,q.isArraySchema)(e)||(0,q.isTupleSchema)(e)){let{
103
- definitions:y}=e;switch(typeof y?.default){case"boolean":case"number":return`${y.
104
- default}`;case"string":return`'${y.default}'`;case"object":return`'${JSON.stringify(
105
- y.default)}'`}}if((0,q.isEnumSchema)(e)){let{definitions:y}=e;if(y?.default)return`\
106
- '${y.default}'`}if((0,q.isStringSchema)(e)&&n)switch(e.format){case"date-time":case"\
107
- date":case"time":return"now()";case"uuid":return"gen_random_uuid()"}if(K(e))return"\
108
- null"},"getColumnDefault"),L=a((e,n)=>{switch(e.type){case q.SchemaType.Array:case q.SchemaType.
109
- Object:case q.SchemaType.Reference:case q.SchemaType.Union:case q.SchemaType.Tuple:
110
- return"jsonb";case q.SchemaType.Boolean:return"boolean";case q.SchemaType.Enum:return"\
111
- text";case q.SchemaType.Number:return qe(e,n);case q.SchemaType.String:return be(
112
- e)}},"getColumnType"),qe=a((e,n)=>e.format==="integer"?n?"bigserial":"bigint":"d\
113
- ecimal","getColumNumberType"),be=a(e=>{switch(e.format){case"uuid":case"time":case"\
114
- date":return e.format;case"date-time":return"timestamptz";default:let n=e.definitions?.
115
- maxLength;return(0,ae.isAnyNumber)(n)?`varchar(${n})`:"text"}},"getColumnTextTyp\
116
- e");var D;(d=>(d.prepareCreate=a((u,f,g,r)=>{let o=u.table(f).alter().existing();for(let s in r){
117
- let t=r[s],i=g[s]?.type===ne.Index.Primary,p=!K(t),c=L(t,i),l=M(t,i);o.add(s,c,p,
118
- l).missing()}return{query:o.build()}},"prepareCreate"),d.prepareUpdate=a((u,f,g,r,o)=>{
119
- let s=[];for(let t in o){let{create:m,update:i,nested:p,remove:c}=o[t],l=g.properties[t],
120
- S=r[t]?.type===ne.Index.Primary,b=u.table(f).alter().existing().column(t);if(m){
121
- let P=m.definitions?.default,C=m?.nullable;P!==void 0&&b.default(M(l,S)),!S&&C!==
122
- void 0&&b.optional(C)}if(i||p){let P=p?.definitions?.update?.default,C=i?.nullable;
123
- i?.type!==void 0&&b.type(L(l,S)),P!==void 0&&b.default(M(l,S)),!S&&C!==void 0&&b.
124
- optional(C)}if(c){let P=c.definitions?.default,C=c?.nullable;P!==void 0&&b.default(
125
- null),!S&&C!==void 0&&b.optional(C)}b.empty||s.push({check:Z(u,f,t),query:b.build()})}
126
- return s},"prepareUpdate"),d.prepareRename=a((u,f,g)=>{let r=[];for(let o in g){
127
- let s=g[o],t=u.table(f).alter().existing().rename(o,s);r.push({check:Z(u,f,o),query:t.
128
- build()})}return r},"prepareRename"),d.prepareDelete=a((u,f,g)=>{let r=u.table(f).
129
- alter().existing();for(let o in g)r.drop(o).existing();return{query:r.build()}},
130
- "prepareDelete")))(D||={});var ce=require("@ez4/database");var G;(h=>(h.prepareCreate=a((d,u,f,g)=>{let r=d.table(u).create().missing();for(let o in f.
131
- properties){let s=f.properties[o],m=g[o]?.type===ce.Index.Primary,i=!K(s),p=L(s,
132
- m),c=M(s,m);r.column(o,p,i,c).missing()}return{query:r.build()}},"prepareCreate"),
133
- h.prepareRename=a((d,u,f)=>({query:d.table(u).rename(f).existing().build()}),"pr\
134
- epareRename"),h.prepareDelete=a((d,u)=>({query:d.table(u).drop().existing().cascade().
135
- build()}),"prepareDelete")))(G||={});var me=a(e=>{let n=new H.SqlBuilder,y={tables:[],constraints:[],validations:[],relations:[],
136
- indexes:[]};for(let h in e){let{name:d,schema:u,indexes:f,relations:g}=e[h];y.tables.
137
- push(G.prepareCreate(n,d,u,f)),y.relations.push(...T.prepareCreate(n,d,u,g)),v(y,
138
- B.prepareCreate(n,d,u.properties)),v(y,A.prepareCreate(n,d,u,f))}return y},"getC\
139
- reateQueries"),Ce=a((e,n)=>{let y=re(e,n),h=new H.SqlBuilder,d={tables:[],constraints:[],
140
- validations:[],relations:[],indexes:[]};if(y.create&&v(d,me(y.create)),y.rename)
141
- for(let u in y.rename){let f=y.rename[u],g=e[f].indexes,r=e[f].relations,o=e[f].
142
- schema;d.tables.push(G.prepareRename(h,u,f)),d.constraints.push(...B.prepareRenameTable(
143
- h,u,f,o.properties)),d.relations.push(...T.prepareRename(h,u,f,r)),v(d,A.prepareRename(
144
- h,u,f,g))}if(y.nested)for(let u in y.nested){let{nested:f}=y.nested[u];if(!f)continue;
145
- let{schema:g,relations:r,indexes:o}=f,s=g?.nested?.properties,t=e[u].relations,m=n[u].
146
- indexes,i=e[u].indexes,p=n[u].schema,c=e[u].schema;s?.create&&(d.tables.push(D.prepareCreate(
147
- h,u,i,s.create)),v(d,B.prepareCreate(h,u,s.create))),s?.nested&&(d.tables.push(...D.
148
- prepareUpdate(h,u,c,i,s.nested)),v(d,B.prepareUpdate(h,u,c,p,s.nested)),d.relations.
149
- push(...T.prepareUpdate(h,u,t,s.nested))),s?.rename&&(d.tables.push(...D.prepareRename(
150
- h,u,s.rename)),d.constraints.push(...B.prepareRenameColumns(h,u,c.properties,s.rename))),
151
- s?.remove&&(d.tables.push(D.prepareDelete(h,u,s.remove)),d.constraints.push(...B.
152
- prepareDelete(h,u,s.remove))),o?.create&&v(d,A.prepareCreate(h,u,c,o.create)),o?.
153
- nested&&v(d,A.prepareUpdate(h,u,c,m,i,o.nested)),o?.remove&&v(d,A.prepareDelete(
154
- h,u,o.remove)),r?.create&&d.relations.push(...T.prepareCreate(h,u,c,r.create)),r?.
155
- remove&&d.relations.push(...T.prepareDelete(h,u,r.remove))}return y.remove&&v(d,
156
- pe(y.remove)),d},"getUpdateQueries"),pe=a(e=>{let n=new H.SqlBuilder,y={tables:[],
157
- constraints:[],validations:[],relations:[],indexes:[]};for(let h in e){let{name:d}=e[h];
158
- y.tables.push(G.prepareDelete(n,d))}return y},"getDeleteQueries"),v=a((e,n)=>{n.
159
- tables&&e.tables.push(...n.tables),n.constraints&&e.constraints.push(...n.constraints),
160
- n.validations&&e.validations.push(...n.validations),n.relations&&e.relations.push(
161
- ...n.relations),n.indexes&&e.indexes.push(...n.indexes)},"combineQueries");0&&(module.exports={getCreateQueries,getDeleteQueries,getUpdateQueries});
1
+ var F=Object.defineProperty;var le=Object.getOwnPropertyDescriptor;var de=Object.getOwnPropertyNames;var ge=Object.prototype.hasOwnProperty;var a=(e,n)=>F(e,"name",{value:n,configurable:!0});var ye=(e,n)=>{for(var y in n)F(e,y,{get:n[y],enumerable:!0})},fe=(e,n,y,h)=>{if(n&&typeof n=="object"||typeof n=="function")for(let d of de(n))!ge.call(e,d)&&d!==y&&F(e,d,{get:()=>n[d],enumerable:!(h=le(n,d))||h.enumerable});return e};var he=e=>fe(F({},"__esModule",{value:!0}),e);var Re={};ye(Re,{getCreateQueries:()=>me,getDeleteQueries:()=>pe,getUpdateQueries:()=>Ce});module.exports=he(Re);var H=require("@ez4/pgsql");var N=require("@ez4/utils"),X=require("@ez4/pgclient/library"),Y=require("@ez4/schema");var re=a((e,n)=>(0,N.deepCompareObject)(e,n,{onSimilarName:a((y,h)=>{let d=new Set((0,N.toSnakeCase)(y).split("_")),u=new Set((0,N.toSnakeCase)(h).split("_"));for(let f of u)if(f.length>1&&d.has(f))return!0;return!1},"onSimilarName"),onRename:a((y,h)=>!(0,N.isAnyObject)(y)||!(0,N.isAnyObject)(h)?!1:(0,X.isTableMetadata)(y)&&(0,X.isTableMetadata)(h)?xe(y.schema,h.schema):(0,Y.isAnySchema)(y)&&(0,Y.isAnySchema)(h)?Se(y,h):!1,"onRename")}),"getTableRepositoryChanges"),xe=a((e,n)=>(0,N.deepEqual)(Object.keys(e.properties),Object.keys(n.properties)),"canRenameTable"),Se=a((e,n)=>(0,N.deepEqual)(e,n,{depth:1,include:{type:!0,definitions:!0,nullable:!0,format:!0}}),"canRenameColumn");var R=require("@ez4/schema"),z=require("@ez4/utils");var w=a((e,n)=>{let[y]=e.select().rawColumn(1).from("pg_constraint").where({conname:e.rawString(n)}).build();return y},"getCheckConstraintQuery"),Z=a((e,n,y)=>{let[h]=e.select().rawColumn(1).where({NOT:{exists:e.select().from(e.rawValue("information_schema.columns")).rawColumn(1).where({column_name:e.rawString(y),table_name:e.rawString(n)})}}).build();return h},"getCheckColumnQuery"),ee=a((e,n)=>{let[y]=e.select().rawColumn(1).from("pg_constraint").where({convalidated:e.rawValue("true"),conname:e.rawString(n)}).build();return y},"getCheckConstraintValidatedQuery");var oe=require("@ez4/utils");var _=a((e,n)=>`${$(e,n)}_pk`,"getPrimaryKeyName"),Q=a((e,n)=>`${$(e,n)}_uk`,"getUniqueKeyName"),E=a((e,n)=>`${$(e,n)}_sk`,"getSecondaryKeyName"),I=a((e,n)=>`${$(e,n)}_fk`,"getRelationName"),O=a((e,n)=>`${$(e,n)}_ck`,"getConstraintName"),$=a((e,n)=>`${e}_${(0,oe.toSnakeCase)(n.replaceAll(":","_"))}`,"getName");var B;(s=>{s.prepareCreate=a((t,m,i)=>{let p={constraints:[],validations:[]};for(let c in i){let l=i[c];if((0,R.isEnumSchema)(l)||(0,R.isScalarSchema)(l)&&(0,z.isNotNullish)(l.definitions?.value)){let x=O(m,c);p.constraints.push({check:w(t,x),query:g(t,m,x,c,l).build()}),p.validations.push({check:ee(t,x),query:f(t,m,x).build(),name:x})}}return p},"prepareCreate"),s.prepareUpdate=a((t,m,i,p,c)=>{let l={constraints:[],validations:[]};for(let x in c){let{update:S,create:b,remove:P,nested:C}=c[x],U=[];if(P||S||C){let J=p.properties[x],W={...P,...S,...C};if(o(J,W)){let j=O(m,x);U.push({query:u(t,m,j).build()})}}if(b||S||C){let J=i.properties[x],W={...b,...S,...C};if(o(J,W)){let j=O(m,x),ue=U.length;U.push({...!ue&&{check:w(t,j)},query:g(t,m,j,x,J).build()}),l.validations.push({check:ee(t,j),query:f(t,m,j).build(),name:j})}}l.constraints.push(...U)}return l},"prepareUpdate"),s.prepareRenameTable=a((t,m,i,p)=>{let c=[];for(let l in p){let x=p[l];if(r(x)){let S=O(m,l),b=O(i,l),P=t.table(i).alter().existing().constraint(S).rename(b);c.push({check:w(t,b),query:P.build()})}}return c},"prepareRenameTable"),s.prepareRenameColumns=a((t,m,i,p)=>{let c=[];for(let l in p){let x=p[l],S=i[x];if(r(S)){let b=O(m,l),P=O(m,x),C=t.table(m).alter().existing().constraint(b).rename(P);c.push({check:w(t,P),query:C.build()})}}return c},"prepareRenameColumns"),s.prepareDelete=a((t,m,i)=>{let p=[];for(let c in i){let l=i[c];if(r(l)){let x=O(m,c);p.push({query:u(t,m,x).build()})}}return p},"prepareDelete");let u=a((t,m,i)=>t.table(m).alter().existing().constraint(i).drop().existing(),"getDeleteQuery"),f=a((t,m,i)=>t.table(m).alter().existing().constraint(i).validate(),"getValidationQuery"),g=a((t,m,i,p,c)=>{let l=t.table(m).alter().existing().constraint(i);switch(c.type){case R.SchemaType.Enum:{let x=c.options.map(({value:b})=>`${b}`);l.check({[p]:{isIn:x}}).validate(!1);break}case R.SchemaType.Boolean:case R.SchemaType.Number:case R.SchemaType.String:{l.check({[p]:{equal:c.definitions?.value}}).validate(!1);break}}return l},"getCreateQuery"),r=a(t=>(0,R.isEnumSchema)(t)||(0,R.isScalarSchema)(t)&&(0,z.isNotNullish)(t.definitions?.value),"isConstrainedSchema"),o=a((t,m)=>{switch(t.type){case R.SchemaType.Boolean:case R.SchemaType.Number:case R.SchemaType.String:return(0,z.isNotNullish)(m.definitions?.value)||(0,z.isNotNullish)(m.definitions?.update?.value);case R.SchemaType.Enum:return(0,z.isNotNullish)(m.options)}return!1},"isConstrainedChange")})(B||={});var se=require("@ez4/pgclient/utils"),ie=require("@ez4/schema"),te=require("@ez4/database");var T;(g=>{g.prepareCreate=a((r,o,s,t)=>{let m=[];for(let i in t){let p=t[i];if(d(p))continue;let{[p.targetColumn]:c}=s.properties,l=I(o,i),x=!!(0,ie.isNullishSchema)(c);m.push({check:w(r,l),query:f(r,o,l,p,x).build()})}return m},"prepareCreate"),g.prepareUpdate=a((r,o,s,t)=>{let m=[];for(let i in s){let p=s[i];if(d(p))continue;let c=t[p.targetColumn]?.update,l=c?.optional??c?.nullable;if(l===void 0)continue;let x=I(o,i);m.push({query:u(r,o,x).build()},{query:f(r,o,x,p,l).build()})}return m},"prepareUpdate"),g.prepareRename=a((r,o,s,t)=>{let m=[];for(let i in t){let p=t[i];if(d(p))continue;let c=I(o,i),l=I(s,i),x=r.table(s).alter().existing().constraint(c).rename(l);m.push({check:w(r,l),query:x.build()})}return m},"prepareRename"),g.prepareDelete=a((r,o,s)=>{let t=[];for(let m in s){let i=s[m];if(d(i))continue;let p=I(o,m);t.push({query:u(r,o,p).build()})}return t},"prepareDelete");let d=a(r=>{let{sourceIndex:o,targetIndex:s}=r;return!o||o===te.Index.Secondary||s===te.Index.Primary},"isNotRealRelation"),u=a((r,o,s)=>r.table(o).alter().existing().constraint(s).drop().existing(),"getDeleteQuery"),f=a((r,o,s,t,m)=>{let{sourceTable:i,sourceColumn:p,targetColumn:c}=t,l=(0,se.getTableName)(i),x=r.table(o).alter().existing().constraint(s),S=x.foreign(c,l,[p]).validate(!1);return m?S.delete().null():S.delete().cascade(),S.update().cascade(),x},"getCreateQuery")})(T||={});var V=require("@ez4/schema"),k=require("@ez4/database");var A;(f=>{f.prepareCreate=a((g,r,o,s)=>{let t={constraints:[],validations:[],indexes:[]};for(let m in s){let{columns:i,type:p,name:c}=s[m];switch(p){default:throw new Error("Unsupported index type.");case k.Index.Primary:{let l=_(r,c);t.constraints.push({check:w(g,l),query:g.table(r).alter().existing().constraint(l).primary(i).build()});break}case k.Index.Unique:{let l=Q(r,c),x=u(i,o);t.indexes.push({query:g.index(l).create(r,i).type(x).unique().concurrent().missing().build()}),t.validations.push({query:(0,f.getValidationQuery)(g,l),name:l});break}case k.Index.Secondary:{let l=E(r,c),x=u(i,o);t.indexes.push({query:g.index(l).create(r,i).type(x).concurrent().missing().build()}),t.validations.push({query:(0,f.getValidationQuery)(g,l),name:l});break}}}return t},"prepareCreate"),f.prepareUpdate=a((g,r,o,s,t,m)=>{let i={constraints:[],validations:[],indexes:[]};for(let p in m){let{update:c,create:l,remove:x}=m[p];if(x||c){let S=(0,f.prepareDelete)(g,r,{[p]:s[p]});i.constraints.push(...S.constraints),i.indexes.push(...S.indexes)}if(l||c){let S=(0,f.prepareCreate)(g,r,o,{[p]:t[p]});i.constraints.push(...S.constraints),i.indexes.push(...S.indexes)}}return i},"prepareUpdate"),f.prepareRename=a((g,r,o,s)=>{let t={validations:[],constraints:[],indexes:[]};for(let m in s){let{type:i,name:p}=s[m];switch(i){default:throw new Error("Unsupported index type.");case k.Index.Primary:{let c=_(r,p),l=_(o,p);t.constraints.push({check:w(g,l),query:g.table(o).alter().existing().constraint(c).rename(l).build()});break}case k.Index.Unique:{let c=Q(r,p),l=Q(o,p);t.indexes.push({query:g.index(c).rename(l).existing().build()});break}case k.Index.Secondary:{let c=E(r,p),l=E(o,p);t.indexes.push({query:g.index(c).rename(l).existing().build()});break}}}return t},"prepareRename"),f.prepareDelete=a((g,r,o)=>{let s={validations:[],constraints:[],indexes:[]};for(let t in o){let{type:m,name:i}=o[t];switch(m){default:throw new Error("Unsupported index type.");case k.Index.Primary:{let p=_(r,i),c=g.table(r).alter().existing().constraint(p).drop().existing();s.constraints.push({query:c.build()});break}case k.Index.Unique:{let p=Q(r,i),c=g.index(p).drop().existing().concurrent();s.indexes.push({query:c.build()});break}case k.Index.Secondary:{let p=E(r,i),c=g.index(p).drop().existing().concurrent();s.indexes.push({query:c.build()});break}}}return s},"prepareDelete"),f.getValidationQuery=a((g,r)=>{let[o]=g.select().rawColumn(1).from("pg_index").where({indexrelid:g.rawValue(`${g.rawString(r).build()}::regclass`),indisvalid:g.rawValue("false"),indisready:g.rawValue("true")}).build();return o},"getValidationQuery");let u=a((g,r)=>{if(g.length===1){let[o]=g;switch(r.properties[o]?.type){case V.SchemaType.Object:case V.SchemaType.Union:case V.SchemaType.Array:case V.SchemaType.Tuple:return"GIN"}}return"BTREE"},"getIndexType")})(A||={});var ne=require("@ez4/database");var q=require("@ez4/schema"),ae=require("@ez4/utils");var K=a(e=>!!(e.nullable||e.optional),"isOptionalColumn"),M=a((e,n)=>{if((0,q.isScalarSchema)(e)||(0,q.isObjectSchema)(e)||(0,q.isArraySchema)(e)||(0,q.isTupleSchema)(e)){let{definitions:y}=e;switch(typeof y?.default){case"boolean":case"number":return`${y.default}`;case"string":return`'${y.default}'`;case"object":return`'${JSON.stringify(y.default)}'`}}if((0,q.isEnumSchema)(e)){let{definitions:y}=e;if(y?.default)return`'${y.default}'`}if((0,q.isStringSchema)(e)&&n)switch(e.format){case"date-time":case"date":case"time":return"now()";case"uuid":return"gen_random_uuid()"}if(K(e))return"null"},"getColumnDefault"),L=a((e,n)=>{switch(e.type){case q.SchemaType.Array:case q.SchemaType.Object:case q.SchemaType.Reference:case q.SchemaType.Union:case q.SchemaType.Tuple:return"jsonb";case q.SchemaType.Boolean:return"boolean";case q.SchemaType.Enum:return"text";case q.SchemaType.Number:return qe(e,n);case q.SchemaType.String:return be(e)}},"getColumnType"),qe=a((e,n)=>e.format==="integer"?n?"bigserial":"bigint":"decimal","getColumNumberType"),be=a(e=>{switch(e.format){case"uuid":case"time":case"date":return e.format;case"date-time":return"timestamptz";default:let n=e.definitions?.maxLength;return(0,ae.isAnyNumber)(n)?`varchar(${n})`:"text"}},"getColumnTextType");var D;(d=>(d.prepareCreate=a((u,f,g,r)=>{let o=u.table(f).alter().existing();for(let s in r){let t=r[s],i=g[s]?.type===ne.Index.Primary,p=!K(t),c=L(t,i),l=M(t,i);o.add(s,c,p,l).missing()}return{query:o.build()}},"prepareCreate"),d.prepareUpdate=a((u,f,g,r,o)=>{let s=[];for(let t in o){let{create:m,update:i,nested:p,remove:c}=o[t],l=g.properties[t],S=r[t]?.type===ne.Index.Primary,b=u.table(f).alter().existing().column(t);if(m){let P=m.definitions?.default,C=m?.nullable;P!==void 0&&b.default(M(l,S)),!S&&C!==void 0&&b.optional(C)}if(i||p){let P=p?.definitions?.update?.default,C=i?.nullable;i?.type!==void 0&&b.type(L(l,S)),P!==void 0&&b.default(M(l,S)),!S&&C!==void 0&&b.optional(C)}if(c){let P=c.definitions?.default,C=c?.nullable;P!==void 0&&b.default(null),!S&&C!==void 0&&b.optional(C)}b.empty||s.push({check:Z(u,f,t),query:b.build()})}return s},"prepareUpdate"),d.prepareRename=a((u,f,g)=>{let r=[];for(let o in g){let s=g[o],t=u.table(f).alter().existing().rename(o,s);r.push({check:Z(u,f,o),query:t.build()})}return r},"prepareRename"),d.prepareDelete=a((u,f,g)=>{let r=u.table(f).alter().existing();for(let o in g)r.drop(o).existing();return{query:r.build()}},"prepareDelete")))(D||={});var ce=require("@ez4/database");var G;(h=>(h.prepareCreate=a((d,u,f,g)=>{let r=d.table(u).create().missing();for(let o in f.properties){let s=f.properties[o],m=g[o]?.type===ce.Index.Primary,i=!K(s),p=L(s,m),c=M(s,m);r.column(o,p,i,c).missing()}return{query:r.build()}},"prepareCreate"),h.prepareRename=a((d,u,f)=>({query:d.table(u).rename(f).existing().build()}),"prepareRename"),h.prepareDelete=a((d,u)=>({query:d.table(u).drop().existing().cascade().build()}),"prepareDelete")))(G||={});var me=a(e=>{let n=new H.SqlBuilder,y={tables:[],constraints:[],validations:[],relations:[],indexes:[]};for(let h in e){let{name:d,schema:u,indexes:f,relations:g}=e[h];y.tables.push(G.prepareCreate(n,d,u,f)),y.relations.push(...T.prepareCreate(n,d,u,g)),v(y,B.prepareCreate(n,d,u.properties)),v(y,A.prepareCreate(n,d,u,f))}return y},"getCreateQueries"),Ce=a((e,n)=>{let y=re(e,n),h=new H.SqlBuilder,d={tables:[],constraints:[],validations:[],relations:[],indexes:[]};if(y.create&&v(d,me(y.create)),y.rename)for(let u in y.rename){let f=y.rename[u],g=e[f].indexes,r=e[f].relations,o=e[f].schema;d.tables.push(G.prepareRename(h,u,f)),d.constraints.push(...B.prepareRenameTable(h,u,f,o.properties)),d.relations.push(...T.prepareRename(h,u,f,r)),v(d,A.prepareRename(h,u,f,g))}if(y.nested)for(let u in y.nested){let{nested:f}=y.nested[u];if(!f)continue;let{schema:g,relations:r,indexes:o}=f,s=g?.nested?.properties,t=e[u].relations,m=n[u].indexes,i=e[u].indexes,p=n[u].schema,c=e[u].schema;s?.create&&(d.tables.push(D.prepareCreate(h,u,i,s.create)),v(d,B.prepareCreate(h,u,s.create))),s?.nested&&(d.tables.push(...D.prepareUpdate(h,u,c,i,s.nested)),v(d,B.prepareUpdate(h,u,c,p,s.nested)),d.relations.push(...T.prepareUpdate(h,u,t,s.nested))),s?.rename&&(d.tables.push(...D.prepareRename(h,u,s.rename)),d.constraints.push(...B.prepareRenameColumns(h,u,c.properties,s.rename))),s?.remove&&(d.tables.push(D.prepareDelete(h,u,s.remove)),d.constraints.push(...B.prepareDelete(h,u,s.remove))),o?.create&&v(d,A.prepareCreate(h,u,c,o.create)),o?.nested&&v(d,A.prepareUpdate(h,u,c,m,i,o.nested)),o?.remove&&v(d,A.prepareDelete(h,u,o.remove)),r?.create&&d.relations.push(...T.prepareCreate(h,u,c,r.create)),r?.remove&&d.relations.push(...T.prepareDelete(h,u,r.remove))}return y.remove&&v(d,pe(y.remove)),d},"getUpdateQueries"),pe=a(e=>{let n=new H.SqlBuilder,y={tables:[],constraints:[],validations:[],relations:[],indexes:[]};for(let h in e){let{name:d}=e[h];y.tables.push(G.prepareDelete(n,d))}return y},"getDeleteQueries"),v=a((e,n)=>{n.tables&&e.tables.push(...n.tables),n.constraints&&e.constraints.push(...n.constraints),n.validations&&e.validations.push(...n.validations),n.relations&&e.relations.push(...n.relations),n.indexes&&e.indexes.push(...n.indexes)},"combineQueries");0&&(module.exports={getCreateQueries,getDeleteQueries,getUpdateQueries});
162
2
  //# sourceMappingURL=main.cjs.map
package/dist/main.mjs CHANGED
@@ -1,154 +1,2 @@
1
- var ce=Object.defineProperty;var i=(e,c)=>ce(e,"name",{value:c,configurable:!0});import{SqlBuilder as W}from"@ez4/pgsql";import{deepEqual as te,deepCompareObject as me,isAnyObject as X,toSnakeCase as Y}from"@ez4/utils";
2
- import{isTableMetadata as Z}from"@ez4/pgclient/library";import{isAnySchema as ee}from"@ez4/schema";var ne=i((e,c)=>me(e,c,{onSimilarName:i((f,h)=>{let g=new Set(Y(f).split("_")),u=new Set(
3
- Y(h).split("_"));for(let y of u)if(y.length>1&&g.has(y))return!0;return!1},"onSi\
4
- milarName"),onRename:i((f,h)=>!X(f)||!X(h)?!1:Z(f)&&Z(h)?pe(f.schema,h.schema):ee(
5
- f)&&ee(h)?ue(f,h):!1,"onRename")}),"getTableRepositoryChanges"),pe=i((e,c)=>te(Object.
6
- keys(e.properties),Object.keys(c.properties)),"canRenameTable"),ue=i((e,c)=>te(e,
7
- c,{depth:1,include:{type:!0,definitions:!0,nullable:!0,format:!0}}),"canRenameCo\
8
- lumn");import{isEnumSchema as re,isScalarSchema as oe,SchemaType as v}from"@ez4/schema";
9
- import{isNotNullish as E}from"@ez4/utils";var R=i((e,c)=>{let[f]=e.select().rawColumn("1").from("pg_constraint").where({conname:e.
10
- rawString(c)}).build();return f},"getCheckConstraintQuery"),F=i((e,c,f)=>{let[h]=e.
11
- select().rawColumn("1").where({NOT:{exists:e.select().from(e.rawValue("informati\
12
- on_schema.columns")).rawColumn("1").where({column_name:e.rawString(f),table_name:e.
13
- rawString(c)})}}).build();return h},"getCheckColumnQuery"),H=i((e,c)=>{let[f]=e.
14
- select().rawColumn("1").from("pg_constraint").where({convalidated:e.rawValue("tr\
15
- ue"),conname:e.rawString(c)}).build();return f},"getCheckConstraintValidatedQuer\
16
- y");import{toSnakeCase as le}from"@ez4/utils";var D=i((e,c)=>`${Q(e,c)}_pk`,"getPrimaryKeyName"),U=i((e,c)=>`${Q(e,c)}_uk`,"ge\
17
- tUniqueKeyName"),_=i((e,c)=>`${Q(e,c)}_sk`,"getSecondaryKeyName"),A=i((e,c)=>`${Q(
18
- e,c)}_fk`,"getRelationName"),N=i((e,c)=>`${Q(e,c)}_ck`,"getConstraintName"),Q=i(
19
- (e,c)=>`${e}_${le(c.replaceAll(":","_"))}`,"getName");var O;(o=>{o.prepareCreate=i((t,m,s)=>{let p={constraints:[],validations:[]};for(let a in s){
20
- let l=s[a];if(re(l)||oe(l)&&E(l.definitions?.value)){let x=N(m,a);p.constraints.
21
- push({check:R(t,x),query:d(t,m,x,a,l).build()}),p.validations.push({check:H(t,x),
22
- query:y(t,m,x).build(),name:x})}}return p},"prepareCreate"),o.prepareUpdate=i((t,m,s,p,a)=>{
23
- let l={constraints:[],validations:[]};for(let x in a){let{update:S,create:q,remove:C,
24
- nested:b}=a[x],M=[];if(C||S||b){let L=p.properties[x],J={...C,...S,...b};if(r(L,
25
- J)){let B=N(m,x);M.push({query:u(t,m,B).build()})}}if(q||S||b){let L=s.properties[x],
26
- J={...q,...S,...b};if(r(L,J)){let B=N(m,x),ae=M.length;M.push({...!ae&&{check:R(
27
- t,B)},query:d(t,m,B,x,L).build()}),l.validations.push({check:H(t,B),query:y(t,m,
28
- B).build(),name:B})}}l.constraints.push(...M)}return l},"prepareUpdate"),o.prepareRenameTable=
29
- i((t,m,s,p)=>{let a=[];for(let l in p){let x=p[l];if(n(x)){let S=N(m,l),q=N(s,l),
30
- C=t.table(s).alter().existing().constraint(S).rename(q);a.push({check:R(t,q),query:C.
31
- build()})}}return a},"prepareRenameTable"),o.prepareRenameColumns=i((t,m,s,p)=>{
32
- let a=[];for(let l in p){let x=p[l],S=s[x];if(n(S)){let q=N(m,l),C=N(m,x),b=t.table(
33
- m).alter().existing().constraint(q).rename(C);a.push({check:R(t,C),query:b.build()})}}
34
- return a},"prepareRenameColumns"),o.prepareDelete=i((t,m,s)=>{let p=[];for(let a in s){
35
- let l=s[a];if(n(l)){let x=N(m,a);p.push({query:u(t,m,x).build()})}}return p},"pr\
36
- epareDelete");let u=i((t,m,s)=>t.table(m).alter().existing().constraint(s).drop().
37
- existing(),"getDeleteQuery"),y=i((t,m,s)=>t.table(m).alter().existing().constraint(
38
- s).validate(),"getValidationQuery"),d=i((t,m,s,p,a)=>{let l=t.table(m).alter().existing().
39
- constraint(s);switch(a.type){case v.Enum:{let x=a.options.map(({value:q})=>`${q}`);
40
- l.check({[p]:{isIn:x}}).validate(!1);break}case v.Boolean:case v.Number:case v.String:{
41
- l.check({[p]:{equal:a.definitions?.value}}).validate(!1);break}}return l},"getCr\
42
- eateQuery"),n=i(t=>re(t)||oe(t)&&E(t.definitions?.value),"isConstrainedSchema"),
43
- r=i((t,m)=>{switch(t.type){case v.Boolean:case v.Number:case v.String:return E(m.
44
- definitions?.value)||E(m.definitions?.update?.value);case v.Enum:return E(m.options)}
45
- return!1},"isConstrainedChange")})(O||={});import{getTableName as de}from"@ez4/pgclient/library";import{isNullishSchema as ge}from"@ez4/schema";
46
- import{Index as se}from"@ez4/database";var j;(d=>{d.prepareCreate=i((n,r,o,t)=>{let m=[];for(let s in t){let p=t[s];if(g(
47
- p))continue;let{[p.targetColumn]:a}=o.properties,l=A(r,s),x=!!ge(a);m.push({check:R(
48
- n,l),query:y(n,r,l,p,x).build()})}return m},"prepareCreate"),d.prepareUpdate=i((n,r,o,t)=>{
49
- let m=[];for(let s in o){let p=o[s];if(g(p))continue;let a=t[p.targetColumn]?.update,
50
- l=a?.optional??a?.nullable;if(l===void 0)continue;let x=A(r,s);m.push({query:u(n,
51
- r,x).build()},{query:y(n,r,x,p,l).build()})}return m},"prepareUpdate"),d.prepareRename=
52
- i((n,r,o,t)=>{let m=[];for(let s in t){let p=t[s];if(g(p))continue;let a=A(r,s),
53
- l=A(o,s),x=n.table(o).alter().existing().constraint(a).rename(l);m.push({check:R(
54
- n,l),query:x.build()})}return m},"prepareRename"),d.prepareDelete=i((n,r,o)=>{let t=[];
55
- for(let m in o){let s=o[m];if(g(s))continue;let p=A(r,m);t.push({query:u(n,r,p).
56
- build()})}return t},"prepareDelete");let g=i(n=>{let{sourceIndex:r,targetIndex:o}=n;
57
- return!r||r===se.Secondary||o===se.Primary},"isNotRealRelation"),u=i((n,r,o)=>n.
58
- table(r).alter().existing().constraint(o).drop().existing(),"getDeleteQuery"),y=i(
59
- (n,r,o,t,m)=>{let{sourceTable:s,sourceColumn:p,targetColumn:a}=t,l=de(s),x=n.table(
60
- r).alter().existing().constraint(o),S=x.foreign(a,l,[p]).validate(!1);return m?S.
61
- delete().null():S.delete().cascade(),S.update().cascade(),x},"getCreateQuery")})(
62
- j||={});import{SchemaType as G}from"@ez4/schema";import{Index as w}from"@ez4/database";var T;(y=>{y.prepareCreate=i((d,n,r,o)=>{let t={constraints:[],validations:[],indexes:[]};
63
- for(let m in o){let{columns:s,type:p,name:a}=o[m];switch(p){default:throw new Error(
64
- "Unsupported index type.");case w.Primary:{let l=D(n,a);t.constraints.push({check:R(
65
- d,l),query:d.table(n).alter().existing().constraint(l).primary(s).build()});break}case w.
66
- Unique:{let l=U(n,a),x=u(s,r);t.indexes.push({query:d.index(l).create(n,s).type(
67
- x).unique().concurrent().missing().build()}),t.validations.push({query:(0,y.getValidationQuery)(
68
- d,l),name:l});break}case w.Secondary:{let l=_(n,a),x=u(s,r);t.indexes.push({query:d.
69
- index(l).create(n,s).type(x).concurrent().missing().build()}),t.validations.push(
70
- {query:(0,y.getValidationQuery)(d,l),name:l});break}}}return t},"prepareCreate"),
71
- y.prepareUpdate=i((d,n,r,o,t,m)=>{let s={constraints:[],validations:[],indexes:[]};
72
- for(let p in m){let{update:a,create:l,remove:x}=m[p];if(x||a){let S=(0,y.prepareDelete)(
73
- d,n,{[p]:o[p]});s.constraints.push(...S.constraints),s.indexes.push(...S.indexes)}
74
- if(l||a){let S=(0,y.prepareCreate)(d,n,r,{[p]:t[p]});s.constraints.push(...S.constraints),
75
- s.indexes.push(...S.indexes)}}return s},"prepareUpdate"),y.prepareRename=i((d,n,r,o)=>{
76
- let t={validations:[],constraints:[],indexes:[]};for(let m in o){let{type:s,name:p}=o[m];
77
- switch(s){default:throw new Error("Unsupported index type.");case w.Primary:{let a=D(
78
- n,p),l=D(r,p);t.constraints.push({check:R(d,l),query:d.table(r).alter().existing().
79
- constraint(a).rename(l).build()});break}case w.Unique:{let a=U(n,p),l=U(r,p);t.indexes.
80
- push({query:d.index(a).rename(l).existing().build()});break}case w.Secondary:{let a=_(
81
- n,p),l=_(r,p);t.indexes.push({query:d.index(a).rename(l).existing().build()});break}}}
82
- return t},"prepareRename"),y.prepareDelete=i((d,n,r)=>{let o={validations:[],constraints:[],
83
- indexes:[]};for(let t in r){let{type:m,name:s}=r[t];switch(m){default:throw new Error(
84
- "Unsupported index type.");case w.Primary:{let p=D(n,s),a=d.table(n).alter().existing().
85
- constraint(p).drop().existing();o.constraints.push({query:a.build()});break}case w.
86
- Unique:{let p=U(n,s),a=d.index(p).drop().existing().concurrent();o.indexes.push(
87
- {query:a.build()});break}case w.Secondary:{let p=_(n,s),a=d.index(p).drop().existing().
88
- concurrent();o.indexes.push({query:a.build()});break}}}return o},"prepareDelete"),
89
- y.getValidationQuery=i((d,n)=>{let[r]=d.select().rawColumn("1").from("pg_index").
90
- where({indexrelid:d.rawValue(`${d.rawString(n).build()}::regclass`),indisvalid:d.
91
- rawValue("false"),indisready:d.rawValue("true")}).build();return r},"getValidati\
92
- onQuery");let u=i((d,n)=>{if(d.length===1){let[r]=d;switch(n.properties[r]?.type){case G.
93
- Object:case G.Union:case G.Array:case G.Tuple:return"GIN"}}return"BTREE"},"getIn\
94
- dexType")})(T||={});import{Index as ie}from"@ez4/database";import{isArraySchema as ye,isEnumSchema as fe,isObjectSchema as he,isScalarSchema as xe,
95
- isStringSchema as Se,isTupleSchema as qe,SchemaType as k}from"@ez4/schema";import{
96
- isAnyNumber as be}from"@ez4/utils";var $=i(e=>!!(e.nullable||e.optional),"isOptionalColumn"),I=i((e,c)=>{if(xe(e)||
97
- he(e)||ye(e)||qe(e)){let{definitions:f}=e;switch(typeof f?.default){case"boolean":case"\
98
- number":return`${f.default}`;case"string":return`'${f.default}'`;case"object":return`\
99
- '${JSON.stringify(f.default)}'`}}if(fe(e)){let{definitions:f}=e;if(f?.default)return`\
100
- '${f.default}'`}if(Se(e)&&c)switch(e.format){case"date-time":case"date":case"tim\
101
- e":return"now()";case"uuid":return"gen_random_uuid()"}if($(e))return"null"},"get\
102
- ColumnDefault"),V=i((e,c)=>{switch(e.type){case k.Array:case k.Object:case k.Reference:case k.
103
- Union:case k.Tuple:return"jsonb";case k.Boolean:return"boolean";case k.Enum:return"\
104
- text";case k.Number:return Ce(e,c);case k.String:return Re(e)}},"getColumnType"),
105
- Ce=i((e,c)=>e.format==="integer"?c?"bigserial":"bigint":"decimal","getColumNumbe\
106
- rType"),Re=i(e=>{switch(e.format){case"uuid":case"time":case"date":return e.format;case"\
107
- date-time":return"timestamptz";default:let c=e.definitions?.maxLength;return be(
108
- c)?`varchar(${c})`:"text"}},"getColumnTextType");var z;(g=>(g.prepareCreate=i((u,y,d,n)=>{let r=u.table(y).alter().existing();for(let o in n){
109
- let t=n[o],s=d[o]?.type===ie.Primary,p=!$(t),a=V(t,s),l=I(t,s);r.add(o,a,p,l).missing()}
110
- return{query:r.build()}},"prepareCreate"),g.prepareUpdate=i((u,y,d,n,r)=>{let o=[];
111
- for(let t in r){let{create:m,update:s,nested:p,remove:a}=r[t],l=d.properties[t],
112
- S=n[t]?.type===ie.Primary,q=u.table(y).alter().existing().column(t);if(m){let C=m.
113
- definitions?.default,b=m?.nullable;C!==void 0&&q.default(I(l,S)),!S&&b!==void 0&&
114
- q.optional(b)}if(s||p){let C=p?.definitions?.update?.default,b=s?.nullable;s?.type!==
115
- void 0&&q.type(V(l,S)),C!==void 0&&q.default(I(l,S)),!S&&b!==void 0&&q.optional(
116
- b)}if(a){let C=a.definitions?.default,b=a?.nullable;C!==void 0&&q.default(null),
117
- !S&&b!==void 0&&q.optional(b)}q.empty||o.push({check:F(u,y,t),query:q.build()})}
118
- return o},"prepareUpdate"),g.prepareRename=i((u,y,d)=>{let n=[];for(let r in d){
119
- let o=d[r],t=u.table(y).alter().existing().rename(r,o);n.push({check:F(u,y,r),query:t.
120
- build()})}return n},"prepareRename"),g.prepareDelete=i((u,y,d)=>{let n=u.table(y).
121
- alter().existing();for(let r in d)n.drop(r).existing();return{query:n.build()}},
122
- "prepareDelete")))(z||={});import{Index as Pe}from"@ez4/database";var K;(h=>(h.prepareCreate=i((g,u,y,d)=>{let n=g.table(u).create().missing();for(let r in y.
123
- properties){let o=y.properties[r],m=d[r]?.type===Pe.Primary,s=!$(o),p=V(o,m),a=I(
124
- o,m);n.column(r,p,s,a).missing()}return{query:n.build()}},"prepareCreate"),h.prepareRename=
125
- i((g,u,y)=>({query:g.table(u).rename(y).existing().build()}),"prepareRename"),h.
126
- prepareDelete=i((g,u)=>({query:g.table(u).drop().existing().cascade().build()}),
127
- "prepareDelete")))(K||={});var Ne=i(e=>{let c=new W,f={tables:[],constraints:[],validations:[],relations:[],
128
- indexes:[]};for(let h in e){let{name:g,schema:u,indexes:y,relations:d}=e[h];f.tables.
129
- push(K.prepareCreate(c,g,u,y)),f.relations.push(...j.prepareCreate(c,g,u,d)),P(f,
130
- O.prepareCreate(c,g,u.properties)),P(f,T.prepareCreate(c,g,u,y))}return f},"getC\
131
- reateQueries"),Rt=i((e,c)=>{let f=ne(e,c),h=new W,g={tables:[],constraints:[],validations:[],
132
- relations:[],indexes:[]};if(f.create&&P(g,Ne(f.create)),f.rename)for(let u in f.
133
- rename){let y=f.rename[u],d=e[y].indexes,n=e[y].relations,r=e[y].schema;g.tables.
134
- push(K.prepareRename(h,u,y)),g.constraints.push(...O.prepareRenameTable(h,u,y,r.
135
- properties)),g.relations.push(...j.prepareRename(h,u,y,n)),P(g,T.prepareRename(h,
136
- u,y,d))}if(f.nested)for(let u in f.nested){let{nested:y}=f.nested[u];if(!y)continue;
137
- let{schema:d,relations:n,indexes:r}=y,o=d?.nested?.properties,t=e[u].relations,m=c[u].
138
- indexes,s=e[u].indexes,p=c[u].schema,a=e[u].schema;o?.create&&(g.tables.push(z.prepareCreate(
139
- h,u,s,o.create)),P(g,O.prepareCreate(h,u,o.create))),o?.nested&&(g.tables.push(...z.
140
- prepareUpdate(h,u,a,s,o.nested)),P(g,O.prepareUpdate(h,u,a,p,o.nested)),g.relations.
141
- push(...j.prepareUpdate(h,u,t,o.nested))),o?.rename&&(g.tables.push(...z.prepareRename(
142
- h,u,o.rename)),g.constraints.push(...O.prepareRenameColumns(h,u,a.properties,o.rename))),
143
- o?.remove&&(g.tables.push(z.prepareDelete(h,u,o.remove)),g.constraints.push(...O.
144
- prepareDelete(h,u,o.remove))),r?.create&&P(g,T.prepareCreate(h,u,a,r.create)),r?.
145
- nested&&P(g,T.prepareUpdate(h,u,a,m,s,r.nested)),r?.remove&&P(g,T.prepareDelete(
146
- h,u,r.remove)),n?.create&&g.relations.push(...j.prepareCreate(h,u,a,n.create)),n?.
147
- remove&&g.relations.push(...j.prepareDelete(h,u,n.remove))}return f.remove&&P(g,
148
- we(f.remove)),g},"getUpdateQueries"),we=i(e=>{let c=new W,f={tables:[],constraints:[],
149
- validations:[],relations:[],indexes:[]};for(let h in e){let{name:g}=e[h];f.tables.
150
- push(K.prepareDelete(c,g))}return f},"getDeleteQueries"),P=i((e,c)=>{c.tables&&e.
151
- tables.push(...c.tables),c.constraints&&e.constraints.push(...c.constraints),c.validations&&
152
- e.validations.push(...c.validations),c.relations&&e.relations.push(...c.relations),
153
- c.indexes&&e.indexes.push(...c.indexes)},"combineQueries");export{Ne as getCreateQueries,we as getDeleteQueries,Rt as getUpdateQueries};
1
+ var ce=Object.defineProperty;var i=(e,c)=>ce(e,"name",{value:c,configurable:!0});import{SqlBuilder as W}from"@ez4/pgsql";import{deepEqual as te,deepCompareObject as me,isAnyObject as X,toSnakeCase as Y}from"@ez4/utils";import{isTableMetadata as Z}from"@ez4/pgclient/library";import{isAnySchema as ee}from"@ez4/schema";var ne=i((e,c)=>me(e,c,{onSimilarName:i((f,h)=>{let g=new Set(Y(f).split("_")),u=new Set(Y(h).split("_"));for(let y of u)if(y.length>1&&g.has(y))return!0;return!1},"onSimilarName"),onRename:i((f,h)=>!X(f)||!X(h)?!1:Z(f)&&Z(h)?pe(f.schema,h.schema):ee(f)&&ee(h)?ue(f,h):!1,"onRename")}),"getTableRepositoryChanges"),pe=i((e,c)=>te(Object.keys(e.properties),Object.keys(c.properties)),"canRenameTable"),ue=i((e,c)=>te(e,c,{depth:1,include:{type:!0,definitions:!0,nullable:!0,format:!0}}),"canRenameColumn");import{isEnumSchema as re,isScalarSchema as oe,SchemaType as v}from"@ez4/schema";import{isNotNullish as E}from"@ez4/utils";var R=i((e,c)=>{let[f]=e.select().rawColumn(1).from("pg_constraint").where({conname:e.rawString(c)}).build();return f},"getCheckConstraintQuery"),F=i((e,c,f)=>{let[h]=e.select().rawColumn(1).where({NOT:{exists:e.select().from(e.rawValue("information_schema.columns")).rawColumn(1).where({column_name:e.rawString(f),table_name:e.rawString(c)})}}).build();return h},"getCheckColumnQuery"),H=i((e,c)=>{let[f]=e.select().rawColumn(1).from("pg_constraint").where({convalidated:e.rawValue("true"),conname:e.rawString(c)}).build();return f},"getCheckConstraintValidatedQuery");import{toSnakeCase as le}from"@ez4/utils";var D=i((e,c)=>`${Q(e,c)}_pk`,"getPrimaryKeyName"),U=i((e,c)=>`${Q(e,c)}_uk`,"getUniqueKeyName"),_=i((e,c)=>`${Q(e,c)}_sk`,"getSecondaryKeyName"),A=i((e,c)=>`${Q(e,c)}_fk`,"getRelationName"),N=i((e,c)=>`${Q(e,c)}_ck`,"getConstraintName"),Q=i((e,c)=>`${e}_${le(c.replaceAll(":","_"))}`,"getName");var O;(o=>{o.prepareCreate=i((t,m,s)=>{let p={constraints:[],validations:[]};for(let a in s){let l=s[a];if(re(l)||oe(l)&&E(l.definitions?.value)){let x=N(m,a);p.constraints.push({check:R(t,x),query:d(t,m,x,a,l).build()}),p.validations.push({check:H(t,x),query:y(t,m,x).build(),name:x})}}return p},"prepareCreate"),o.prepareUpdate=i((t,m,s,p,a)=>{let l={constraints:[],validations:[]};for(let x in a){let{update:S,create:q,remove:C,nested:b}=a[x],M=[];if(C||S||b){let L=p.properties[x],J={...C,...S,...b};if(r(L,J)){let B=N(m,x);M.push({query:u(t,m,B).build()})}}if(q||S||b){let L=s.properties[x],J={...q,...S,...b};if(r(L,J)){let B=N(m,x),ae=M.length;M.push({...!ae&&{check:R(t,B)},query:d(t,m,B,x,L).build()}),l.validations.push({check:H(t,B),query:y(t,m,B).build(),name:B})}}l.constraints.push(...M)}return l},"prepareUpdate"),o.prepareRenameTable=i((t,m,s,p)=>{let a=[];for(let l in p){let x=p[l];if(n(x)){let S=N(m,l),q=N(s,l),C=t.table(s).alter().existing().constraint(S).rename(q);a.push({check:R(t,q),query:C.build()})}}return a},"prepareRenameTable"),o.prepareRenameColumns=i((t,m,s,p)=>{let a=[];for(let l in p){let x=p[l],S=s[x];if(n(S)){let q=N(m,l),C=N(m,x),b=t.table(m).alter().existing().constraint(q).rename(C);a.push({check:R(t,C),query:b.build()})}}return a},"prepareRenameColumns"),o.prepareDelete=i((t,m,s)=>{let p=[];for(let a in s){let l=s[a];if(n(l)){let x=N(m,a);p.push({query:u(t,m,x).build()})}}return p},"prepareDelete");let u=i((t,m,s)=>t.table(m).alter().existing().constraint(s).drop().existing(),"getDeleteQuery"),y=i((t,m,s)=>t.table(m).alter().existing().constraint(s).validate(),"getValidationQuery"),d=i((t,m,s,p,a)=>{let l=t.table(m).alter().existing().constraint(s);switch(a.type){case v.Enum:{let x=a.options.map(({value:q})=>`${q}`);l.check({[p]:{isIn:x}}).validate(!1);break}case v.Boolean:case v.Number:case v.String:{l.check({[p]:{equal:a.definitions?.value}}).validate(!1);break}}return l},"getCreateQuery"),n=i(t=>re(t)||oe(t)&&E(t.definitions?.value),"isConstrainedSchema"),r=i((t,m)=>{switch(t.type){case v.Boolean:case v.Number:case v.String:return E(m.definitions?.value)||E(m.definitions?.update?.value);case v.Enum:return E(m.options)}return!1},"isConstrainedChange")})(O||={});import{getTableName as de}from"@ez4/pgclient/utils";import{isNullishSchema as ge}from"@ez4/schema";import{Index as se}from"@ez4/database";var j;(d=>{d.prepareCreate=i((n,r,o,t)=>{let m=[];for(let s in t){let p=t[s];if(g(p))continue;let{[p.targetColumn]:a}=o.properties,l=A(r,s),x=!!ge(a);m.push({check:R(n,l),query:y(n,r,l,p,x).build()})}return m},"prepareCreate"),d.prepareUpdate=i((n,r,o,t)=>{let m=[];for(let s in o){let p=o[s];if(g(p))continue;let a=t[p.targetColumn]?.update,l=a?.optional??a?.nullable;if(l===void 0)continue;let x=A(r,s);m.push({query:u(n,r,x).build()},{query:y(n,r,x,p,l).build()})}return m},"prepareUpdate"),d.prepareRename=i((n,r,o,t)=>{let m=[];for(let s in t){let p=t[s];if(g(p))continue;let a=A(r,s),l=A(o,s),x=n.table(o).alter().existing().constraint(a).rename(l);m.push({check:R(n,l),query:x.build()})}return m},"prepareRename"),d.prepareDelete=i((n,r,o)=>{let t=[];for(let m in o){let s=o[m];if(g(s))continue;let p=A(r,m);t.push({query:u(n,r,p).build()})}return t},"prepareDelete");let g=i(n=>{let{sourceIndex:r,targetIndex:o}=n;return!r||r===se.Secondary||o===se.Primary},"isNotRealRelation"),u=i((n,r,o)=>n.table(r).alter().existing().constraint(o).drop().existing(),"getDeleteQuery"),y=i((n,r,o,t,m)=>{let{sourceTable:s,sourceColumn:p,targetColumn:a}=t,l=de(s),x=n.table(r).alter().existing().constraint(o),S=x.foreign(a,l,[p]).validate(!1);return m?S.delete().null():S.delete().cascade(),S.update().cascade(),x},"getCreateQuery")})(j||={});import{SchemaType as G}from"@ez4/schema";import{Index as w}from"@ez4/database";var T;(y=>{y.prepareCreate=i((d,n,r,o)=>{let t={constraints:[],validations:[],indexes:[]};for(let m in o){let{columns:s,type:p,name:a}=o[m];switch(p){default:throw new Error("Unsupported index type.");case w.Primary:{let l=D(n,a);t.constraints.push({check:R(d,l),query:d.table(n).alter().existing().constraint(l).primary(s).build()});break}case w.Unique:{let l=U(n,a),x=u(s,r);t.indexes.push({query:d.index(l).create(n,s).type(x).unique().concurrent().missing().build()}),t.validations.push({query:(0,y.getValidationQuery)(d,l),name:l});break}case w.Secondary:{let l=_(n,a),x=u(s,r);t.indexes.push({query:d.index(l).create(n,s).type(x).concurrent().missing().build()}),t.validations.push({query:(0,y.getValidationQuery)(d,l),name:l});break}}}return t},"prepareCreate"),y.prepareUpdate=i((d,n,r,o,t,m)=>{let s={constraints:[],validations:[],indexes:[]};for(let p in m){let{update:a,create:l,remove:x}=m[p];if(x||a){let S=(0,y.prepareDelete)(d,n,{[p]:o[p]});s.constraints.push(...S.constraints),s.indexes.push(...S.indexes)}if(l||a){let S=(0,y.prepareCreate)(d,n,r,{[p]:t[p]});s.constraints.push(...S.constraints),s.indexes.push(...S.indexes)}}return s},"prepareUpdate"),y.prepareRename=i((d,n,r,o)=>{let t={validations:[],constraints:[],indexes:[]};for(let m in o){let{type:s,name:p}=o[m];switch(s){default:throw new Error("Unsupported index type.");case w.Primary:{let a=D(n,p),l=D(r,p);t.constraints.push({check:R(d,l),query:d.table(r).alter().existing().constraint(a).rename(l).build()});break}case w.Unique:{let a=U(n,p),l=U(r,p);t.indexes.push({query:d.index(a).rename(l).existing().build()});break}case w.Secondary:{let a=_(n,p),l=_(r,p);t.indexes.push({query:d.index(a).rename(l).existing().build()});break}}}return t},"prepareRename"),y.prepareDelete=i((d,n,r)=>{let o={validations:[],constraints:[],indexes:[]};for(let t in r){let{type:m,name:s}=r[t];switch(m){default:throw new Error("Unsupported index type.");case w.Primary:{let p=D(n,s),a=d.table(n).alter().existing().constraint(p).drop().existing();o.constraints.push({query:a.build()});break}case w.Unique:{let p=U(n,s),a=d.index(p).drop().existing().concurrent();o.indexes.push({query:a.build()});break}case w.Secondary:{let p=_(n,s),a=d.index(p).drop().existing().concurrent();o.indexes.push({query:a.build()});break}}}return o},"prepareDelete"),y.getValidationQuery=i((d,n)=>{let[r]=d.select().rawColumn(1).from("pg_index").where({indexrelid:d.rawValue(`${d.rawString(n).build()}::regclass`),indisvalid:d.rawValue("false"),indisready:d.rawValue("true")}).build();return r},"getValidationQuery");let u=i((d,n)=>{if(d.length===1){let[r]=d;switch(n.properties[r]?.type){case G.Object:case G.Union:case G.Array:case G.Tuple:return"GIN"}}return"BTREE"},"getIndexType")})(T||={});import{Index as ie}from"@ez4/database";import{isArraySchema as ye,isEnumSchema as fe,isObjectSchema as he,isScalarSchema as xe,isStringSchema as Se,isTupleSchema as qe,SchemaType as k}from"@ez4/schema";import{isAnyNumber as be}from"@ez4/utils";var $=i(e=>!!(e.nullable||e.optional),"isOptionalColumn"),I=i((e,c)=>{if(xe(e)||he(e)||ye(e)||qe(e)){let{definitions:f}=e;switch(typeof f?.default){case"boolean":case"number":return`${f.default}`;case"string":return`'${f.default}'`;case"object":return`'${JSON.stringify(f.default)}'`}}if(fe(e)){let{definitions:f}=e;if(f?.default)return`'${f.default}'`}if(Se(e)&&c)switch(e.format){case"date-time":case"date":case"time":return"now()";case"uuid":return"gen_random_uuid()"}if($(e))return"null"},"getColumnDefault"),V=i((e,c)=>{switch(e.type){case k.Array:case k.Object:case k.Reference:case k.Union:case k.Tuple:return"jsonb";case k.Boolean:return"boolean";case k.Enum:return"text";case k.Number:return Ce(e,c);case k.String:return Re(e)}},"getColumnType"),Ce=i((e,c)=>e.format==="integer"?c?"bigserial":"bigint":"decimal","getColumNumberType"),Re=i(e=>{switch(e.format){case"uuid":case"time":case"date":return e.format;case"date-time":return"timestamptz";default:let c=e.definitions?.maxLength;return be(c)?`varchar(${c})`:"text"}},"getColumnTextType");var z;(g=>(g.prepareCreate=i((u,y,d,n)=>{let r=u.table(y).alter().existing();for(let o in n){let t=n[o],s=d[o]?.type===ie.Primary,p=!$(t),a=V(t,s),l=I(t,s);r.add(o,a,p,l).missing()}return{query:r.build()}},"prepareCreate"),g.prepareUpdate=i((u,y,d,n,r)=>{let o=[];for(let t in r){let{create:m,update:s,nested:p,remove:a}=r[t],l=d.properties[t],S=n[t]?.type===ie.Primary,q=u.table(y).alter().existing().column(t);if(m){let C=m.definitions?.default,b=m?.nullable;C!==void 0&&q.default(I(l,S)),!S&&b!==void 0&&q.optional(b)}if(s||p){let C=p?.definitions?.update?.default,b=s?.nullable;s?.type!==void 0&&q.type(V(l,S)),C!==void 0&&q.default(I(l,S)),!S&&b!==void 0&&q.optional(b)}if(a){let C=a.definitions?.default,b=a?.nullable;C!==void 0&&q.default(null),!S&&b!==void 0&&q.optional(b)}q.empty||o.push({check:F(u,y,t),query:q.build()})}return o},"prepareUpdate"),g.prepareRename=i((u,y,d)=>{let n=[];for(let r in d){let o=d[r],t=u.table(y).alter().existing().rename(r,o);n.push({check:F(u,y,r),query:t.build()})}return n},"prepareRename"),g.prepareDelete=i((u,y,d)=>{let n=u.table(y).alter().existing();for(let r in d)n.drop(r).existing();return{query:n.build()}},"prepareDelete")))(z||={});import{Index as Pe}from"@ez4/database";var K;(h=>(h.prepareCreate=i((g,u,y,d)=>{let n=g.table(u).create().missing();for(let r in y.properties){let o=y.properties[r],m=d[r]?.type===Pe.Primary,s=!$(o),p=V(o,m),a=I(o,m);n.column(r,p,s,a).missing()}return{query:n.build()}},"prepareCreate"),h.prepareRename=i((g,u,y)=>({query:g.table(u).rename(y).existing().build()}),"prepareRename"),h.prepareDelete=i((g,u)=>({query:g.table(u).drop().existing().cascade().build()}),"prepareDelete")))(K||={});var Ne=i(e=>{let c=new W,f={tables:[],constraints:[],validations:[],relations:[],indexes:[]};for(let h in e){let{name:g,schema:u,indexes:y,relations:d}=e[h];f.tables.push(K.prepareCreate(c,g,u,y)),f.relations.push(...j.prepareCreate(c,g,u,d)),P(f,O.prepareCreate(c,g,u.properties)),P(f,T.prepareCreate(c,g,u,y))}return f},"getCreateQueries"),Rt=i((e,c)=>{let f=ne(e,c),h=new W,g={tables:[],constraints:[],validations:[],relations:[],indexes:[]};if(f.create&&P(g,Ne(f.create)),f.rename)for(let u in f.rename){let y=f.rename[u],d=e[y].indexes,n=e[y].relations,r=e[y].schema;g.tables.push(K.prepareRename(h,u,y)),g.constraints.push(...O.prepareRenameTable(h,u,y,r.properties)),g.relations.push(...j.prepareRename(h,u,y,n)),P(g,T.prepareRename(h,u,y,d))}if(f.nested)for(let u in f.nested){let{nested:y}=f.nested[u];if(!y)continue;let{schema:d,relations:n,indexes:r}=y,o=d?.nested?.properties,t=e[u].relations,m=c[u].indexes,s=e[u].indexes,p=c[u].schema,a=e[u].schema;o?.create&&(g.tables.push(z.prepareCreate(h,u,s,o.create)),P(g,O.prepareCreate(h,u,o.create))),o?.nested&&(g.tables.push(...z.prepareUpdate(h,u,a,s,o.nested)),P(g,O.prepareUpdate(h,u,a,p,o.nested)),g.relations.push(...j.prepareUpdate(h,u,t,o.nested))),o?.rename&&(g.tables.push(...z.prepareRename(h,u,o.rename)),g.constraints.push(...O.prepareRenameColumns(h,u,a.properties,o.rename))),o?.remove&&(g.tables.push(z.prepareDelete(h,u,o.remove)),g.constraints.push(...O.prepareDelete(h,u,o.remove))),r?.create&&P(g,T.prepareCreate(h,u,a,r.create)),r?.nested&&P(g,T.prepareUpdate(h,u,a,m,s,r.nested)),r?.remove&&P(g,T.prepareDelete(h,u,r.remove)),n?.create&&g.relations.push(...j.prepareCreate(h,u,a,n.create)),n?.remove&&g.relations.push(...j.prepareDelete(h,u,n.remove))}return f.remove&&P(g,we(f.remove)),g},"getUpdateQueries"),we=i(e=>{let c=new W,f={tables:[],constraints:[],validations:[],relations:[],indexes:[]};for(let h in e){let{name:g}=e[h];f.tables.push(K.prepareDelete(c,g))}return f},"getDeleteQueries"),P=i((e,c)=>{c.tables&&e.tables.push(...c.tables),c.constraints&&e.constraints.push(...c.constraints),c.validations&&e.validations.push(...c.validations),c.relations&&e.relations.push(...c.relations),c.indexes&&e.indexes.push(...c.indexes)},"combineQueries");export{Ne as getCreateQueries,we as getDeleteQueries,Rt as getUpdateQueries};
154
2
  //# sourceMappingURL=main.mjs.map
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ez4/pgmigration",
3
3
  "description": "EZ4: A PostgreSQL migration library",
4
- "version": "0.49.0",
4
+ "version": "0.51.0",
5
5
  "author": "Silas B.",
6
6
  "license": "MIT",
7
7
  "type": "module",
@@ -39,17 +39,17 @@
39
39
  "scripts": {
40
40
  "lint": "eslint --cache",
41
41
  "clean": "rm -rf dist/* *.tsbuildinfo .eslintcache",
42
- "build": "tsc && node tools/bundler.mjs",
43
- "test": "npm run build && tsc -p tsconfig.test.json && ez4 test",
42
+ "build": "tsc -p tsconfig.pack.json && node tools/bundler.mjs",
43
+ "test": "npm run build && tsc -p tsconfig.test.json --noEmit && ez4 test",
44
44
  "local:publish": "npm run build && npm run clean:registry && npm publish --registry http://localhost:4873",
45
45
  "clean:registry": "rm -rf ../../.registry/@ez4/pgmigration",
46
46
  "live:publish": "npm run build && npm publish --access public"
47
47
  },
48
48
  "dependencies": {
49
- "@ez4/database": "^0.49.0",
50
- "@ez4/pgsql": "^0.49.0",
51
- "@ez4/pgclient": "^0.49.0",
52
- "@ez4/schema": "^0.49.0",
53
- "@ez4/utils": "^0.49.0"
49
+ "@ez4/database": "^0.51.0",
50
+ "@ez4/pgsql": "^0.51.0",
51
+ "@ez4/pgclient": "^0.51.0",
52
+ "@ez4/schema": "^0.51.0",
53
+ "@ez4/utils": "^0.51.0"
54
54
  }
55
55
  }