@ez4/database 0.19.0 → 0.20.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 +44 -44
- package/dist/library.mjs +42 -42
- package/dist/main.cjs +4 -4
- package/dist/services/database.d.ts +1 -1
- package/dist/services/engine.d.ts +4 -5
- package/dist/services/insensitive.d.ts +3 -4
- package/dist/services/order.d.ts +3 -5
- package/dist/services/pagination.d.ts +6 -7
- package/dist/services/query.d.ts +40 -38
- package/dist/services/relations.d.ts +6 -6
- package/dist/triggers/service.d.ts +1 -1
- package/dist/types/stream.d.ts +1 -1
- package/package.json +6 -6
package/dist/library.cjs
CHANGED
|
@@ -1,58 +1,58 @@
|
|
|
1
1
|
"use strict";var L=Object.defineProperty;var Ve=Object.getOwnPropertyDescriptor;var Fe=Object.getOwnPropertyNames;var Qe=Object.prototype.hasOwnProperty;var $e=(e,r)=>{for(var t in r)L(e,t,{get:r[t],enumerable:!0})},Ge=(e,r,t,n)=>{if(r&&
|
|
2
2
|
typeof r=="object"||typeof r=="function")for(let a of Fe(r))!Qe.call(e,a)&&a!==t&&
|
|
3
|
-
L(e,a,{get:()=>r[a],enumerable:!(n=Ve(r,a))||n.enumerable});return e};var Be=e=>Ge(L({},"__esModule",{value:!0}),e);var
|
|
3
|
+
L(e,a,{get:()=>r[a],enumerable:!(n=Ve(r,a))||n.enumerable});return e};var Be=e=>Ge(L({},"__esModule",{value:!0}),e);var lt={};$e(lt,{IncompleteHandlerError:()=>$,IncompleteServiceError:()=>A,IncompleteStreamError:()=>V,
|
|
4
4
|
IncompleteTableError:()=>x,IncorrectIndexesTypeError:()=>U,IncorrectRelationsTypeError:()=>O,
|
|
5
5
|
IncorrectSchemaTypeError:()=>q,IncorrectStreamTypeError:()=>Q,InvalidIndexReferenceError:()=>N,
|
|
6
|
-
InvalidIndexTypeError:()=>z,InvalidIndexesTypeError:()=>w,InvalidRelationAliasError:()=>
|
|
6
|
+
InvalidIndexTypeError:()=>z,InvalidIndexesTypeError:()=>w,InvalidRelationAliasError:()=>C,
|
|
7
7
|
InvalidRelationColumnError:()=>S,InvalidRelationTableError:()=>k,InvalidRelationTargetError:()=>R,
|
|
8
8
|
InvalidRelationsTypeError:()=>j,InvalidSchemaTypeError:()=>H,InvalidStreamTypeError:()=>F,
|
|
9
9
|
ServiceType:()=>G,getDatabaseServices:()=>re,getDatabaseTable:()=>te,getTableSchema:()=>ee,
|
|
10
|
-
isDatabaseService:()=>_e,registerTriggers:()=>pt});module.exports=Be(
|
|
10
|
+
isDatabaseService:()=>_e,registerTriggers:()=>pt});module.exports=Be(lt);var ze=require("@ez4/common/library"),Ne=require("@ez4/schema/library"),He=require("@ez4/project/library");var d=require("@ez4/common/library"),Ae=require("@ez4/reflection");var y=require("@ez4/common/library"),j=class extends y.InvalidTypeError{constructor(r){
|
|
11
11
|
super("Invalid table relations type",void 0,"Database.Relations",r)}},O=class extends y.IncorrectTypeError{constructor(t,n){
|
|
12
12
|
super("Incorrect table relations type",t,"Database.Relations",n);this.schemaType=
|
|
13
13
|
t}},R=class extends y.TypeError{constructor(t,n){super(`Target ${t} must follow \
|
|
14
14
|
the pattern 'column@alias'.`,n);this.relationSource=t}},k=class extends y.TypeError{constructor(t,n){
|
|
15
15
|
super(`Relation table ${t} don't exists.`,n);this.relationTable=t}},S=class extends y.TypeError{constructor(t,n){
|
|
16
|
-
super(`Relation column ${t} don't exists.`,n);this.relationColumn=t}},
|
|
16
|
+
super(`Relation column ${t} don't exists.`,n);this.relationColumn=t}},C=class extends y.TypeError{constructor(t,n){
|
|
17
17
|
super(`Relation alias ${t} can't override table columns.`,n);this.relationAlias=
|
|
18
|
-
t}};var ae=require("@ez4/common/library"),
|
|
19
|
-
super("Incomplete database service",r,t)}};var G="@ez4/database",_e=e=>e.type===G;var
|
|
18
|
+
t}};var ae=require("@ez4/common/library"),A=class extends ae.IncompleteTypeError{constructor(r,t){
|
|
19
|
+
super("Incomplete database service",r,t)}};var G="@ez4/database",_e=e=>e.type===G;var I=require("@ez4/reflection"),m=require("@ez4/common/library");var oe=require("@ez4/common/library"),x=class extends oe.IncompleteTypeError{constructor(r,t){
|
|
20
20
|
super("Incomplete database table",r,t)}};var T=require("@ez4/common/library"),B=require("@ez4/reflection"),_=e=>(0,T.isClassDeclaration)(
|
|
21
21
|
e)&&(0,T.hasHeritageType)(e,"Database.Service"),se=e=>(0,T.isModelDeclaration)(e)&&
|
|
22
22
|
(0,T.hasHeritageType)(e,"Database.Engine"),ie=e=>(0,T.isModelDeclaration)(e)&&(0,T.hasHeritageType)(
|
|
23
|
-
e,"Database.Table"),pe=e=>(0,B.isTypeCallback)(e)||(0,B.isTypeFunction)(e),
|
|
24
|
-
e,"Database.Relations"),
|
|
25
|
-
e,"Database.Schema"),de=e=>(0,T.hasHeritageType)(e,"Database.Stream");var Te;(e=>{})(Te||={});var fe=(e,r,t,n)=>{if(!(0,
|
|
23
|
+
e,"Database.Table"),pe=e=>(0,B.isTypeCallback)(e)||(0,B.isTypeFunction)(e),le=e=>(0,T.hasHeritageType)(
|
|
24
|
+
e,"Database.Relations"),me=e=>(0,T.hasHeritageType)(e,"Database.Indexes"),ce=e=>(0,T.hasHeritageType)(
|
|
25
|
+
e,"Database.Schema"),de=e=>(0,T.hasHeritageType)(e,"Database.Stream");var Te;(e=>{})(Te||={});var fe=(e,r,t,n)=>{if(!(0,I.isTypeReference)(e))return ue(e,r,n);let a=(0,m.getReferenceType)(
|
|
26
26
|
e,t);return a?ue(a,r,n):null},Le=e=>!!e.name&&!!e.parametersMode&&!!e.transactionMode&&
|
|
27
|
-
!!e.orderMode,ue=(e,r,t)=>se(e)?be(e,r,(0,
|
|
28
|
-
e)?be(e,r,(0,
|
|
27
|
+
!!e.orderMode,ue=(e,r,t)=>se(e)?be(e,r,(0,m.getModelMembers)(e),t):(0,I.isTypeObject)(
|
|
28
|
+
e)?be(e,r,(0,m.getObjectMembers)(e),t):null,be=(e,r,t,n)=>{let a={},o=new Set(["\
|
|
29
29
|
name","parametersMode","transactionMode","insensitiveMode","paginationMode","ord\
|
|
30
|
-
erMode"]);for(let s of t)if(!(!(0,
|
|
31
|
-
n.push(new
|
|
32
|
-
(a.name=(0,
|
|
33
|
-
(a.parametersMode=(0,
|
|
34
|
-
break;case"transactionMode":(a.transactionMode=(0,
|
|
30
|
+
erMode"]);for(let s of t)if(!(!(0,I.isModelProperty)(s)||s.inherited))switch(s.name){default:
|
|
31
|
+
n.push(new m.InvalidServicePropertyError(r.name,s.name,e.file));break;case"name":
|
|
32
|
+
(a.name=(0,m.getPropertyString)(s))&&o.delete(s.name);break;case"parametersMode":
|
|
33
|
+
(a.parametersMode=(0,m.getPropertyStringIn)(s,["index","both"]))&&o.delete(s.name);
|
|
34
|
+
break;case"transactionMode":(a.transactionMode=(0,m.getPropertyStringIn)(s,["sta\
|
|
35
35
|
tic","interactive"]))&&o.delete(s.name);break;case"insensitiveMode":(a.insensitiveMode=
|
|
36
|
-
(0,
|
|
37
|
-
paginationMode":(a.paginationMode=(0,
|
|
38
|
-
o.delete(s.name);break;case"orderMode":(a.orderMode=(0,
|
|
36
|
+
(0,m.getPropertyStringIn)(s,["unsupported","enabled"]))&&o.delete(s.name);break;case"\
|
|
37
|
+
paginationMode":(a.paginationMode=(0,m.getPropertyStringIn)(s,["cursor","offset"]))&&
|
|
38
|
+
o.delete(s.name);break;case"orderMode":(a.orderMode=(0,m.getPropertyStringIn)(s,
|
|
39
39
|
["any","index"]))&&o.delete(s.name);break}return Le(a)?a:(n.push(new x([...o],e.
|
|
40
40
|
file)),null)};var f=require("@ez4/common/library"),E=require("@ez4/reflection");var g=require("@ez4/common/library"),w=class extends g.InvalidTypeError{constructor(r){
|
|
41
41
|
super("Invalid table indexes type",void 0,"Database.Indexes",r)}},U=class extends g.IncorrectTypeError{constructor(t,n){
|
|
42
42
|
super("Incorrect table indexes type",t,"Database.Indexes",n);this.schemaType=t}},
|
|
43
43
|
z=class extends g.TypeError{constructor(t,n){super(`Invalid index type, ${t} mus\
|
|
44
44
|
t follow one of the Index options.`,n);this.indexName=t}},N=class extends g.TypeError{constructor(t,n){
|
|
45
|
-
super(`Invalid index reference, ${t} must be valid column.`,n);this.indexName=t}};var u=require("@ez4/common/library"),
|
|
46
|
-
e,t);return a?ye(a,r,n):null},ye=(e,r,t)=>(0,
|
|
47
|
-
e),t):(0,u.isModelDeclaration)(e)?
|
|
45
|
+
super(`Invalid index reference, ${t} must be valid column.`,n);this.indexName=t}};var u=require("@ez4/common/library"),M=require("@ez4/reflection");var ge=(e,r,t,n)=>{if(!(0,M.isTypeReference)(e))return ye(e,r,n);let a=(0,u.getReferenceType)(
|
|
46
|
+
e,t);return a?ye(a,r,n):null},ye=(e,r,t)=>(0,M.isTypeObject)(e)?xe(e,(0,u.getObjectMembers)(
|
|
47
|
+
e),t):(0,u.isModelDeclaration)(e)?le(e)?xe(e,(0,u.getModelMembers)(e),t):(t.push(
|
|
48
48
|
new O(e.name,e.file)),null):(t.push(new j(r.file)),null),xe=(e,r,t)=>{let n=[];for(let a of r){
|
|
49
|
-
if(!(0,
|
|
50
|
-
a),s=a.name;if(!o)return t.push(new R(s,e.file)),null;let[i,p]=s.split("@",2),[
|
|
51
|
-
P]=o.split(":",2);n.push({sourceTable:
|
|
52
|
-
return n};var b=require("@ez4/common/library"),h=require("@ez4/reflection");var
|
|
53
|
-
e,t);return a?Se(a,r,n):null},Se=(e,r,t)=>(0,h.isTypeObject)(e)?
|
|
54
|
-
e),t):(0,b.isModelDeclaration)(e)?
|
|
55
|
-
new U(e.name,e.file)),null):(t.push(new w(r.file)),null),
|
|
49
|
+
if(!(0,M.isModelProperty)(a)||a.inherited)continue;let o=(0,u.getPropertyString)(
|
|
50
|
+
a),s=a.name;if(!o)return t.push(new R(s,e.file)),null;let[i,p]=s.split("@",2),[l,
|
|
51
|
+
P]=o.split(":",2);n.push({sourceTable:l,sourceColumn:P,targetColumn:i,targetAlias:p})}
|
|
52
|
+
return n};var b=require("@ez4/common/library"),h=require("@ez4/reflection");var Me=(e,r,t,n)=>{if(!(0,h.isTypeReference)(e))return Se(e,r,n);let a=(0,b.getReferenceType)(
|
|
53
|
+
e,t);return a?Se(a,r,n):null},Se=(e,r,t)=>(0,h.isTypeObject)(e)?Ie(e,(0,b.getObjectMembers)(
|
|
54
|
+
e),t):(0,b.isModelDeclaration)(e)?me(e)?Ie(e,(0,b.getModelMembers)(e),t):(t.push(
|
|
55
|
+
new U(e.name,e.file)),null):(t.push(new w(r.file)),null),Ie=(e,r,t)=>{let n=[];for(let a of r){
|
|
56
56
|
if(!(0,h.isModelProperty)(a)||a.inherited)continue;let o=a.name,s=(0,b.getPropertyString)(
|
|
57
57
|
a);switch(s){case"primary":case"secondary":case"unique":case"ttl":n.push({name:o,
|
|
58
58
|
columns:o.split(":"),type:s});break;default:return t.push(new z(o,e.file)),null}}
|
|
@@ -77,36 +77,36 @@ r.file)),null),je=(e,r,t,n,a)=>{let o={},s=new Set(["handler"]);for(let i of t)i
|
|
|
77
77
|
i)||i.inherited))switch(i.name){default:a.push(new c.InvalidServicePropertyError(
|
|
78
78
|
r.name,i.name,e.file));break;case"handler":o.handler=Ee(i.value,n,a);break;case"\
|
|
79
79
|
listener":o.listener=(0,c.getServiceListener)(i.value,a);break;case"memory":case"\
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
[...s],e.file)),null)};var te=(e,r,t,n)=>{if(!(0,E.isTypeReference)(e))return Re(e,r,t,n);let a=(0,f.getReferenceType)(
|
|
80
|
+
logRetention":case"timeout":o[i.name]=(0,c.getPropertyNumber)(i);break;case"vari\
|
|
81
|
+
ables":o.variables=(0,c.getLinkedVariableList)(i,a);break}return tt(o)?o:(a.push(
|
|
82
|
+
new V([...s],e.file)),null)};var te=(e,r,t,n)=>{if(!(0,E.isTypeReference)(e))return Re(e,r,t,n);let a=(0,f.getReferenceType)(
|
|
83
83
|
e,t);return a?Re(a,r,t,n):null},rt=e=>!!e.name&&!!e.schema&&!!e.indexes,Re=(e,r,t,n)=>ie(
|
|
84
84
|
e)?ke(e,r,(0,f.getModelMembers)(e),t,n):(0,E.isTypeObject)(e)?ke(e,r,(0,f.getObjectMembers)(
|
|
85
85
|
e),t,n):null,ke=(e,r,t,n,a)=>{let o={},s=new Set(["name","schema","indexes"]);for(let p of t)
|
|
86
86
|
if(!(!(0,E.isModelProperty)(p)||p.inherited))switch(p.name){default:a.push(new f.InvalidServicePropertyError(
|
|
87
87
|
r.name,p.name,e.file));break;case"name":(o.name=(0,f.getPropertyString)(p))&&s.delete(
|
|
88
88
|
p.name);break;case"schema":(o.schema=ee(p.value,e,n,a))&&s.delete(p.name);break;case"\
|
|
89
|
-
indexes":(o.indexes=
|
|
89
|
+
indexes":(o.indexes=Me(p.value,e,n,a))&&s.delete(p.name);break;case"relations":o.
|
|
90
90
|
relations=ge(p.value,e,n,a);break;case"stream":o.stream=Oe(p.value,r,n,a);break}
|
|
91
91
|
if(!rt(o))return a.push(new x([...s],e.file)),null;let i=nt(e,o.indexes,o.schema);
|
|
92
92
|
return i.length?(a.push(...i),null):o},nt=(e,r,t)=>{let n=t.properties,a=[];for(let{
|
|
93
|
-
name:o,columns:s}of r)s.some(p=>!n[p])&&a.push(new N(o,e.file));return a};var re=e=>{let r={},t=[];for(let n in e){let a=e[n];if(!_(a)||(0,d.
|
|
93
|
+
name:o,columns:s}of r)s.some(p=>!n[p])&&a.push(new N(o,e.file));return a};var re=e=>{let r={},t=[];for(let n in e){let a=e[n];if(!_(a)||(0,d.isExternalDeclaration)(
|
|
94
94
|
a))continue;let o={type:G,extras:{}},s=new Set(["engine","tables"]),i=a.file;o.name=
|
|
95
|
-
a.name;for(let
|
|
96
|
-
switch(
|
|
97
|
-
break;case"engine":(o.engine=fe(
|
|
98
|
-
|
|
99
|
-
(0,d.getLinkedVariableList)(
|
|
100
|
-
|
|
95
|
+
a.name;for(let l of(0,d.getModelMembers)(a))if(!(!(0,Ae.isModelProperty)(l)||l.inherited))
|
|
96
|
+
switch(l.name){default:t.push(new d.InvalidServicePropertyError(o.name,l.name,i));
|
|
97
|
+
break;case"client":break;case"engine":(o.engine=fe(l.value,a,e,t))&&s.delete(l.name);
|
|
98
|
+
break;case"tables":(o.tables=ot(l,a,e,t))&&s.delete(l.name);break;case"variables":
|
|
99
|
+
o.variables=(0,d.getLinkedVariableList)(l,t);break;case"services":o.services=(0,d.getLinkedServiceList)(
|
|
100
|
+
l,e,t);break}if(!at(o)){t.push(new A([...s],i));continue}let p=st(a,o.tables);if(p.
|
|
101
101
|
length){t.push(...p);continue}if(r[a.name]){t.push(new d.DuplicateServiceError(a.
|
|
102
102
|
name,i));continue}r[a.name]=o}return{services:r,errors:t}},at=e=>!!e.name&&!!e.tables&&
|
|
103
103
|
!!e.extras,ot=(e,r,t,n)=>{let a=(0,d.getPropertyTuple)(e)??[],o=[];for(let s of a){
|
|
104
104
|
let i=te(s,r,t,n);i&&o.push(i)}return o},st=(e,r)=>{let t=it(r),n=[];for(let{relations:a,
|
|
105
|
-
schema:o,indexes:s}of r){if(!a)continue;let i=o.properties;for(let p of a){let{sourceTable:
|
|
105
|
+
schema:o,indexes:s}of r){if(!a)continue;let i=o.properties;for(let p of a){let{sourceTable:l,
|
|
106
106
|
sourceColumn:P,targetColumn:Y,targetAlias:ne}=p;i[Y]||n.push(new S(Y,e.file)),i[ne]&&
|
|
107
|
-
n.push(new
|
|
108
|
-
Z&&!Z[P]&&n.push(new S(P,e.file));let qe=t[
|
|
109
|
-
p.targetIndex=
|
|
107
|
+
n.push(new C(ne,e.file));let Z=t[l]?.schema.properties;Z||n.push(new k(l,e.file)),
|
|
108
|
+
Z&&!Z[P]&&n.push(new S(P,e.file));let qe=t[l]?.indexes??[];p.sourceIndex=Ce(qe,P),
|
|
109
|
+
p.targetIndex=Ce(s,Y)}}return n},Ce=(e,r)=>e.find(({name:t})=>t===r)?.type,it=e=>e.
|
|
110
110
|
reduce((r,t)=>({...r,[t.name]:t}),{});var we=e=>_(e)?e.name:null;var Ue=!1,pt=()=>{Ue||((0,ze.registerTriggers)(),(0,Ne.registerTriggers)(),(0,He.createTrigger)(
|
|
111
111
|
"@ez4/database",{"metadata:getServices":re,"metadata:getLinkedService":we}),Ue=!0)};0&&(module.exports={IncompleteHandlerError,IncompleteServiceError,IncompleteStreamError,
|
|
112
112
|
IncompleteTableError,IncorrectIndexesTypeError,IncorrectRelationsTypeError,IncorrectSchemaTypeError,
|
package/dist/library.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import{registerTriggers as Xt}from"@ez4/common/library";import{registerTriggers as Yt}from"@ez4/schema/library";
|
|
2
|
-
import{createTrigger as Zt}from"@ez4/project/library";import{DuplicateServiceError as Ht,InvalidServicePropertyError as qt,
|
|
2
|
+
import{createTrigger as Zt}from"@ez4/project/library";import{DuplicateServiceError as Ht,InvalidServicePropertyError as qt,isExternalDeclaration as Vt,
|
|
3
3
|
getLinkedServiceList as Ft,getLinkedVariableList as Qt,getPropertyTuple as $t,getModelMembers as Gt}from"@ez4/common/library";
|
|
4
4
|
import{isModelProperty as Bt}from"@ez4/reflection";import{IncorrectTypeError as ye,InvalidTypeError as xe,TypeError as S}from"@ez4/common/library";
|
|
5
5
|
var b=class extends xe{constructor(r){super("Invalid table relations type",void 0,
|
|
@@ -10,20 +10,20 @@ t}},x=class extends S{constructor(t,n){super(`Relation table ${t} don't exists.`
|
|
|
10
10
|
n);this.relationTable=t}},T=class extends S{constructor(t,n){super(`Relation col\
|
|
11
11
|
umn ${t} don't exists.`,n);this.relationColumn=t}},g=class extends S{constructor(t,n){
|
|
12
12
|
super(`Relation alias ${t} can't override table columns.`,n);this.relationAlias=
|
|
13
|
-
t}};import{IncompleteTypeError as ge}from"@ez4/common/library";var
|
|
14
|
-
super("Incomplete database service",r,t)}};var U="@ez4/database",nr=e=>e.type===U;import{isModelProperty as Re,isTypeObject as ke,isTypeReference as
|
|
15
|
-
import{InvalidServicePropertyError as
|
|
13
|
+
t}};import{IncompleteTypeError as ge}from"@ez4/common/library";var I=class extends ge{constructor(r,t){
|
|
14
|
+
super("Incomplete database service",r,t)}};var U="@ez4/database",nr=e=>e.type===U;import{isModelProperty as Re,isTypeObject as ke,isTypeReference as Ce}from"@ez4/reflection";
|
|
15
|
+
import{InvalidServicePropertyError as Ae,getModelMembers as we,getObjectMembers as Ue,
|
|
16
16
|
getPropertyString as ze,getPropertyStringIn as u,getReferenceType as Ne}from"@ez4/common/library";import{IncompleteTypeError as Se}from"@ez4/common/library";var c=class extends Se{constructor(r,t){
|
|
17
|
-
super("Incomplete database table",r,t)}};import{hasHeritageType as
|
|
18
|
-
import{isTypeCallback as
|
|
19
|
-
e)&&
|
|
20
|
-
tabase.Table"),V=e=>
|
|
21
|
-
se.Indexes"),$=e=>
|
|
17
|
+
super("Incomplete database table",r,t)}};import{hasHeritageType as m,isClassDeclaration as Ie,isModelDeclaration as N}from"@ez4/common/library";
|
|
18
|
+
import{isTypeCallback as Me,isTypeFunction as he}from"@ez4/reflection";var M=e=>Ie(
|
|
19
|
+
e)&&m(e,"Database.Service"),H=e=>N(e)&&m(e,"Database.Engine"),q=e=>N(e)&&m(e,"Da\
|
|
20
|
+
tabase.Table"),V=e=>Me(e)||he(e),F=e=>m(e,"Database.Relations"),Q=e=>m(e,"Databa\
|
|
21
|
+
se.Indexes"),$=e=>m(e,"Database.Schema"),G=e=>m(e,"Database.Stream");var B;(e=>{})(B||={});var K=(e,r,t,n)=>{if(!Ce(e))return _(e,r,n);let a=Ne(e,t);return a?_(a,r,n):null},
|
|
22
22
|
He=e=>!!e.name&&!!e.parametersMode&&!!e.transactionMode&&!!e.orderMode,_=(e,r,t)=>H(
|
|
23
23
|
e)?J(e,r,we(e),t):ke(e)?J(e,r,Ue(e),t):null,J=(e,r,t,n)=>{let a={},o=new Set(["n\
|
|
24
24
|
ame","parametersMode","transactionMode","insensitiveMode","paginationMode","orde\
|
|
25
25
|
rMode"]);for(let s of t)if(!(!Re(s)||s.inherited))switch(s.name){default:n.push(
|
|
26
|
-
new
|
|
26
|
+
new Ae(r.name,s.name,e.file));break;case"name":(a.name=ze(s))&&o.delete(s.name);
|
|
27
27
|
break;case"parametersMode":(a.parametersMode=u(s,["index","both"]))&&o.delete(s.
|
|
28
28
|
name);break;case"transactionMode":(a.transactionMode=u(s,["static","interactive"]))&&
|
|
29
29
|
o.delete(s.name);break;case"insensitiveMode":(a.insensitiveMode=u(s,["unsupporte\
|
|
@@ -31,8 +31,8 @@ d","enabled"]))&&o.delete(s.name);break;case"paginationMode":(a.paginationMode=u
|
|
|
31
31
|
s,["cursor","offset"]))&&o.delete(s.name);break;case"orderMode":(a.orderMode=u(s,
|
|
32
32
|
["any","index"]))&&o.delete(s.name);break}return He(a)?a:(n.push(new c([...o],e.
|
|
33
33
|
file)),null)};import{InvalidServicePropertyError as jt,getModelMembers as Ot,getObjectMembers as Rt,
|
|
34
|
-
getPropertyString as kt,getReferenceType as
|
|
35
|
-
isModelProperty as
|
|
34
|
+
getPropertyString as kt,getReferenceType as Ct}from"@ez4/common/library";import{
|
|
35
|
+
isModelProperty as At,isTypeObject as wt,isTypeReference as Ut}from"@ez4/reflection";import{IncorrectTypeError as qe,InvalidTypeError as Ve,TypeError as W}from"@ez4/common/library";
|
|
36
36
|
var h=class extends Ve{constructor(r){super("Invalid table indexes type",void 0,
|
|
37
37
|
"Database.Indexes",r)}},v=class extends qe{constructor(t,n){super("Incorrect tab\
|
|
38
38
|
le indexes type",t,"Database.Indexes",n);this.schemaType=t}},D=class extends W{constructor(t,n){
|
|
@@ -44,7 +44,7 @@ isTypeReference as Ke}from"@ez4/reflection";var Z=(e,r,t,n)=>{if(!Ke(e))return X
|
|
|
44
44
|
X=(e,r,t)=>Je(e)?Y(e,$e(e),t):Fe(e)?F(e)?Y(e,Qe(e),t):(t.push(new f(e.name,e.file)),
|
|
45
45
|
null):(t.push(new b(r.file)),null),Y=(e,r,t)=>{let n=[];for(let a of r){if(!_e(a)||
|
|
46
46
|
a.inherited)continue;let o=Ge(a),s=a.name;if(!o)return t.push(new y(s,e.file)),null;
|
|
47
|
-
let[i,p]=s.split("@",2),[
|
|
47
|
+
let[i,p]=s.split("@",2),[l,d]=o.split(":",2);n.push({sourceTable:l,sourceColumn:d,
|
|
48
48
|
targetColumn:i,targetAlias:p})}return n};import{isModelDeclaration as We,getModelMembers as Xe,getObjectMembers as Ye,getPropertyString as Ze,
|
|
49
49
|
getReferenceType as Le}from"@ez4/common/library";import{isModelProperty as et,isTypeObject as tt,
|
|
50
50
|
isTypeReference as rt}from"@ez4/reflection";var te=(e,r,t,n)=>{if(!rt(e))return L(e,r,n);let a=Le(e,t);return a?L(a,r,n):null},
|
|
@@ -54,55 +54,55 @@ a)||a.inherited)continue;let o=a.name,s=Ze(a);switch(s){case"primary":case"secon
|
|
|
54
54
|
dary":case"unique":case"ttl":n.push({name:o,columns:o.split(":"),type:s});break;default:
|
|
55
55
|
return t.push(new D(o,e.file)),null}}return n};import{getReferenceType as ot,isModelDeclaration as st}from"@ez4/common/library";
|
|
56
56
|
import{getObjectSchema as it,isObjectSchema as pt}from"@ez4/schema/library";import{
|
|
57
|
-
isTypeObject as
|
|
57
|
+
isTypeObject as lt,isTypeReference as mt}from"@ez4/reflection";import{IncorrectTypeError as nt,InvalidTypeError as at}from"@ez4/common/library";
|
|
58
58
|
var P=class extends at{constructor(r){super("Invalid table schema type",void 0,"\
|
|
59
59
|
Database.Schema",r)}},j=class extends nt{constructor(t,n){super("Incorrect table\
|
|
60
|
-
schema type",t,"Database.Schema",n);this.schemaType=t}};var ae=(e,r,t,n)=>{if(!
|
|
61
|
-
n):null},re=(e,r,t,n)=>
|
|
60
|
+
schema type",t,"Database.Schema",n);this.schemaType=t}};var ae=(e,r,t,n)=>{if(!mt(e))return re(e,r,t,n);let a=ot(e,t);return a?re(a,r,t,
|
|
61
|
+
n):null},re=(e,r,t,n)=>lt(e)?ne(e,t):st(e)?$(e)?ne(e,t):(n.push(new j(e.name,e.file)),
|
|
62
62
|
null):(n.push(new P(r.file)),null),ne=(e,r)=>{let t=it(e,r);return t&&pt(t)?t:null};import{InvalidServicePropertyError as ft,isModelDeclaration as yt,getLinkedVariableList as xt,
|
|
63
|
-
getModelMembers as gt,getObjectMembers as St,getPropertyNumber as
|
|
63
|
+
getModelMembers as gt,getObjectMembers as St,getPropertyNumber as It,getServiceListener as Mt,
|
|
64
64
|
getReferenceType as ht}from"@ez4/common/library";import{isModelProperty as vt,isTypeObject as Dt,
|
|
65
65
|
isTypeReference as Et}from"@ez4/reflection";import{IncompleteTypeError as ct,IncorrectTypeError as dt,InvalidTypeError as Tt}from"@ez4/common/library";
|
|
66
66
|
var O=class extends ct{constructor(r,t){super("Incomplete table stream",r,t)}},R=class extends Tt{constructor(r){
|
|
67
67
|
super("Invalid table stream type",void 0,"Database.Stream",r)}},k=class extends dt{constructor(t,n){
|
|
68
|
-
super("Incorrect table stream type",t,"Database.Stream",n);this.streamType=t}};import{IncompleteTypeError as ut}from"@ez4/common/library";var
|
|
68
|
+
super("Incorrect table stream type",t,"Database.Stream",n);this.streamType=t}};import{IncompleteTypeError as ut}from"@ez4/common/library";var C=class extends ut{constructor(r,t){
|
|
69
69
|
super("Incomplete stream handler",r,t)}};var oe=(e,r,t)=>{if(!V(e))return null;let n={},a=new Set(["name","file","change"]);
|
|
70
70
|
return e.description&&(n.description=e.description),(n.name=e.name)&&a.delete("n\
|
|
71
71
|
ame"),(n.file=e.file)&&a.delete("file"),e.parameters&&a.delete("change"),a.size===
|
|
72
|
-
0&&bt(n)?n:(t.push(new
|
|
72
|
+
0&&bt(n)?n:(t.push(new C([...a],e.file)),null)},bt=e=>!!e.name&&!!e.file;var pe=(e,r,t,n)=>{if(!Et(e))return se(e,r,t,n);let a=ht(e,t);return a?se(a,r,t,
|
|
73
73
|
n):null},Pt=e=>!!e.handler,se=(e,r,t,n)=>Dt(e)?ie(e,r,St(e),t,n):yt(e)?G(e)?ie(e,
|
|
74
74
|
r,gt(e),t,n):(n.push(new k(e.name,e.file)),null):(n.push(new R(r.file)),null),ie=(e,r,t,n,a)=>{
|
|
75
75
|
let o={},s=new Set(["handler"]);for(let i of t)if(!(!vt(i)||i.inherited))switch(i.
|
|
76
76
|
name){default:a.push(new ft(r.name,i.name,e.file));break;case"handler":o.handler=
|
|
77
|
-
oe(i.value,n,a);break;case"listener":o.listener=
|
|
78
|
-
|
|
79
|
-
a);break}return Pt(o)?o:(a.push(new O([...s],e.file)),null)};var ce=(e,r,t,n)=>{if(!Ut(e))return
|
|
80
|
-
n):null},zt=e=>!!e.name&&!!e.schema&&!!e.indexes,
|
|
81
|
-
t,n):wt(e)?
|
|
82
|
-
chema","indexes"]);for(let p of t)if(!(!
|
|
77
|
+
oe(i.value,n,a);break;case"listener":o.listener=Mt(i.value,a);break;case"memory":case"\
|
|
78
|
+
logRetention":case"timeout":o[i.name]=It(i);break;case"variables":o.variables=xt(
|
|
79
|
+
i,a);break}return Pt(o)?o:(a.push(new O([...s],e.file)),null)};var ce=(e,r,t,n)=>{if(!Ut(e))return le(e,r,t,n);let a=Ct(e,t);return a?le(a,r,t,
|
|
80
|
+
n):null},zt=e=>!!e.name&&!!e.schema&&!!e.indexes,le=(e,r,t,n)=>q(e)?me(e,r,Ot(e),
|
|
81
|
+
t,n):wt(e)?me(e,r,Rt(e),t,n):null,me=(e,r,t,n,a)=>{let o={},s=new Set(["name","s\
|
|
82
|
+
chema","indexes"]);for(let p of t)if(!(!At(p)||p.inherited))switch(p.name){default:
|
|
83
83
|
a.push(new jt(r.name,p.name,e.file));break;case"name":(o.name=kt(p))&&s.delete(p.
|
|
84
84
|
name);break;case"schema":(o.schema=ae(p.value,e,n,a))&&s.delete(p.name);break;case"\
|
|
85
85
|
indexes":(o.indexes=te(p.value,e,n,a))&&s.delete(p.name);break;case"relations":o.
|
|
86
86
|
relations=Z(p.value,e,n,a);break;case"stream":o.stream=pe(p.value,r,n,a);break}if(!zt(
|
|
87
87
|
o))return a.push(new c([...s],e.file)),null;let i=Nt(e,o.indexes,o.schema);return i.
|
|
88
88
|
length?(a.push(...i),null):o},Nt=(e,r,t)=>{let n=t.properties,a=[];for(let{name:o,
|
|
89
|
-
columns:s}of r)s.some(p=>!n[p])&&a.push(new E(o,e.file));return a};var Te=e=>{let r={},t=[];for(let n in e){let a=e[n];if(!
|
|
90
|
-
type:U,extras:{}},s=new Set(["engine","tables"]),i=a.file;o.name=a.name;for(let
|
|
91
|
-
a))if(!(!Bt(
|
|
92
|
-
i));break;case"engine":(o.engine=K(
|
|
93
|
-
tables":(o.tables=Jt(
|
|
94
|
-
Qt(
|
|
95
|
-
[...s],i));continue}let p=Kt(a,o.tables);if(p.length){t.push(...p);
|
|
96
|
-
name]){t.push(new Ht(a.name,i));continue}r[a.name]=o}return{services:r,
|
|
97
|
-
_t=e=>!!e.name&&!!e.tables&&!!e.extras,Jt=(e,r,t,n)=>{let a=$t(e)??[],
|
|
98
|
-
let i=ce(s,r,t,n);i&&o.push(i)}return o},Kt=(e,r)=>{let t=Wt(
|
|
99
|
-
schema:o,indexes:s}of r){if(!a)continue;let i=o.properties;
|
|
100
|
-
sourceColumn:d,targetColumn:
|
|
101
|
-
n.push(new g(z,e.file));let w=t[
|
|
102
|
-
w&&!w[d]&&n.push(new T(d,e.file));let fe=t[
|
|
103
|
-
p.targetIndex=de(s,
|
|
104
|
-
reduce((r,t)=>({...r,[t.name]:t}),{});var ue=e=>
|
|
105
|
-
metadata:getLinkedService":ue}),be=!0)};export{
|
|
89
|
+
columns:s}of r)s.some(p=>!n[p])&&a.push(new E(o,e.file));return a};var Te=e=>{let r={},t=[];for(let n in e){let a=e[n];if(!M(a)||Vt(a))continue;let o={
|
|
90
|
+
type:U,extras:{}},s=new Set(["engine","tables"]),i=a.file;o.name=a.name;for(let l of Gt(
|
|
91
|
+
a))if(!(!Bt(l)||l.inherited))switch(l.name){default:t.push(new qt(o.name,l.name,
|
|
92
|
+
i));break;case"client":break;case"engine":(o.engine=K(l.value,a,e,t))&&s.delete(
|
|
93
|
+
l.name);break;case"tables":(o.tables=Jt(l,a,e,t))&&s.delete(l.name);break;case"v\
|
|
94
|
+
ariables":o.variables=Qt(l,t);break;case"services":o.services=Ft(l,e,t);break}if(!_t(
|
|
95
|
+
o)){t.push(new I([...s],i));continue}let p=Kt(a,o.tables);if(p.length){t.push(...p);
|
|
96
|
+
continue}if(r[a.name]){t.push(new Ht(a.name,i));continue}r[a.name]=o}return{services:r,
|
|
97
|
+
errors:t}},_t=e=>!!e.name&&!!e.tables&&!!e.extras,Jt=(e,r,t,n)=>{let a=$t(e)??[],
|
|
98
|
+
o=[];for(let s of a){let i=ce(s,r,t,n);i&&o.push(i)}return o},Kt=(e,r)=>{let t=Wt(
|
|
99
|
+
r),n=[];for(let{relations:a,schema:o,indexes:s}of r){if(!a)continue;let i=o.properties;
|
|
100
|
+
for(let p of a){let{sourceTable:l,sourceColumn:d,targetColumn:A,targetAlias:z}=p;
|
|
101
|
+
i[A]||n.push(new T(A,e.file)),i[z]&&n.push(new g(z,e.file));let w=t[l]?.schema.properties;
|
|
102
|
+
w||n.push(new x(l,e.file)),w&&!w[d]&&n.push(new T(d,e.file));let fe=t[l]?.indexes??
|
|
103
|
+
[];p.sourceIndex=de(fe,d),p.targetIndex=de(s,A)}}return n},de=(e,r)=>e.find(({name:t})=>t===
|
|
104
|
+
r)?.type,Wt=e=>e.reduce((r,t)=>({...r,[t.name]:t}),{});var ue=e=>M(e)?e.name:null;var be=!1,Xn=()=>{be||(Xt(),Yt(),Zt("@ez4/database",{"metadata:getServices":Te,"\
|
|
105
|
+
metadata:getLinkedService":ue}),be=!0)};export{C as IncompleteHandlerError,I as IncompleteServiceError,O as IncompleteStreamError,
|
|
106
106
|
c as IncompleteTableError,v as IncorrectIndexesTypeError,f as IncorrectRelationsTypeError,
|
|
107
107
|
j as IncorrectSchemaTypeError,k as IncorrectStreamTypeError,E as InvalidIndexReferenceError,
|
|
108
108
|
D as InvalidIndexTypeError,h as InvalidIndexesTypeError,g as InvalidRelationAliasError,
|
package/dist/main.cjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
"use strict";var s=Object.defineProperty;var
|
|
1
|
+
"use strict";var s=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var b=Object.getOwnPropertyNames;var I=Object.prototype.hasOwnProperty;var u=(a,n)=>{for(var e in n)s(a,e,{get:n[e],enumerable:!0})},g=(a,n,e,r)=>{if(n&&
|
|
2
2
|
typeof n=="object"||typeof n=="function")for(let t of b(n))!I.call(a,t)&&t!==e&&
|
|
3
|
-
s(a,t,{get:()=>n[t],enumerable:!(r=
|
|
4
|
-
PaginationMode:()=>d,ParametersMode:()=>o,StreamType:()=>
|
|
5
|
-
module.exports=
|
|
3
|
+
s(a,t,{get:()=>n[t],enumerable:!(r=l(n,t))||r.enumerable});return a};var f=a=>g(s({},"__esModule",{value:!0}),a);var S={};u(S,{Database:()=>T,Index:()=>y,InsensitiveMode:()=>p,Order:()=>m,OrderMode:()=>x,
|
|
4
|
+
PaginationMode:()=>d,ParametersMode:()=>o,StreamType:()=>c,TransactionMode:()=>i});
|
|
5
|
+
module.exports=f(S);var c=(r=>(r.Insert="insert",r.Update="update",r.Delete="delete",r))(c||{});var o=(e=>(e.NameAndIndex="both",e.OnlyIndex="index",e))(o||{});var i=(e=>(e.Interactive="interactive",e.Static="static",e))(i||{});var p=(e=>(e.Unsupported="unsupported",e.Enabled="enabled",e))(p||{});var d=(e=>(e.Cursor="cursor",e.Offset="offset",e))(d||{});var m=(e=>(e.Asc="asc",e.Desc="desc",e))(m||{}),x=(e=>(e.IndexColumns="index",e.
|
|
6
6
|
AnyColumns="any",e))(x||{});var T;(a=>{})(T||={});var y=(t=>(t.Primary="primary",t.Secondary="secondary",t.Unique="unique",t.TTL="\
|
|
7
7
|
ttl",t))(y||{});0&&(module.exports={Database,Index,InsensitiveMode,Order,OrderMode,PaginationMode,
|
|
8
8
|
ParametersMode,StreamType,TransactionMode});
|
|
@@ -3,7 +3,6 @@ import type { TransactionMode } from './transaction.js';
|
|
|
3
3
|
import type { InsensitiveMode } from './insensitive.js';
|
|
4
4
|
import type { PaginationMode } from './pagination.js';
|
|
5
5
|
import type { OrderMode } from './order.js';
|
|
6
|
-
import type { TableMetadata } from './table.js';
|
|
7
6
|
import type { Database } from './database.js';
|
|
8
7
|
/**
|
|
9
8
|
* Database engine.
|
|
@@ -33,15 +32,15 @@ export declare namespace EngineUtils {
|
|
|
33
32
|
transactionMode: infer M;
|
|
34
33
|
} ? M : never;
|
|
35
34
|
/**
|
|
36
|
-
* Get the insensitive mode from the given
|
|
35
|
+
* Get the insensitive mode from the given database engine.
|
|
37
36
|
*/
|
|
38
|
-
type GetInsensitiveMode<
|
|
37
|
+
type GetInsensitiveMode<E extends DatabaseEngine> = E extends {
|
|
39
38
|
insensitiveMode: infer M;
|
|
40
39
|
} ? M : never;
|
|
41
40
|
/**
|
|
42
|
-
* Get the pagination mode from the given
|
|
41
|
+
* Get the pagination mode from the given database engine.
|
|
43
42
|
*/
|
|
44
|
-
type GetPaginationMode<
|
|
43
|
+
type GetPaginationMode<E extends DatabaseEngine> = E extends {
|
|
45
44
|
paginationMode: infer M;
|
|
46
45
|
} ? M : never;
|
|
47
46
|
/**
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type { EngineUtils } from './engine.js';
|
|
1
|
+
import type { DatabaseEngine, EngineUtils } from './engine.js';
|
|
3
2
|
/**
|
|
4
3
|
* Insensitive mode.
|
|
5
4
|
*/
|
|
@@ -12,9 +11,9 @@ export declare const enum InsensitiveMode {
|
|
|
12
11
|
*/
|
|
13
12
|
export declare namespace InsensitiveUtils {
|
|
14
13
|
/**
|
|
15
|
-
* Get the insensitive input based on the given
|
|
14
|
+
* Get the insensitive input based on the given database engine.
|
|
16
15
|
*/
|
|
17
|
-
type Input<
|
|
16
|
+
type Input<E extends DatabaseEngine> = EngineUtils.GetInsensitiveMode<E> extends InsensitiveMode.Enabled ? {
|
|
18
17
|
insensitive?: boolean;
|
|
19
18
|
} : {};
|
|
20
19
|
}
|
package/dist/services/order.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import type { AnyObject } from '@ez4/utils';
|
|
2
1
|
import type { DecomposeIndexName } from './indexes.js';
|
|
3
|
-
import type {
|
|
2
|
+
import type { TableMetadata } from './table.js';
|
|
4
3
|
import type { Database } from './database.js';
|
|
5
4
|
/**
|
|
6
5
|
* Query order types.
|
|
@@ -33,8 +32,7 @@ export declare namespace OrderUtils {
|
|
|
33
32
|
[P in keyof T]?: Order;
|
|
34
33
|
};
|
|
35
34
|
/**
|
|
36
|
-
* Order input type based on the
|
|
35
|
+
* Order input type based on the table metadata.
|
|
37
36
|
*/
|
|
38
|
-
|
|
39
|
-
export {};
|
|
37
|
+
type Input<T extends TableMetadata> = T['engine']['orderMode'] extends OrderMode.IndexColumns ? IndexInput<T['indexes']> : AnyInput<T['schema']>;
|
|
40
38
|
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type { EngineUtils } from './engine.js';
|
|
1
|
+
import type { DatabaseEngine, EngineUtils } from './engine.js';
|
|
3
2
|
/**
|
|
4
3
|
* Pagination mode.
|
|
5
4
|
*/
|
|
@@ -12,9 +11,9 @@ export declare const enum PaginationMode {
|
|
|
12
11
|
*/
|
|
13
12
|
export declare namespace PaginationUtils {
|
|
14
13
|
/**
|
|
15
|
-
* Get the pagination range based on the given
|
|
14
|
+
* Get the pagination range based on the given database engine.
|
|
16
15
|
*/
|
|
17
|
-
type Range<
|
|
16
|
+
type Range<E extends DatabaseEngine> = EngineUtils.GetPaginationMode<E> extends PaginationMode.Cursor ? {
|
|
18
17
|
cursor?: string;
|
|
19
18
|
limit?: number;
|
|
20
19
|
} : {
|
|
@@ -24,7 +23,7 @@ export declare namespace PaginationUtils {
|
|
|
24
23
|
/**
|
|
25
24
|
* Get the pagination begin based on the given table metadata.
|
|
26
25
|
*/
|
|
27
|
-
type Begin<
|
|
26
|
+
type Begin<E extends DatabaseEngine> = EngineUtils.GetPaginationMode<E> extends PaginationMode.Cursor ? {
|
|
28
27
|
cursor?: string;
|
|
29
28
|
} : {
|
|
30
29
|
skip?: number;
|
|
@@ -32,7 +31,7 @@ export declare namespace PaginationUtils {
|
|
|
32
31
|
/**
|
|
33
32
|
* Get the pagination end based on the given table metadata.
|
|
34
33
|
*/
|
|
35
|
-
type End<
|
|
34
|
+
type End<E extends DatabaseEngine> = EngineUtils.GetPaginationMode<E> extends PaginationMode.Cursor ? {
|
|
36
35
|
limit?: number;
|
|
37
36
|
} : {
|
|
38
37
|
take?: number;
|
|
@@ -40,7 +39,7 @@ export declare namespace PaginationUtils {
|
|
|
40
39
|
/**
|
|
41
40
|
* Get the pagination result based on the given table metadata.
|
|
42
41
|
*/
|
|
43
|
-
type Result<
|
|
42
|
+
type Result<E extends DatabaseEngine> = EngineUtils.GetPaginationMode<E> extends PaginationMode.Cursor ? {
|
|
44
43
|
cursor?: string;
|
|
45
44
|
} : {};
|
|
46
45
|
}
|
package/dist/services/query.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { DecomposeIndexName, PrimaryIndexes, UniqueIndexes } from './indexes.js';
|
|
2
|
+
import type { DatabaseEngine } from './engine.js';
|
|
2
3
|
import type { RelationMetadata } from './relations.js';
|
|
3
4
|
import type { InsensitiveUtils } from './insensitive.js';
|
|
4
5
|
import type { PaginationUtils } from './pagination.js';
|
|
@@ -16,46 +17,46 @@ export declare namespace Query {
|
|
|
16
17
|
};
|
|
17
18
|
export type UpdateOneInput<S extends AnyObject, T extends TableMetadata> = {
|
|
18
19
|
select?: StrictSelectInput<S, T>;
|
|
19
|
-
include?: StrictIncludeInput<T>;
|
|
20
|
+
include?: StrictIncludeInput<S, T>;
|
|
20
21
|
data: OptionalObject<UpdateDataInput<T>>;
|
|
21
22
|
where: WhereInput<T, true>;
|
|
22
23
|
};
|
|
23
24
|
export type FindOneInput<S extends AnyObject, T extends TableMetadata> = {
|
|
24
25
|
select: StrictSelectInput<S, T>;
|
|
25
|
-
include?: StrictIncludeInput<T>;
|
|
26
|
+
include?: StrictIncludeInput<S, T>;
|
|
26
27
|
where: WhereInput<T, true>;
|
|
27
28
|
};
|
|
28
29
|
export type UpsertOneInput<S extends AnyObject, T extends TableMetadata> = {
|
|
29
30
|
select?: StrictSelectInput<S, T>;
|
|
30
|
-
include?: StrictIncludeInput<T>;
|
|
31
|
+
include?: StrictIncludeInput<S, T>;
|
|
31
32
|
update: OptionalObject<UpdateDataInput<T>>;
|
|
32
33
|
insert: InsertDataInput<T>;
|
|
33
34
|
where: WhereInput<T, true>;
|
|
34
35
|
};
|
|
35
36
|
export type DeleteOneInput<S extends AnyObject, T extends TableMetadata> = {
|
|
36
37
|
select?: StrictSelectInput<S, T>;
|
|
37
|
-
include?: StrictIncludeInput<T>;
|
|
38
|
+
include?: StrictIncludeInput<S, T>;
|
|
38
39
|
where: WhereInput<T, true>;
|
|
39
40
|
};
|
|
40
41
|
export type InsertManyInput<T extends TableMetadata> = {
|
|
41
42
|
data: T['schema'][];
|
|
42
43
|
};
|
|
43
|
-
export type UpdateManyInput<S extends AnyObject, T extends TableMetadata> = PaginationUtils.End<T> & {
|
|
44
|
+
export type UpdateManyInput<S extends AnyObject, T extends TableMetadata> = PaginationUtils.End<T['engine']> & {
|
|
44
45
|
select?: StrictSelectInput<S, T>;
|
|
45
|
-
include?: StrictIncludeInput<T>;
|
|
46
|
+
include?: StrictIncludeInput<S, T>;
|
|
46
47
|
data: OptionalObject<UpdateDataInput<T>>;
|
|
47
48
|
where?: WhereInput<T>;
|
|
48
49
|
};
|
|
49
|
-
export type FindManyInput<S extends AnyObject, T extends TableMetadata, C extends boolean> = PaginationUtils.Range<T> & {
|
|
50
|
+
export type FindManyInput<S extends AnyObject, T extends TableMetadata, C extends boolean> = PaginationUtils.Range<T['engine']> & {
|
|
50
51
|
count?: C;
|
|
51
52
|
select: StrictSelectInput<S, T>;
|
|
52
|
-
include?: StrictIncludeInput<T>;
|
|
53
|
+
include?: StrictIncludeInput<S, T>;
|
|
53
54
|
where?: WhereInput<T>;
|
|
54
55
|
order?: OrderInput<T>;
|
|
55
56
|
};
|
|
56
|
-
export type DeleteManyInput<S extends AnyObject, T extends TableMetadata> = PaginationUtils.End<T> & {
|
|
57
|
+
export type DeleteManyInput<S extends AnyObject, T extends TableMetadata> = PaginationUtils.End<T['engine']> & {
|
|
57
58
|
select?: StrictSelectInput<S, T>;
|
|
58
|
-
include?: StrictIncludeInput<T>;
|
|
59
|
+
include?: StrictIncludeInput<S, T>;
|
|
59
60
|
where?: WhereInput<T>;
|
|
60
61
|
};
|
|
61
62
|
export type CountInput<T extends TableMetadata> = {
|
|
@@ -68,7 +69,7 @@ export declare namespace Query {
|
|
|
68
69
|
export type DeleteOneResult<S extends AnyObject, T extends TableMetadata> = S extends never ? void : Record<S, T> | undefined;
|
|
69
70
|
export type UpdateManyResult<S extends AnyObject, T extends TableMetadata> = S extends never ? void : Record<S, T>[];
|
|
70
71
|
export type InsertManyResult = void;
|
|
71
|
-
export type FindManyResult<S extends AnyObject, T extends TableMetadata, C extends boolean> = PaginationUtils.Result<T> & (C extends true ? {
|
|
72
|
+
export type FindManyResult<S extends AnyObject, T extends TableMetadata, C extends boolean> = PaginationUtils.Result<T['engine']> & (C extends true ? {
|
|
72
73
|
records: Record<S, T>[];
|
|
73
74
|
total: number;
|
|
74
75
|
} : {
|
|
@@ -78,34 +79,35 @@ export declare namespace Query {
|
|
|
78
79
|
export type Record<S extends AnyObject, T extends TableMetadata> = S extends never ? undefined : PartialObject<SelectFields<T['schema'], T['relations']>, S, false>;
|
|
79
80
|
export type SelectInput<T extends TableMetadata> = PartialProperties<SelectFields<T['schema'], T['relations']>>;
|
|
80
81
|
export type StrictSelectInput<S extends AnyObject, T extends TableMetadata> = StrictObject<S, FlatObject<SelectFields<T['schema'], T['relations']>>>;
|
|
81
|
-
export type InsertDataInput<T extends TableMetadata> = Omit<IsObjectEmpty<T['relations']['changes']> extends true ? T['schema'] : T['schema'] & T['relations']['changes'],
|
|
82
|
-
export type UpdateDataInput<T extends TableMetadata> = AtomicDataInput<Omit<IsObjectEmpty<T['relations']['changes']> extends true ? T['schema'] : T['schema'] & FlatObject<T['relations']['changes']>,
|
|
83
|
-
export type OrderInput<T extends TableMetadata
|
|
84
|
-
export type StrictIncludeInput<T extends TableMetadata> = IsObjectEmpty<T['relations']['filters']> extends true ? never : {
|
|
85
|
-
[P in keyof T['relations']['filters']]?:
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
82
|
+
export type InsertDataInput<T extends TableMetadata> = Omit<IsObjectEmpty<T['relations']['changes']> extends true ? T['schema'] : T['schema'] & T['relations']['changes'], T['relations']['indexes']>;
|
|
83
|
+
export type UpdateDataInput<T extends TableMetadata> = AtomicDataInput<Omit<IsObjectEmpty<T['relations']['changes']> extends true ? T['schema'] : T['schema'] & FlatObject<T['relations']['changes']>, T['relations']['indexes']>>;
|
|
84
|
+
export type OrderInput<T extends TableMetadata> = OrderUtils.Input<T>;
|
|
85
|
+
export type StrictIncludeInput<S extends AnyObject, T extends TableMetadata> = IsObjectEmpty<T['relations']['filters']> extends true ? never : {
|
|
86
|
+
[P in keyof T['relations']['filters']]?: P extends keyof S ? StrictIncludeRelation<T['relations']['filters'][P], T['engine']> : never;
|
|
87
|
+
};
|
|
88
|
+
export type StrictIncludeOrder<V extends AnyObject> = OrderUtils.AnyInput<V>;
|
|
89
|
+
export type StrictIncludeRelation<V extends AnyObject, E extends DatabaseEngine> = PaginationUtils.Range<E> & {
|
|
90
|
+
where?: WhereRelationField<V, E>;
|
|
91
|
+
order?: StrictIncludeOrder<V>;
|
|
89
92
|
};
|
|
90
93
|
export type WhereInput<T extends TableMetadata, I extends boolean = false> = WhereInputFilters<T, I extends true ? T['indexes'] : {}> & {
|
|
91
94
|
NOT?: WhereInput<T>;
|
|
92
95
|
AND?: WhereInput<T>[];
|
|
93
96
|
OR?: WhereInput<T>[];
|
|
94
97
|
};
|
|
95
|
-
type IndexFields<R extends RelationMetadata> = string extends R['indexes'] ? never : R['indexes'];
|
|
96
98
|
type SelectFields<T extends Database.Schema, R extends RelationMetadata> = IsObjectEmpty<R['selects']> extends true ? T : T & R['selects'];
|
|
97
|
-
type WhereOperations<V,
|
|
98
|
-
type WhereField<V,
|
|
99
|
-
type WhereObjectField<V extends AnyObject,
|
|
100
|
-
[P in keyof V]?: WhereField<V[P],
|
|
99
|
+
type WhereOperations<V, E extends DatabaseEngine> = WhereNegate<V> | WhereEqual<V> | WhereGreaterThan<V> | WhereGreaterThanOrEqual<V> | WhereLessThan<V> | WhereLessThanOrEqual<V> | WhereIn<V> | WhereBetween<V> | WhereIsMissing | WhereIsNull | WhereStartsWith<E> | WhereContains<V, E>;
|
|
100
|
+
type WhereField<V, E extends DatabaseEngine> = IsObject<V> extends false ? V | WhereOperations<V, E> : IsNullable<V> extends true ? null | WhereObjectField<NonNullable<V>, E> : WhereObjectField<NonNullable<V>, E>;
|
|
101
|
+
type WhereObjectField<V extends AnyObject, E extends DatabaseEngine> = {
|
|
102
|
+
[P in keyof V]?: WhereField<V[P], E>;
|
|
101
103
|
};
|
|
102
|
-
type WhereRelationField<V extends AnyObject,
|
|
103
|
-
NOT?: WhereRelationField<V,
|
|
104
|
-
AND?: WhereRelationField<V,
|
|
105
|
-
OR?: WhereRelationField<V,
|
|
104
|
+
type WhereRelationField<V extends AnyObject, E extends DatabaseEngine> = WhereObjectField<V, E> & {
|
|
105
|
+
NOT?: WhereRelationField<V, E>;
|
|
106
|
+
AND?: WhereRelationField<V, E>[];
|
|
107
|
+
OR?: WhereRelationField<V, E>[];
|
|
106
108
|
};
|
|
107
|
-
type WhereRelationFilters<V extends AnyObject,
|
|
108
|
-
[P in keyof V]?: IsObject<V[P]> extends true ? IsObjectEmpty<V[P]> extends false ? null | WhereRelationField<V[P],
|
|
109
|
+
type WhereRelationFilters<V extends AnyObject, E extends DatabaseEngine> = {
|
|
110
|
+
[P in keyof V]?: IsObject<V[P]> extends true ? IsObjectEmpty<V[P]> extends false ? null | WhereRelationField<V[P], E> : null | {} : never;
|
|
109
111
|
};
|
|
110
112
|
type WhereIndexFields<I extends Database.Indexes> = PrimaryIndexes<I> & UniqueIndexes<I>;
|
|
111
113
|
type WhereRequiredFilters<V extends AnyObject, I extends Database.Indexes> = {
|
|
@@ -114,13 +116,13 @@ export declare namespace Query {
|
|
|
114
116
|
};
|
|
115
117
|
}[keyof WhereIndexFields<I>];
|
|
116
118
|
type WhereOptionalFilters<V extends AnyObject, T extends TableMetadata, I extends Database.Indexes> = {
|
|
117
|
-
[P in Exclude<keyof V, keyof WhereIndexFields<I>>]?: WhereField<V[P], T>;
|
|
119
|
+
[P in Exclude<keyof V, keyof WhereIndexFields<I>>]?: WhereField<V[P], T['engine']>;
|
|
118
120
|
};
|
|
119
|
-
type WhereCommonFilters<V extends AnyObject, T extends TableMetadata, I extends Database.Indexes> = IsObjectEmpty<I> extends true ? WhereObjectField<V, T> : WhereRequiredFilters<V, I> & WhereOptionalFilters<V, T, I>;
|
|
120
|
-
type WhereInputFilters<T extends TableMetadata, I extends Database.Indexes> = WhereCommonFilters<T['schema'], T, I> & WhereRelationFilters<T['relations']['filters'], T>;
|
|
121
|
-
export type WhereOperators = keyof (WhereNegate<any
|
|
122
|
-
type WhereNegate<V
|
|
123
|
-
not: V
|
|
121
|
+
type WhereCommonFilters<V extends AnyObject, T extends TableMetadata, I extends Database.Indexes> = IsObjectEmpty<I> extends true ? WhereObjectField<V, T['engine']> : WhereRequiredFilters<V, I> & WhereOptionalFilters<V, T, I>;
|
|
122
|
+
type WhereInputFilters<T extends TableMetadata, I extends Database.Indexes> = WhereCommonFilters<T['schema'], T, I> & WhereRelationFilters<T['relations']['filters'], T['engine']>;
|
|
123
|
+
export type WhereOperators = keyof (WhereNegate<any> & WhereEqual<any> & WhereGreaterThan<any> & WhereGreaterThanOrEqual<any> & WhereLessThan<any> & WhereLessThanOrEqual<any> & WhereIn<any> & WhereBetween<any> & WhereIsMissing & WhereIsNull & WhereStartsWith<never> & WhereContains<any, never>);
|
|
124
|
+
type WhereNegate<V> = {
|
|
125
|
+
not: V;
|
|
124
126
|
};
|
|
125
127
|
type WhereEqual<V> = {
|
|
126
128
|
equal: V;
|
|
@@ -149,10 +151,10 @@ export declare namespace Query {
|
|
|
149
151
|
type WhereIsNull = {
|
|
150
152
|
isNull: boolean;
|
|
151
153
|
};
|
|
152
|
-
type WhereStartsWith<
|
|
154
|
+
type WhereStartsWith<E extends DatabaseEngine> = InsensitiveUtils.Input<E> & {
|
|
153
155
|
startsWith: string;
|
|
154
156
|
};
|
|
155
|
-
type WhereContains<V,
|
|
157
|
+
type WhereContains<V, E extends DatabaseEngine> = (V extends string ? InsensitiveUtils.Input<E> : {}) & {
|
|
156
158
|
contains: IsObject<V> extends true ? Partial<V> : V;
|
|
157
159
|
};
|
|
158
160
|
export type AtomicOperators = keyof (AtomicIncrement & AtomicDecrement & AtomicMultiply & AtomicDivide);
|
|
@@ -6,10 +6,10 @@ import type { TableSchemas } from './schemas.js';
|
|
|
6
6
|
* Internal relation type.
|
|
7
7
|
*/
|
|
8
8
|
export type RelationMetadata = {
|
|
9
|
-
indexes: string;
|
|
10
9
|
filters: Record<string, {}>;
|
|
11
10
|
selects: Record<string, {}>;
|
|
12
11
|
changes: Record<string, {}>;
|
|
12
|
+
indexes: string;
|
|
13
13
|
};
|
|
14
14
|
/**
|
|
15
15
|
* Given a relation source name `T`, it produces the source table name.
|
|
@@ -44,23 +44,23 @@ type TableRelation<T, S extends Record<string, Database.Schema>, I extends Recor
|
|
|
44
44
|
relations: infer R;
|
|
45
45
|
} ? N extends string ? R extends AnyObject ? {
|
|
46
46
|
[P in N]: {
|
|
47
|
-
indexes:
|
|
47
|
+
indexes: RelationIndexes<PropertyType<N, I>, R>;
|
|
48
48
|
filters: FilterableRelationSchemas<S, R>;
|
|
49
49
|
changes: RequiredRelationSchemas<PropertyType<N, S>, S, I, R, true> & OptionalRelationSchemas<PropertyType<N, S>, S, I, R, true>;
|
|
50
50
|
selects: RequiredRelationSchemas<PropertyType<N, S>, S, I, R, false> & OptionalRelationSchemas<PropertyType<N, S>, S, I, R, false>;
|
|
51
51
|
};
|
|
52
52
|
} : {} : {} : {};
|
|
53
53
|
/**
|
|
54
|
-
* Produce an object containing all
|
|
54
|
+
* Produce an object containing all relation indexes.
|
|
55
55
|
*/
|
|
56
|
-
type
|
|
57
|
-
[C in keyof R as
|
|
56
|
+
type RelationIndexes<I extends Database.Indexes, R extends AnyObject> = keyof {
|
|
57
|
+
[C in keyof R as RelationTargetColumn<C> extends keyof PrimaryIndexes<I> ? never : RelationTargetColumn<C>]: never;
|
|
58
58
|
};
|
|
59
59
|
/**
|
|
60
60
|
* Produce an object containing all filterable relation schemas.
|
|
61
61
|
*/
|
|
62
62
|
type FilterableRelationSchemas<S extends Record<string, Database.Schema>, R extends AnyObject> = {
|
|
63
|
-
[C in keyof R as RelationTargetAlias<C>]: Omit<PropertyType<RelationSourceTable<R[C]>, S>,
|
|
63
|
+
[C in keyof R as RelationTargetAlias<C>]: Omit<PropertyType<RelationSourceTable<R[C]>, S>, RelationSourceColumn<R[C]>>;
|
|
64
64
|
};
|
|
65
65
|
/**
|
|
66
66
|
* Produce an object containing only required relation schemas.
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { TypeClass } from '@ez4/reflection';
|
|
2
|
-
export declare const getLinkedService: (
|
|
2
|
+
export declare const getLinkedService: (declaration: TypeClass) => string | null;
|
package/dist/types/stream.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ez4/database",
|
|
3
3
|
"description": "EZ4: Components to build database services",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.20.0",
|
|
5
5
|
"author": "Silas B.",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"type": "module",
|
|
@@ -42,10 +42,10 @@
|
|
|
42
42
|
"live:publish": "npm run test && npm publish --access public"
|
|
43
43
|
},
|
|
44
44
|
"dependencies": {
|
|
45
|
-
"@ez4/common": "^0.
|
|
46
|
-
"@ez4/project": "^0.
|
|
47
|
-
"@ez4/reflection": "^0.
|
|
48
|
-
"@ez4/schema": "^0.
|
|
49
|
-
"@ez4/utils": "^0.
|
|
45
|
+
"@ez4/common": "^0.20.0",
|
|
46
|
+
"@ez4/project": "^0.20.0",
|
|
47
|
+
"@ez4/reflection": "^0.20.0",
|
|
48
|
+
"@ez4/schema": "^0.20.0",
|
|
49
|
+
"@ez4/utils": "^0.20.0"
|
|
50
50
|
}
|
|
51
51
|
}
|