@nicia-ai/typegraph 0.50.0 → 0.51.1
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/README.md +12 -0
- package/dist/backend/drizzle/indexes.cjs +10 -8
- package/dist/backend/drizzle/indexes.d.cts +1 -1
- package/dist/backend/drizzle/indexes.d.ts +1 -1
- package/dist/backend/drizzle/indexes.js +6 -4
- package/dist/backend/index.cjs +183 -50
- package/dist/backend/index.d.cts +90 -4
- package/dist/backend/index.d.ts +90 -4
- package/dist/backend/index.js +6 -9
- package/dist/backend/postgres/index.cjs +30 -28
- package/dist/backend/postgres/index.d.cts +7 -7
- package/dist/backend/postgres/index.d.ts +7 -7
- package/dist/backend/postgres/index.js +16 -14
- package/dist/backend/postgres/pglite-store.cjs +6 -62
- package/dist/backend/postgres/pglite-store.cjs.map +1 -1
- package/dist/backend/postgres/pglite-store.d.cts +8 -8
- package/dist/backend/postgres/pglite-store.d.ts +8 -8
- package/dist/backend/postgres/pglite-store.js +6 -62
- package/dist/backend/postgres/pglite-store.js.map +1 -1
- package/dist/backend/postgres/pglite.cjs +18 -16
- package/dist/backend/postgres/pglite.d.cts +3 -3
- package/dist/backend/postgres/pglite.d.ts +3 -3
- package/dist/backend/postgres/pglite.js +17 -15
- package/dist/backend/sqlite/index.cjs +27 -25
- package/dist/backend/sqlite/index.d.cts +7 -7
- package/dist/backend/sqlite/index.d.ts +7 -7
- package/dist/backend/sqlite/index.js +14 -12
- package/dist/backend/sqlite/libsql.cjs +21 -19
- package/dist/backend/sqlite/libsql.cjs.map +1 -1
- package/dist/backend/sqlite/libsql.d.cts +3 -3
- package/dist/backend/sqlite/libsql.d.ts +3 -3
- package/dist/backend/sqlite/libsql.js +16 -14
- package/dist/backend/sqlite/libsql.js.map +1 -1
- package/dist/backend/sqlite/local-store.cjs +8 -64
- package/dist/backend/sqlite/local-store.cjs.map +1 -1
- package/dist/backend/sqlite/local-store.d.cts +8 -8
- package/dist/backend/sqlite/local-store.d.ts +8 -8
- package/dist/backend/sqlite/local-store.js +7 -64
- package/dist/backend/sqlite/local-store.js.map +1 -1
- package/dist/backend/sqlite/local.cjs +22 -19
- package/dist/backend/sqlite/local.d.cts +3 -3
- package/dist/backend/sqlite/local.d.ts +3 -3
- package/dist/backend/sqlite/local.js +18 -15
- package/dist/{chunk-TUVD4DFR.cjs → chunk-2CVDZCXH.cjs} +122 -51
- package/dist/chunk-2CVDZCXH.cjs.map +1 -0
- package/dist/{chunk-I5C6OTKR.js → chunk-2DWTBNSH.js} +3 -3
- package/dist/{chunk-I5C6OTKR.js.map → chunk-2DWTBNSH.js.map} +1 -1
- package/dist/{chunk-C76WFIVZ.cjs → chunk-2KCTP3U2.cjs} +180 -127
- package/dist/chunk-2KCTP3U2.cjs.map +1 -0
- package/dist/{chunk-BYBDM423.cjs → chunk-322TBTOQ.cjs} +48 -48
- package/dist/{chunk-BYBDM423.cjs.map → chunk-322TBTOQ.cjs.map} +1 -1
- package/dist/chunk-36SX6QXP.cjs +186 -0
- package/dist/chunk-36SX6QXP.cjs.map +1 -0
- package/dist/{chunk-H3XP6BAV.js → chunk-36VYWVQU.js} +3 -3
- package/dist/{chunk-H3XP6BAV.js.map → chunk-36VYWVQU.js.map} +1 -1
- package/dist/{chunk-VTJVMP4I.js → chunk-4DKY6RIU.js} +102 -31
- package/dist/chunk-4DKY6RIU.js.map +1 -0
- package/dist/chunk-4QKOZYMV.js +9 -0
- package/dist/chunk-4QKOZYMV.js.map +1 -0
- package/dist/{chunk-U3Z7XKAG.js → chunk-57JM6NW3.js} +8 -18
- package/dist/chunk-57JM6NW3.js.map +1 -0
- package/dist/{chunk-WCLMKNQE.cjs → chunk-5FVZSE3B.cjs} +1356 -1108
- package/dist/chunk-5FVZSE3B.cjs.map +1 -0
- package/dist/{chunk-XMY2SXOH.cjs → chunk-5WWEYV4H.cjs} +2208 -579
- package/dist/chunk-5WWEYV4H.cjs.map +1 -0
- package/dist/{chunk-WQBAQZHR.js → chunk-6NLYIMJO.js} +4 -4
- package/dist/{chunk-WQBAQZHR.js.map → chunk-6NLYIMJO.js.map} +1 -1
- package/dist/{chunk-G2TLHH6T.cjs → chunk-7B7I7YAW.cjs} +6 -6
- package/dist/{chunk-G2TLHH6T.cjs.map → chunk-7B7I7YAW.cjs.map} +1 -1
- package/dist/{chunk-EDLKIQRI.js → chunk-7G5IYROL.js} +6 -548
- package/dist/chunk-7G5IYROL.js.map +1 -0
- package/dist/{chunk-46UGOVRW.js → chunk-7QFRK6PU.js} +3 -7
- package/dist/chunk-7QFRK6PU.js.map +1 -0
- package/dist/chunk-A4C4NJ5U.cjs +12 -0
- package/dist/chunk-A4C4NJ5U.cjs.map +1 -0
- package/dist/{chunk-7CCMCMJO.cjs → chunk-AOGOC6JF.cjs} +77 -68
- package/dist/chunk-AOGOC6JF.cjs.map +1 -0
- package/dist/{chunk-TYGGUWMS.cjs → chunk-B3MN7EJR.cjs} +177 -137
- package/dist/chunk-B3MN7EJR.cjs.map +1 -0
- package/dist/{chunk-K6VKTBST.cjs → chunk-BZ5MVITP.cjs} +4 -4
- package/dist/{chunk-K6VKTBST.cjs.map → chunk-BZ5MVITP.cjs.map} +1 -1
- package/dist/{chunk-ZAQUKCUC.js → chunk-CBOD7TXH.js} +5 -5
- package/dist/{chunk-ZAQUKCUC.js.map → chunk-CBOD7TXH.js.map} +1 -1
- package/dist/{chunk-LLVOQOWE.cjs → chunk-CRZ56SZU.cjs} +6 -5
- package/dist/chunk-CRZ56SZU.cjs.map +1 -0
- package/dist/{chunk-ON47CBE4.cjs → chunk-D3GWARN7.cjs} +47 -47
- package/dist/{chunk-ON47CBE4.cjs.map → chunk-D3GWARN7.cjs.map} +1 -1
- package/dist/{chunk-W5SOCUBL.js → chunk-D3OUDFU7.js} +5 -5
- package/dist/{chunk-W5SOCUBL.js.map → chunk-D3OUDFU7.js.map} +1 -1
- package/dist/chunk-EKG2UXNX.cjs +23 -0
- package/dist/chunk-EKG2UXNX.cjs.map +1 -0
- package/dist/{chunk-2Q45FAIE.js → chunk-EVYW3532.js} +28 -19
- package/dist/chunk-EVYW3532.js.map +1 -0
- package/dist/{chunk-7PRMDZIA.cjs → chunk-FMMW3KX7.cjs} +21 -55
- package/dist/chunk-FMMW3KX7.cjs.map +1 -0
- package/dist/chunk-H2VWDQWC.cjs +571 -0
- package/dist/chunk-H2VWDQWC.cjs.map +1 -0
- package/dist/chunk-H4FY6OZK.js +13 -0
- package/dist/chunk-H4FY6OZK.js.map +1 -0
- package/dist/{chunk-OJHD3LXJ.cjs → chunk-H5IJSROF.cjs} +2 -8
- package/dist/chunk-H5IJSROF.cjs.map +1 -0
- package/dist/{chunk-U5EL6JUV.js → chunk-I5IOSA27.js} +101 -103
- package/dist/chunk-I5IOSA27.js.map +1 -0
- package/dist/{chunk-SHC7BCG5.cjs → chunk-I7YAY2VQ.cjs} +7 -7
- package/dist/{chunk-SHC7BCG5.cjs.map → chunk-I7YAY2VQ.cjs.map} +1 -1
- package/dist/chunk-IRCWIA3R.js +20 -0
- package/dist/chunk-IRCWIA3R.js.map +1 -0
- package/dist/chunk-IVQBLXBK.cjs +55 -0
- package/dist/chunk-IVQBLXBK.cjs.map +1 -0
- package/dist/{chunk-5PP4KRPV.js → chunk-IZD4HTCP.js} +5 -5
- package/dist/{chunk-5PP4KRPV.js.map → chunk-IZD4HTCP.js.map} +1 -1
- package/dist/{chunk-RDP6ZRSM.cjs → chunk-JQKMEKKW.cjs} +261 -204
- package/dist/chunk-JQKMEKKW.cjs.map +1 -0
- package/dist/chunk-JVA3KDEA.cjs +691 -0
- package/dist/chunk-JVA3KDEA.cjs.map +1 -0
- package/dist/{chunk-JG5XIJDY.js → chunk-K67P5DLL.js} +62 -22
- package/dist/chunk-K67P5DLL.js.map +1 -0
- package/dist/{chunk-MX7EKQPM.js → chunk-K6OZIHKI.js} +345 -97
- package/dist/chunk-K6OZIHKI.js.map +1 -0
- package/dist/{chunk-CS6JTQQ2.cjs → chunk-KACEYDYV.cjs} +94 -62
- package/dist/chunk-KACEYDYV.cjs.map +1 -0
- package/dist/{chunk-5OWHU7Z7.cjs → chunk-L6EVYIID.cjs} +248 -210
- package/dist/chunk-L6EVYIID.cjs.map +1 -0
- package/dist/{chunk-7OWE7WD6.js → chunk-LI4K2KEJ.js} +4 -4
- package/dist/{chunk-7OWE7WD6.js.map → chunk-LI4K2KEJ.js.map} +1 -1
- package/dist/chunk-LKZDQ2B4.js +1581 -0
- package/dist/chunk-LKZDQ2B4.js.map +1 -0
- package/dist/{chunk-45YZXI6X.cjs → chunk-LLFPQOBA.cjs} +27 -27
- package/dist/{chunk-45YZXI6X.cjs.map → chunk-LLFPQOBA.cjs.map} +1 -1
- package/dist/{chunk-ZRJTM7MT.js → chunk-LZMQ3SFK.js} +3 -3
- package/dist/{chunk-ZRJTM7MT.js.map → chunk-LZMQ3SFK.js.map} +1 -1
- package/dist/{chunk-DI6VC62F.js → chunk-M3VTS3F6.js} +3 -3
- package/dist/{chunk-DI6VC62F.js.map → chunk-M3VTS3F6.js.map} +1 -1
- package/dist/{chunk-MZ34E2GN.js → chunk-NBOS7BY3.js} +60 -21
- package/dist/chunk-NBOS7BY3.js.map +1 -0
- package/dist/{chunk-YA36ABIL.js → chunk-NGQDGL5X.js} +14 -48
- package/dist/chunk-NGQDGL5X.js.map +1 -0
- package/dist/{chunk-ZBFZGLZE.cjs → chunk-NLX5OWK7.cjs} +6 -2
- package/dist/chunk-NLX5OWK7.cjs.map +1 -0
- package/dist/chunk-NUQ2YFFH.cjs +1637 -0
- package/dist/chunk-NUQ2YFFH.cjs.map +1 -0
- package/dist/{chunk-TTCOPKUL.cjs → chunk-OGL4X4PH.cjs} +182 -184
- package/dist/chunk-OGL4X4PH.cjs.map +1 -0
- package/dist/{chunk-HY5BNOUN.cjs → chunk-OTNTGEXR.cjs} +4 -4
- package/dist/{chunk-HY5BNOUN.cjs.map → chunk-OTNTGEXR.cjs.map} +1 -1
- package/dist/chunk-OTWE63BW.js +53 -0
- package/dist/chunk-OTWE63BW.js.map +1 -0
- package/dist/chunk-PC5NGH5A.js +549 -0
- package/dist/chunk-PC5NGH5A.js.map +1 -0
- package/dist/{chunk-IPRP6TDL.cjs → chunk-PS3TUWJM.cjs} +7 -7
- package/dist/{chunk-IPRP6TDL.cjs.map → chunk-PS3TUWJM.cjs.map} +1 -1
- package/dist/{chunk-V76FGHY3.js → chunk-PVFFH7TL.js} +5 -5
- package/dist/{chunk-V76FGHY3.js.map → chunk-PVFFH7TL.js.map} +1 -1
- package/dist/chunk-QCD5JKU4.cjs +15 -0
- package/dist/chunk-QCD5JKU4.cjs.map +1 -0
- package/dist/{chunk-IRPYOHRC.js → chunk-QG5VEOKX.js} +6 -2
- package/dist/chunk-QG5VEOKX.js.map +1 -0
- package/dist/{chunk-2CYI5HRH.js → chunk-RI7RJH4G.js} +49 -17
- package/dist/chunk-RI7RJH4G.js.map +1 -0
- package/dist/{chunk-5LKOVCPP.js → chunk-RVUL2HXY.js} +6 -5
- package/dist/chunk-RVUL2HXY.js.map +1 -0
- package/dist/{chunk-WK23PGTP.cjs → chunk-S5GU4LUN.cjs} +11 -11
- package/dist/{chunk-WK23PGTP.cjs.map → chunk-S5GU4LUN.cjs.map} +1 -1
- package/dist/{chunk-S33YQEL7.js → chunk-SDPWO2Z5.js} +6 -6
- package/dist/{chunk-S33YQEL7.js.map → chunk-SDPWO2Z5.js.map} +1 -1
- package/dist/{chunk-6S3PTHL4.js → chunk-SLGGT2XD.js} +3 -3
- package/dist/{chunk-6S3PTHL4.js.map → chunk-SLGGT2XD.js.map} +1 -1
- package/dist/{chunk-HSEZ7X6Y.cjs → chunk-TIJUA4I6.cjs} +45 -45
- package/dist/{chunk-HSEZ7X6Y.cjs.map → chunk-TIJUA4I6.cjs.map} +1 -1
- package/dist/{chunk-CSNOYIB4.cjs → chunk-TM54OBHX.cjs} +13 -13
- package/dist/{chunk-CSNOYIB4.cjs.map → chunk-TM54OBHX.cjs.map} +1 -1
- package/dist/{chunk-MM3JHVKZ.cjs → chunk-TUWSVL6I.cjs} +4 -4
- package/dist/{chunk-MM3JHVKZ.cjs.map → chunk-TUWSVL6I.cjs.map} +1 -1
- package/dist/{chunk-2GIV5X4P.js → chunk-TYEYRCXL.js} +86 -33
- package/dist/chunk-TYEYRCXL.js.map +1 -0
- package/dist/{chunk-MJPZNEJZ.js → chunk-UKOVGCRN.js} +2095 -496
- package/dist/chunk-UKOVGCRN.js.map +1 -0
- package/dist/chunk-UYKDYE5D.cjs +12 -0
- package/dist/{chunk-KWNWG4RC.cjs.map → chunk-UYKDYE5D.cjs.map} +1 -1
- package/dist/{chunk-FX5ZW6PN.js → chunk-VAAC7L57.js} +95 -40
- package/dist/chunk-VAAC7L57.js.map +1 -0
- package/dist/{chunk-ISKCIQF2.cjs → chunk-VKHXYVN7.cjs} +14 -25
- package/dist/chunk-VKHXYVN7.cjs.map +1 -0
- package/dist/chunk-VUQZNUHU.js +171 -0
- package/dist/chunk-VUQZNUHU.js.map +1 -0
- package/dist/{chunk-K2XYLVVB.cjs → chunk-WDM5WQK4.cjs} +175 -136
- package/dist/chunk-WDM5WQK4.cjs.map +1 -0
- package/dist/{chunk-GVYVGGPJ.js → chunk-WFSYYU4W.js} +66 -28
- package/dist/chunk-WFSYYU4W.js.map +1 -0
- package/dist/{chunk-R7MRFE5P.js → chunk-WS5MT2UJ.js} +3 -3
- package/dist/{chunk-R7MRFE5P.js.map → chunk-WS5MT2UJ.js.map} +1 -1
- package/dist/chunk-XORONCV3.js +202 -0
- package/dist/chunk-XORONCV3.js.map +1 -0
- package/dist/chunk-ZGVTNKTX.cjs +217 -0
- package/dist/chunk-ZGVTNKTX.cjs.map +1 -0
- package/dist/core/index.cjs +20 -20
- package/dist/core/index.d.cts +4 -4
- package/dist/core/index.d.ts +4 -4
- package/dist/core/index.js +4 -4
- package/dist/{ddl-B49O7dB_.d.ts → ddl-BvcbgzHo.d.ts} +3 -3
- package/dist/{ddl-DcZG660s.d.cts → ddl-Ufebz5q5.d.cts} +3 -3
- package/dist/graph-extension/index.d.cts +2 -4
- package/dist/graph-extension/index.d.ts +2 -4
- package/dist/graph-merge/index.cjs +140 -125
- package/dist/graph-merge/index.cjs.map +1 -1
- package/dist/graph-merge/index.d.cts +8 -9
- package/dist/graph-merge/index.d.ts +8 -9
- package/dist/graph-merge/index.js +42 -27
- package/dist/graph-merge/index.js.map +1 -1
- package/dist/index.cjs +144 -143
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +11 -12
- package/dist/index.d.ts +11 -12
- package/dist/index.js +30 -29
- package/dist/index.js.map +1 -1
- package/dist/indexes/index.cjs +14 -12
- package/dist/indexes/index.d.cts +4 -4
- package/dist/indexes/index.d.ts +4 -4
- package/dist/indexes/index.js +7 -5
- package/dist/{ingestion-import-target-CI8OWIkM.d.ts → ingestion-import-target-CAs1OX-l.d.cts} +1 -1
- package/dist/{ingestion-import-target-DCpfM1PX.d.cts → ingestion-import-target-DCQSPfNx.d.ts} +1 -1
- package/dist/interchange/index.cjs +41 -39
- package/dist/interchange/index.cjs.map +1 -1
- package/dist/interchange/index.d.cts +8 -8
- package/dist/interchange/index.d.ts +8 -8
- package/dist/interchange/index.js +16 -14
- package/dist/interchange/index.js.map +1 -1
- package/dist/local-store-impl-JC7OBRAW.js +75 -0
- package/dist/local-store-impl-JC7OBRAW.js.map +1 -0
- package/dist/local-store-impl-UOS2LUIG.cjs +77 -0
- package/dist/local-store-impl-UOS2LUIG.cjs.map +1 -0
- package/dist/{manager-Cfg1ENj1.d.ts → manager-B68OrPR2.d.ts} +1 -2
- package/dist/{manager-D348fa6W.d.cts → manager-D_t7oK69.d.cts} +1 -2
- package/dist/pglite-store-impl-J5J5AA52.cjs +75 -0
- package/dist/pglite-store-impl-J5J5AA52.cjs.map +1 -0
- package/dist/pglite-store-impl-LDRH2DUH.js +73 -0
- package/dist/pglite-store-impl-LDRH2DUH.js.map +1 -0
- package/dist/{postgres-UStOycLI.d.ts → postgres-BPLSVyHM.d.ts} +1 -1
- package/dist/{postgres-CH1kkM5J.d.cts → postgres-CqvtFC2y.d.cts} +1 -1
- package/dist/profiler/index.d.cts +9 -9
- package/dist/profiler/index.d.ts +9 -9
- package/dist/provenance/index.cjs +33 -20
- package/dist/provenance/index.cjs.map +1 -1
- package/dist/provenance/index.d.cts +7 -7
- package/dist/provenance/index.d.ts +7 -7
- package/dist/provenance/index.js +24 -11
- package/dist/provenance/index.js.map +1 -1
- package/dist/{repair-validity-windows-aWX7VNvv.d.cts → repair-validity-windows-DEzCKAdy.d.cts} +7 -3
- package/dist/{repair-validity-windows-BtOEe2pS.d.ts → repair-validity-windows-GMdaS2AH.d.ts} +7 -3
- package/dist/resolve-D_H8MHtq.d.ts +1805 -0
- package/dist/resolve-WEW8gWws.d.cts +1805 -0
- package/dist/schema/index.cjs +42 -40
- package/dist/schema/index.d.cts +4 -6
- package/dist/schema/index.d.ts +4 -6
- package/dist/schema/index.js +15 -13
- package/dist/{searchable-z4BiFfHI.d.ts → searchable-C_UREI9K.d.ts} +1 -1
- package/dist/{searchable-C8-RrL3l.d.cts → searchable-ClgET_i7.d.cts} +1 -1
- package/dist/{sqlite-axLw5Lo5.d.ts → sqlite-D1mXO9Kp.d.cts} +2 -1
- package/dist/{sqlite-Cyx9j9o6.d.cts → sqlite-MZA3oZNB.d.ts} +2 -1
- package/dist/{store-CTfQ9taw.d.ts → store-CuFX7fCx.d.cts} +38 -41
- package/dist/{store-DR9J7JVB.d.cts → store-D-ZjXQpW.d.ts} +38 -41
- package/dist/{temporal-CBOrERz5.d.ts → temporal-CpyEiRY8.d.cts} +1 -1
- package/dist/{temporal-B4Ky4wzh.d.cts → temporal-y0Aep9Su.d.ts} +1 -1
- package/dist/{types-CWg4dTjj.d.ts → types-6yf0Vv-_.d.cts} +1672 -1
- package/dist/{types-CWg4dTjj.d.cts → types-6yf0Vv-_.d.ts} +1672 -1
- package/dist/{types-BScHXVM7.d.ts → types-DzJ4dlzk.d.cts} +1 -1
- package/dist/{types-BE921wRl.d.cts → types-_vVSB9k-.d.ts} +1 -1
- package/dist/{where-BWXUPV3C.d.ts → where-DuG2LCLe.d.ts} +1 -1
- package/dist/{where-CNtx1aLc.d.cts → where-Mhf_yyKX.d.cts} +1 -1
- package/package.json +5 -1
- package/dist/chunk-2CYI5HRH.js.map +0 -1
- package/dist/chunk-2GIV5X4P.js.map +0 -1
- package/dist/chunk-2Q45FAIE.js.map +0 -1
- package/dist/chunk-46UGOVRW.js.map +0 -1
- package/dist/chunk-5LKOVCPP.js.map +0 -1
- package/dist/chunk-5OWHU7Z7.cjs.map +0 -1
- package/dist/chunk-6LEOAIIB.js +0 -1160
- package/dist/chunk-6LEOAIIB.js.map +0 -1
- package/dist/chunk-7CCMCMJO.cjs.map +0 -1
- package/dist/chunk-7PRMDZIA.cjs.map +0 -1
- package/dist/chunk-C76WFIVZ.cjs.map +0 -1
- package/dist/chunk-CS6JTQQ2.cjs.map +0 -1
- package/dist/chunk-EDLKIQRI.js.map +0 -1
- package/dist/chunk-EH3JZJUM.cjs +0 -567
- package/dist/chunk-EH3JZJUM.cjs.map +0 -1
- package/dist/chunk-FX5ZW6PN.js.map +0 -1
- package/dist/chunk-GHZPZNFC.cjs +0 -132
- package/dist/chunk-GHZPZNFC.cjs.map +0 -1
- package/dist/chunk-GVYVGGPJ.js.map +0 -1
- package/dist/chunk-IHK5KA2Q.cjs +0 -262
- package/dist/chunk-IHK5KA2Q.cjs.map +0 -1
- package/dist/chunk-IRPYOHRC.js.map +0 -1
- package/dist/chunk-ISKCIQF2.cjs.map +0 -1
- package/dist/chunk-JG5XIJDY.js.map +0 -1
- package/dist/chunk-K2XYLVVB.cjs.map +0 -1
- package/dist/chunk-KWNWG4RC.cjs +0 -12
- package/dist/chunk-LLVOQOWE.cjs.map +0 -1
- package/dist/chunk-MJPZNEJZ.js.map +0 -1
- package/dist/chunk-MX7EKQPM.js.map +0 -1
- package/dist/chunk-MZ34E2GN.js.map +0 -1
- package/dist/chunk-OJHD3LXJ.cjs.map +0 -1
- package/dist/chunk-PALYTHGM.js +0 -114
- package/dist/chunk-PALYTHGM.js.map +0 -1
- package/dist/chunk-RDP6ZRSM.cjs.map +0 -1
- package/dist/chunk-S3SDEQMC.js +0 -532
- package/dist/chunk-S3SDEQMC.js.map +0 -1
- package/dist/chunk-TEC24ZDA.cjs +0 -1254
- package/dist/chunk-TEC24ZDA.cjs.map +0 -1
- package/dist/chunk-TP4NJTI3.cjs +0 -1192
- package/dist/chunk-TP4NJTI3.cjs.map +0 -1
- package/dist/chunk-TTCOPKUL.cjs.map +0 -1
- package/dist/chunk-TUVD4DFR.cjs.map +0 -1
- package/dist/chunk-TYGGUWMS.cjs.map +0 -1
- package/dist/chunk-U3Z7XKAG.js.map +0 -1
- package/dist/chunk-U5EL6JUV.js.map +0 -1
- package/dist/chunk-VTJVMP4I.js.map +0 -1
- package/dist/chunk-WCLMKNQE.cjs.map +0 -1
- package/dist/chunk-XMY2SXOH.cjs.map +0 -1
- package/dist/chunk-Y55DLLEG.js +0 -247
- package/dist/chunk-Y55DLLEG.js.map +0 -1
- package/dist/chunk-YA36ABIL.js.map +0 -1
- package/dist/chunk-ZBFZGLZE.cjs.map +0 -1
- package/dist/index-B0PrmE3K.d.cts +0 -1146
- package/dist/index-CwcXsL5R.d.ts +0 -1146
- package/dist/materialize-indexes-C9GG3O3C.d.ts +0 -266
- package/dist/materialize-indexes-CrSiW_lT.d.cts +0 -266
|
@@ -1,18 +1,1213 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
var
|
|
6
|
-
var
|
|
7
|
-
var
|
|
8
|
-
var
|
|
3
|
+
var chunkLLFPQOBA_cjs = require('./chunk-LLFPQOBA.cjs');
|
|
4
|
+
var chunk36SX6QXP_cjs = require('./chunk-36SX6QXP.cjs');
|
|
5
|
+
var chunkFMMW3KX7_cjs = require('./chunk-FMMW3KX7.cjs');
|
|
6
|
+
var chunkNLX5OWK7_cjs = require('./chunk-NLX5OWK7.cjs');
|
|
7
|
+
var chunkNUQ2YFFH_cjs = require('./chunk-NUQ2YFFH.cjs');
|
|
8
|
+
var chunkCRZ56SZU_cjs = require('./chunk-CRZ56SZU.cjs');
|
|
9
9
|
var chunkM5MSP3BI_cjs = require('./chunk-M5MSP3BI.cjs');
|
|
10
|
+
var chunkI7YAY2VQ_cjs = require('./chunk-I7YAY2VQ.cjs');
|
|
10
11
|
var chunkZY4GXIVN_cjs = require('./chunk-ZY4GXIVN.cjs');
|
|
11
|
-
var
|
|
12
|
-
var
|
|
12
|
+
var chunkJVA3KDEA_cjs = require('./chunk-JVA3KDEA.cjs');
|
|
13
|
+
var chunkH2VWDQWC_cjs = require('./chunk-H2VWDQWC.cjs');
|
|
14
|
+
var chunkH5IJSROF_cjs = require('./chunk-H5IJSROF.cjs');
|
|
13
15
|
var chunkX4GDXBOP_cjs = require('./chunk-X4GDXBOP.cjs');
|
|
14
16
|
var chunkN66HCGCY_cjs = require('./chunk-N66HCGCY.cjs');
|
|
15
17
|
var drizzleOrm = require('drizzle-orm');
|
|
18
|
+
var pgCore = require('drizzle-orm/pg-core');
|
|
19
|
+
var sqliteCore = require('drizzle-orm/sqlite-core');
|
|
20
|
+
|
|
21
|
+
var regconfig = pgCore.customType({
|
|
22
|
+
dataType: () => "regconfig"
|
|
23
|
+
});
|
|
24
|
+
var tsvector = pgCore.customType({
|
|
25
|
+
dataType: () => "tsvector"
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
// src/backend/drizzle/schema/postgres.ts
|
|
29
|
+
var DEFAULT_TABLE_NAMES = {
|
|
30
|
+
nodes: "typegraph_nodes",
|
|
31
|
+
edges: "typegraph_edges",
|
|
32
|
+
recordedNodes: "typegraph_recorded_nodes",
|
|
33
|
+
recordedEdges: "typegraph_recorded_edges",
|
|
34
|
+
recordedClock: "typegraph_recorded_clock",
|
|
35
|
+
revisionOrigins: "typegraph_revision_origins",
|
|
36
|
+
identityAssertions: "typegraph_identity_assertions",
|
|
37
|
+
recordedIdentityAssertions: "typegraph_recorded_identity_assertions",
|
|
38
|
+
identityClosure: "typegraph_identity_closure",
|
|
39
|
+
identitySeparation: "typegraph_identity_separation",
|
|
40
|
+
uniques: "typegraph_node_uniques",
|
|
41
|
+
edgeClaims: "typegraph_edge_claims",
|
|
42
|
+
schemaVersions: "typegraph_schema_versions",
|
|
43
|
+
fulltext: "typegraph_node_fulltext",
|
|
44
|
+
indexMaterializations: "typegraph_index_materializations",
|
|
45
|
+
contributionMaterializations: "typegraph_contribution_materializations",
|
|
46
|
+
kindRemovals: "typegraph_kind_removals",
|
|
47
|
+
reconciliationMarkers: "typegraph_reconciliation_markers"
|
|
48
|
+
};
|
|
49
|
+
function createPostgresTables(names = {}, options = {}) {
|
|
50
|
+
const n = { ...DEFAULT_TABLE_NAMES, ...names };
|
|
51
|
+
const indexes = options.indexes ?? [];
|
|
52
|
+
chunkI7YAY2VQ_cjs.assertNoSystemIndexNameCollision(indexes, n);
|
|
53
|
+
const nodes3 = pgCore.pgTable(
|
|
54
|
+
n.nodes,
|
|
55
|
+
{
|
|
56
|
+
graphId: pgCore.text("graph_id").notNull(),
|
|
57
|
+
kind: pgCore.text("kind").notNull(),
|
|
58
|
+
id: pgCore.text("id").notNull(),
|
|
59
|
+
props: pgCore.jsonb("props").notNull(),
|
|
60
|
+
version: pgCore.integer("version").notNull().default(1),
|
|
61
|
+
validFrom: pgCore.timestamp("valid_from", { withTimezone: true }),
|
|
62
|
+
validTo: pgCore.timestamp("valid_to", { withTimezone: true }),
|
|
63
|
+
createdAt: pgCore.timestamp("created_at", { withTimezone: true }).notNull(),
|
|
64
|
+
updatedAt: pgCore.timestamp("updated_at", { withTimezone: true }).notNull(),
|
|
65
|
+
deletedAt: pgCore.timestamp("deleted_at", { withTimezone: true })
|
|
66
|
+
},
|
|
67
|
+
(t) => [
|
|
68
|
+
pgCore.primaryKey({ columns: [t.graphId, t.kind, t.id] }),
|
|
69
|
+
// System indexes come from SYSTEM_INDEX_DECLARATIONS (single source
|
|
70
|
+
// for both dialects + the runtime materializer).
|
|
71
|
+
...chunkLLFPQOBA_cjs.buildPostgresSystemIndexBuilders("nodes", n.nodes, t),
|
|
72
|
+
...chunkLLFPQOBA_cjs.buildPostgresNodeIndexBuilders(t, indexes)
|
|
73
|
+
]
|
|
74
|
+
);
|
|
75
|
+
const edges3 = pgCore.pgTable(
|
|
76
|
+
n.edges,
|
|
77
|
+
{
|
|
78
|
+
graphId: pgCore.text("graph_id").notNull(),
|
|
79
|
+
id: pgCore.text("id").notNull(),
|
|
80
|
+
kind: pgCore.text("kind").notNull(),
|
|
81
|
+
fromKind: pgCore.text("from_kind").notNull(),
|
|
82
|
+
fromId: pgCore.text("from_id").notNull(),
|
|
83
|
+
toKind: pgCore.text("to_kind").notNull(),
|
|
84
|
+
toId: pgCore.text("to_id").notNull(),
|
|
85
|
+
props: pgCore.jsonb("props").notNull(),
|
|
86
|
+
validFrom: pgCore.timestamp("valid_from", { withTimezone: true }),
|
|
87
|
+
validTo: pgCore.timestamp("valid_to", { withTimezone: true }),
|
|
88
|
+
createdAt: pgCore.timestamp("created_at", { withTimezone: true }).notNull(),
|
|
89
|
+
updatedAt: pgCore.timestamp("updated_at", { withTimezone: true }).notNull(),
|
|
90
|
+
deletedAt: pgCore.timestamp("deleted_at", { withTimezone: true })
|
|
91
|
+
},
|
|
92
|
+
(t) => [
|
|
93
|
+
pgCore.primaryKey({ columns: [t.graphId, t.id] }),
|
|
94
|
+
...chunkLLFPQOBA_cjs.buildPostgresSystemIndexBuilders("edges", n.edges, t),
|
|
95
|
+
...chunkLLFPQOBA_cjs.buildPostgresEdgeIndexBuilders(t, indexes)
|
|
96
|
+
]
|
|
97
|
+
);
|
|
98
|
+
const recordedNodes3 = pgCore.pgTable(
|
|
99
|
+
n.recordedNodes,
|
|
100
|
+
{
|
|
101
|
+
historyId: pgCore.text("history_id").notNull(),
|
|
102
|
+
graphId: pgCore.text("graph_id").notNull(),
|
|
103
|
+
kind: pgCore.text("kind").notNull(),
|
|
104
|
+
id: pgCore.text("id").notNull(),
|
|
105
|
+
props: pgCore.jsonb("props").notNull(),
|
|
106
|
+
version: pgCore.integer("version").notNull(),
|
|
107
|
+
validFrom: pgCore.timestamp("valid_from", { withTimezone: true }),
|
|
108
|
+
validTo: pgCore.timestamp("valid_to", { withTimezone: true }),
|
|
109
|
+
createdAt: pgCore.timestamp("created_at", { withTimezone: true }).notNull(),
|
|
110
|
+
updatedAt: pgCore.timestamp("updated_at", { withTimezone: true }).notNull(),
|
|
111
|
+
deletedAt: pgCore.timestamp("deleted_at", { withTimezone: true }),
|
|
112
|
+
recordedFrom: pgCore.bigint("recorded_from", { mode: "number" }).notNull(),
|
|
113
|
+
recordedTo: pgCore.bigint("recorded_to", { mode: "number" }).notNull(),
|
|
114
|
+
op: pgCore.text("op").notNull(),
|
|
115
|
+
schemaVersion: pgCore.integer("schema_version"),
|
|
116
|
+
txId: pgCore.text("tx_id"),
|
|
117
|
+
meta: pgCore.jsonb("meta")
|
|
118
|
+
},
|
|
119
|
+
(t) => [
|
|
120
|
+
pgCore.primaryKey({ columns: [t.historyId] }),
|
|
121
|
+
...chunkLLFPQOBA_cjs.buildPostgresSystemIndexBuilders("recordedNodes", n.recordedNodes, t)
|
|
122
|
+
]
|
|
123
|
+
);
|
|
124
|
+
const recordedEdges3 = pgCore.pgTable(
|
|
125
|
+
n.recordedEdges,
|
|
126
|
+
{
|
|
127
|
+
historyId: pgCore.text("history_id").notNull(),
|
|
128
|
+
graphId: pgCore.text("graph_id").notNull(),
|
|
129
|
+
id: pgCore.text("id").notNull(),
|
|
130
|
+
kind: pgCore.text("kind").notNull(),
|
|
131
|
+
fromKind: pgCore.text("from_kind").notNull(),
|
|
132
|
+
fromId: pgCore.text("from_id").notNull(),
|
|
133
|
+
toKind: pgCore.text("to_kind").notNull(),
|
|
134
|
+
toId: pgCore.text("to_id").notNull(),
|
|
135
|
+
props: pgCore.jsonb("props").notNull(),
|
|
136
|
+
validFrom: pgCore.timestamp("valid_from", { withTimezone: true }),
|
|
137
|
+
validTo: pgCore.timestamp("valid_to", { withTimezone: true }),
|
|
138
|
+
createdAt: pgCore.timestamp("created_at", { withTimezone: true }).notNull(),
|
|
139
|
+
updatedAt: pgCore.timestamp("updated_at", { withTimezone: true }).notNull(),
|
|
140
|
+
deletedAt: pgCore.timestamp("deleted_at", { withTimezone: true }),
|
|
141
|
+
recordedFrom: pgCore.bigint("recorded_from", { mode: "number" }).notNull(),
|
|
142
|
+
recordedTo: pgCore.bigint("recorded_to", { mode: "number" }).notNull(),
|
|
143
|
+
op: pgCore.text("op").notNull(),
|
|
144
|
+
schemaVersion: pgCore.integer("schema_version"),
|
|
145
|
+
txId: pgCore.text("tx_id"),
|
|
146
|
+
meta: pgCore.jsonb("meta")
|
|
147
|
+
},
|
|
148
|
+
(t) => [
|
|
149
|
+
pgCore.primaryKey({ columns: [t.historyId] }),
|
|
150
|
+
...chunkLLFPQOBA_cjs.buildPostgresSystemIndexBuilders("recordedEdges", n.recordedEdges, t)
|
|
151
|
+
]
|
|
152
|
+
);
|
|
153
|
+
const recordedClock3 = pgCore.pgTable(
|
|
154
|
+
n.recordedClock,
|
|
155
|
+
{
|
|
156
|
+
graphId: pgCore.text("graph_id").notNull(),
|
|
157
|
+
revision: pgCore.bigint("revision", { mode: "number" }).notNull(),
|
|
158
|
+
recordedAt: pgCore.timestamp("recorded_at", { withTimezone: true }).notNull()
|
|
159
|
+
},
|
|
160
|
+
(t) => [pgCore.primaryKey({ columns: [t.graphId] })]
|
|
161
|
+
);
|
|
162
|
+
const revisionOrigins = pgCore.pgTable(
|
|
163
|
+
n.revisionOrigins,
|
|
164
|
+
{
|
|
165
|
+
graphId: pgCore.text("graph_id").notNull(),
|
|
166
|
+
origin: pgCore.text("origin").notNull()
|
|
167
|
+
},
|
|
168
|
+
(t) => [pgCore.primaryKey({ columns: [t.graphId] })]
|
|
169
|
+
);
|
|
170
|
+
const identityAssertions = pgCore.pgTable(
|
|
171
|
+
n.identityAssertions,
|
|
172
|
+
{
|
|
173
|
+
graphId: pgCore.text("graph_id").notNull(),
|
|
174
|
+
id: pgCore.text("id").notNull(),
|
|
175
|
+
relation: pgCore.text("rel").notNull(),
|
|
176
|
+
aKind: pgCore.text("a_kind").notNull(),
|
|
177
|
+
aId: pgCore.text("a_id").notNull(),
|
|
178
|
+
bKind: pgCore.text("b_kind").notNull(),
|
|
179
|
+
bId: pgCore.text("b_id").notNull(),
|
|
180
|
+
validFrom: pgCore.timestamp("valid_from", { withTimezone: true }).notNull(),
|
|
181
|
+
validTo: pgCore.timestamp("valid_to", { withTimezone: true }),
|
|
182
|
+
createdAt: pgCore.timestamp("created_at", { withTimezone: true }).notNull(),
|
|
183
|
+
updatedAt: pgCore.timestamp("updated_at", { withTimezone: true }).notNull(),
|
|
184
|
+
deletedAt: pgCore.timestamp("deleted_at", { withTimezone: true }),
|
|
185
|
+
endedByKind: pgCore.text("ended_by_kind"),
|
|
186
|
+
endedById: pgCore.text("ended_by_id")
|
|
187
|
+
},
|
|
188
|
+
(t) => [
|
|
189
|
+
pgCore.primaryKey({ columns: [t.graphId, t.id] }),
|
|
190
|
+
pgCore.index(`${n.identityAssertions}_a_idx`).on(
|
|
191
|
+
t.graphId,
|
|
192
|
+
t.aKind,
|
|
193
|
+
t.aId,
|
|
194
|
+
t.validTo
|
|
195
|
+
),
|
|
196
|
+
pgCore.index(`${n.identityAssertions}_b_idx`).on(
|
|
197
|
+
t.graphId,
|
|
198
|
+
t.bKind,
|
|
199
|
+
t.bId,
|
|
200
|
+
t.validTo
|
|
201
|
+
),
|
|
202
|
+
pgCore.uniqueIndex(`${n.identityAssertions}_current_pair_idx`).on(t.graphId, t.relation, t.aKind, t.aId, t.bKind, t.bId).where(drizzleOrm.sql`${t.validTo} IS NULL`),
|
|
203
|
+
pgCore.check(
|
|
204
|
+
`${n.identityAssertions}_ended_by_check`,
|
|
205
|
+
drizzleOrm.sql`(ended_by_kind IS NULL) = (ended_by_id IS NULL) AND (ended_by_kind IS NULL OR (valid_to IS NOT NULL AND ((ended_by_kind = a_kind AND ended_by_id = a_id) OR (ended_by_kind = b_kind AND ended_by_id = b_id))))`
|
|
206
|
+
)
|
|
207
|
+
]
|
|
208
|
+
);
|
|
209
|
+
const recordedIdentityAssertions = pgCore.pgTable(
|
|
210
|
+
n.recordedIdentityAssertions,
|
|
211
|
+
{
|
|
212
|
+
historyId: pgCore.text("history_id").notNull(),
|
|
213
|
+
graphId: pgCore.text("graph_id").notNull(),
|
|
214
|
+
id: pgCore.text("id").notNull(),
|
|
215
|
+
relation: pgCore.text("rel").notNull(),
|
|
216
|
+
aKind: pgCore.text("a_kind").notNull(),
|
|
217
|
+
aId: pgCore.text("a_id").notNull(),
|
|
218
|
+
bKind: pgCore.text("b_kind").notNull(),
|
|
219
|
+
bId: pgCore.text("b_id").notNull(),
|
|
220
|
+
validFrom: pgCore.timestamp("valid_from", { withTimezone: true }).notNull(),
|
|
221
|
+
validTo: pgCore.timestamp("valid_to", { withTimezone: true }),
|
|
222
|
+
createdAt: pgCore.timestamp("created_at", { withTimezone: true }).notNull(),
|
|
223
|
+
updatedAt: pgCore.timestamp("updated_at", { withTimezone: true }).notNull(),
|
|
224
|
+
deletedAt: pgCore.timestamp("deleted_at", { withTimezone: true }),
|
|
225
|
+
endedByKind: pgCore.text("ended_by_kind"),
|
|
226
|
+
endedById: pgCore.text("ended_by_id"),
|
|
227
|
+
recordedFrom: pgCore.bigint("recorded_from", { mode: "number" }).notNull(),
|
|
228
|
+
recordedTo: pgCore.bigint("recorded_to", { mode: "number" }).notNull(),
|
|
229
|
+
op: pgCore.text("op").notNull(),
|
|
230
|
+
schemaVersion: pgCore.integer("schema_version"),
|
|
231
|
+
txId: pgCore.text("tx_id"),
|
|
232
|
+
meta: pgCore.jsonb("meta")
|
|
233
|
+
},
|
|
234
|
+
(t) => [
|
|
235
|
+
pgCore.primaryKey({ columns: [t.historyId] }),
|
|
236
|
+
pgCore.index(`${n.recordedIdentityAssertions}_entity_idx`).on(
|
|
237
|
+
t.graphId,
|
|
238
|
+
t.id,
|
|
239
|
+
t.recordedFrom,
|
|
240
|
+
t.recordedTo
|
|
241
|
+
),
|
|
242
|
+
pgCore.index(`${n.recordedIdentityAssertions}_a_idx`).on(
|
|
243
|
+
t.graphId,
|
|
244
|
+
t.aKind,
|
|
245
|
+
t.aId,
|
|
246
|
+
t.recordedFrom,
|
|
247
|
+
t.recordedTo
|
|
248
|
+
),
|
|
249
|
+
pgCore.index(`${n.recordedIdentityAssertions}_b_idx`).on(
|
|
250
|
+
t.graphId,
|
|
251
|
+
t.bKind,
|
|
252
|
+
t.bId,
|
|
253
|
+
t.recordedFrom,
|
|
254
|
+
t.recordedTo
|
|
255
|
+
)
|
|
256
|
+
]
|
|
257
|
+
);
|
|
258
|
+
const identityClosure = pgCore.pgTable(
|
|
259
|
+
n.identityClosure,
|
|
260
|
+
{
|
|
261
|
+
graphId: pgCore.text("graph_id").notNull(),
|
|
262
|
+
memberKind: pgCore.text("member_kind").notNull(),
|
|
263
|
+
memberId: pgCore.text("member_id").notNull(),
|
|
264
|
+
classKind: pgCore.text("class_kind").notNull(),
|
|
265
|
+
classId: pgCore.text("class_id").notNull()
|
|
266
|
+
},
|
|
267
|
+
(t) => [
|
|
268
|
+
pgCore.primaryKey({ columns: [t.graphId, t.memberKind, t.memberId] }),
|
|
269
|
+
pgCore.index(`${n.identityClosure}_class_idx`).on(
|
|
270
|
+
t.graphId,
|
|
271
|
+
t.classKind,
|
|
272
|
+
t.classId
|
|
273
|
+
)
|
|
274
|
+
]
|
|
275
|
+
);
|
|
276
|
+
const identitySeparation = pgCore.pgTable(
|
|
277
|
+
n.identitySeparation,
|
|
278
|
+
{
|
|
279
|
+
graphId: pgCore.text("graph_id").notNull(),
|
|
280
|
+
classKeyLow: pgCore.text("class_key_low").notNull(),
|
|
281
|
+
classKeyHigh: pgCore.text("class_key_high").notNull()
|
|
282
|
+
},
|
|
283
|
+
(t) => [
|
|
284
|
+
pgCore.primaryKey({ columns: [t.graphId, t.classKeyLow, t.classKeyHigh] }),
|
|
285
|
+
pgCore.index(`${n.identitySeparation}_high_idx`).on(t.graphId, t.classKeyHigh),
|
|
286
|
+
pgCore.check(
|
|
287
|
+
`${n.identitySeparation}_ordered_pair_check`,
|
|
288
|
+
drizzleOrm.sql`class_key_low COLLATE "C" < class_key_high COLLATE "C"`
|
|
289
|
+
)
|
|
290
|
+
]
|
|
291
|
+
);
|
|
292
|
+
const uniques3 = pgCore.pgTable(
|
|
293
|
+
n.uniques,
|
|
294
|
+
{
|
|
295
|
+
graphId: pgCore.text("graph_id").notNull(),
|
|
296
|
+
nodeKind: pgCore.text("node_kind").notNull(),
|
|
297
|
+
constraintName: pgCore.text("constraint_name").notNull(),
|
|
298
|
+
key: pgCore.text("key").notNull(),
|
|
299
|
+
nodeId: pgCore.text("node_id").notNull(),
|
|
300
|
+
concreteKind: pgCore.text("concrete_kind").notNull(),
|
|
301
|
+
deletedAt: pgCore.timestamp("deleted_at", { withTimezone: true })
|
|
302
|
+
},
|
|
303
|
+
(t) => [
|
|
304
|
+
pgCore.primaryKey({
|
|
305
|
+
columns: [t.graphId, t.nodeKind, t.constraintName, t.key]
|
|
306
|
+
}),
|
|
307
|
+
pgCore.index(`${n.uniques}_node_idx`).on(t.graphId, t.concreteKind, t.nodeId)
|
|
308
|
+
]
|
|
309
|
+
);
|
|
310
|
+
const edgeClaims3 = pgCore.pgTable(
|
|
311
|
+
n.edgeClaims,
|
|
312
|
+
{
|
|
313
|
+
graphId: pgCore.text("graph_id").notNull(),
|
|
314
|
+
axis: pgCore.text("axis").notNull(),
|
|
315
|
+
key: pgCore.text("key").notNull(),
|
|
316
|
+
edgeId: pgCore.text("edge_id").notNull(),
|
|
317
|
+
updatedAt: pgCore.timestamp("updated_at", { withTimezone: true }).notNull()
|
|
318
|
+
},
|
|
319
|
+
(t) => [
|
|
320
|
+
pgCore.primaryKey({ columns: [t.graphId, t.axis, t.key] }),
|
|
321
|
+
pgCore.index(`${n.edgeClaims}_edge_idx`).on(t.graphId, t.edgeId)
|
|
322
|
+
]
|
|
323
|
+
);
|
|
324
|
+
const schemaVersions3 = pgCore.pgTable(
|
|
325
|
+
n.schemaVersions,
|
|
326
|
+
{
|
|
327
|
+
graphId: pgCore.text("graph_id").notNull(),
|
|
328
|
+
version: pgCore.integer("version").notNull(),
|
|
329
|
+
schemaHash: pgCore.text("schema_hash").notNull(),
|
|
330
|
+
schemaDoc: pgCore.jsonb("schema_doc").notNull(),
|
|
331
|
+
createdAt: pgCore.timestamp("created_at", { withTimezone: true }).notNull(),
|
|
332
|
+
isActive: pgCore.boolean("is_active").notNull().default(false)
|
|
333
|
+
},
|
|
334
|
+
(t) => [
|
|
335
|
+
pgCore.primaryKey({ columns: [t.graphId, t.version] }),
|
|
336
|
+
pgCore.index(`${n.schemaVersions}_active_idx`).on(t.graphId, t.isActive),
|
|
337
|
+
// Partial unique index enforcing the "at most one active version
|
|
338
|
+
// per graph" invariant at the storage layer. Defense in depth
|
|
339
|
+
// against buggy backend implementations or out-of-band writes.
|
|
340
|
+
// Forces the deactivate-then-activate ordering used by
|
|
341
|
+
// `commitSchemaVersion` and `setActiveVersion`.
|
|
342
|
+
pgCore.uniqueIndex(`${n.schemaVersions}_one_active_per_graph_idx`).on(t.graphId).where(drizzleOrm.sql`${t.isActive} = TRUE`)
|
|
343
|
+
]
|
|
344
|
+
);
|
|
345
|
+
const indexMaterializations = pgCore.pgTable(
|
|
346
|
+
n.indexMaterializations,
|
|
347
|
+
{
|
|
348
|
+
indexName: pgCore.text("index_name").notNull(),
|
|
349
|
+
graphId: pgCore.text("graph_id").notNull(),
|
|
350
|
+
entity: pgCore.text("entity").notNull(),
|
|
351
|
+
kind: pgCore.text("kind").notNull(),
|
|
352
|
+
signature: pgCore.text("signature").notNull(),
|
|
353
|
+
schemaVersion: pgCore.integer("schema_version").notNull(),
|
|
354
|
+
materializedAt: pgCore.timestamp("materialized_at", { withTimezone: true }),
|
|
355
|
+
lastAttemptedAt: pgCore.timestamp("last_attempted_at", {
|
|
356
|
+
withTimezone: true
|
|
357
|
+
}).notNull(),
|
|
358
|
+
lastError: pgCore.text("last_error"),
|
|
359
|
+
// Cross-caller build claim: while `building_since` is fresh (within
|
|
360
|
+
// the lease), exactly one materializer owns this index's CREATE
|
|
361
|
+
// INDEX CONCURRENTLY. Serializes same-index CIC across processes —
|
|
362
|
+
// two concurrent expression-index CICs deadlock each other (no
|
|
363
|
+
// safe-snapshot exemption). NULL when no build is in flight.
|
|
364
|
+
buildingSince: pgCore.timestamp("building_since", { withTimezone: true }),
|
|
365
|
+
claimToken: pgCore.text("claim_token")
|
|
366
|
+
},
|
|
367
|
+
(t) => [pgCore.primaryKey({ columns: [t.indexName] })]
|
|
368
|
+
);
|
|
369
|
+
const kindRemovals = pgCore.pgTable(
|
|
370
|
+
n.kindRemovals,
|
|
371
|
+
{
|
|
372
|
+
graphId: pgCore.text("graph_id").notNull(),
|
|
373
|
+
kindName: pgCore.text("kind_name").notNull(),
|
|
374
|
+
entity: pgCore.text("entity").notNull(),
|
|
375
|
+
schemaVersion: pgCore.integer("schema_version").notNull(),
|
|
376
|
+
removedAt: pgCore.timestamp("removed_at", { withTimezone: true }),
|
|
377
|
+
lastAttemptedAt: pgCore.timestamp("last_attempted_at", {
|
|
378
|
+
withTimezone: true
|
|
379
|
+
}).notNull(),
|
|
380
|
+
lastError: pgCore.text("last_error")
|
|
381
|
+
},
|
|
382
|
+
(t) => [
|
|
383
|
+
pgCore.primaryKey({
|
|
384
|
+
columns: [t.graphId, t.kindName, t.entity, t.schemaVersion]
|
|
385
|
+
})
|
|
386
|
+
]
|
|
387
|
+
);
|
|
388
|
+
const reconciliationMarkers = pgCore.pgTable(
|
|
389
|
+
n.reconciliationMarkers,
|
|
390
|
+
{
|
|
391
|
+
graphId: pgCore.text("graph_id").notNull(),
|
|
392
|
+
reconciledToVersion: pgCore.integer("reconciled_to_version").notNull()
|
|
393
|
+
},
|
|
394
|
+
(t) => [pgCore.primaryKey({ columns: [t.graphId] })]
|
|
395
|
+
);
|
|
396
|
+
const contributionMaterializations = pgCore.pgTable(
|
|
397
|
+
n.contributionMaterializations,
|
|
398
|
+
{
|
|
399
|
+
graphId: pgCore.text("graph_id").notNull(),
|
|
400
|
+
logicalName: pgCore.text("logical_name").notNull(),
|
|
401
|
+
owner: pgCore.text("owner").notNull(),
|
|
402
|
+
tableName: pgCore.text("table_name").notNull(),
|
|
403
|
+
signature: pgCore.text("signature").notNull(),
|
|
404
|
+
materializedAt: pgCore.timestamp("materialized_at", { withTimezone: true }),
|
|
405
|
+
lastAttemptedAt: pgCore.timestamp("last_attempted_at", {
|
|
406
|
+
withTimezone: true
|
|
407
|
+
}).notNull(),
|
|
408
|
+
lastError: pgCore.text("last_error")
|
|
409
|
+
},
|
|
410
|
+
(t) => [
|
|
411
|
+
pgCore.primaryKey({
|
|
412
|
+
columns: [t.graphId, t.logicalName, t.owner, t.tableName]
|
|
413
|
+
})
|
|
414
|
+
]
|
|
415
|
+
);
|
|
416
|
+
const fulltext2 = pgCore.pgTable(
|
|
417
|
+
n.fulltext,
|
|
418
|
+
{
|
|
419
|
+
graphId: pgCore.text("graph_id").notNull(),
|
|
420
|
+
nodeKind: pgCore.text("node_kind").notNull(),
|
|
421
|
+
nodeId: pgCore.text("node_id").notNull(),
|
|
422
|
+
content: pgCore.text("content").notNull(),
|
|
423
|
+
language: regconfig("language").notNull(),
|
|
424
|
+
tsv: tsvector("tsv").generatedAlwaysAs(drizzleOrm.sql`to_tsvector("language", "content")`).notNull(),
|
|
425
|
+
updatedAt: pgCore.timestamp("updated_at", { withTimezone: true }).notNull()
|
|
426
|
+
},
|
|
427
|
+
(t) => [
|
|
428
|
+
pgCore.primaryKey({ columns: [t.graphId, t.nodeKind, t.nodeId] }),
|
|
429
|
+
pgCore.index(`${n.fulltext}_tsv_idx`).using("gin", t.tsv),
|
|
430
|
+
pgCore.index(`${n.fulltext}_kind_idx`).on(t.graphId, t.nodeKind)
|
|
431
|
+
]
|
|
432
|
+
);
|
|
433
|
+
return {
|
|
434
|
+
nodes: nodes3,
|
|
435
|
+
edges: edges3,
|
|
436
|
+
recordedNodes: recordedNodes3,
|
|
437
|
+
recordedEdges: recordedEdges3,
|
|
438
|
+
recordedClock: recordedClock3,
|
|
439
|
+
revisionOrigins,
|
|
440
|
+
identityAssertions,
|
|
441
|
+
recordedIdentityAssertions,
|
|
442
|
+
identityClosure,
|
|
443
|
+
identitySeparation,
|
|
444
|
+
uniques: uniques3,
|
|
445
|
+
edgeClaims: edgeClaims3,
|
|
446
|
+
schemaVersions: schemaVersions3,
|
|
447
|
+
indexMaterializations,
|
|
448
|
+
contributionMaterializations,
|
|
449
|
+
kindRemovals,
|
|
450
|
+
reconciliationMarkers,
|
|
451
|
+
fulltext: fulltext2,
|
|
452
|
+
fulltextTableName: n.fulltext
|
|
453
|
+
};
|
|
454
|
+
}
|
|
455
|
+
var tables = createPostgresTables();
|
|
456
|
+
var {
|
|
457
|
+
nodes,
|
|
458
|
+
edges,
|
|
459
|
+
recordedNodes,
|
|
460
|
+
recordedEdges,
|
|
461
|
+
recordedClock,
|
|
462
|
+
uniques,
|
|
463
|
+
edgeClaims,
|
|
464
|
+
schemaVersions,
|
|
465
|
+
fulltext
|
|
466
|
+
} = tables;
|
|
467
|
+
var DEFAULT_TABLE_NAMES2 = {
|
|
468
|
+
nodes: "typegraph_nodes",
|
|
469
|
+
edges: "typegraph_edges",
|
|
470
|
+
recordedNodes: "typegraph_recorded_nodes",
|
|
471
|
+
recordedEdges: "typegraph_recorded_edges",
|
|
472
|
+
recordedClock: "typegraph_recorded_clock",
|
|
473
|
+
revisionOrigins: "typegraph_revision_origins",
|
|
474
|
+
identityAssertions: "typegraph_identity_assertions",
|
|
475
|
+
recordedIdentityAssertions: "typegraph_recorded_identity_assertions",
|
|
476
|
+
identityClosure: "typegraph_identity_closure",
|
|
477
|
+
identitySeparation: "typegraph_identity_separation",
|
|
478
|
+
uniques: "typegraph_node_uniques",
|
|
479
|
+
edgeClaims: "typegraph_edge_claims",
|
|
480
|
+
schemaVersions: "typegraph_schema_versions",
|
|
481
|
+
fulltext: "typegraph_node_fulltext",
|
|
482
|
+
indexMaterializations: "typegraph_index_materializations",
|
|
483
|
+
contributionMaterializations: "typegraph_contribution_materializations",
|
|
484
|
+
kindRemovals: "typegraph_kind_removals",
|
|
485
|
+
reconciliationMarkers: "typegraph_reconciliation_markers"
|
|
486
|
+
};
|
|
487
|
+
function createSqliteTables(names = {}, options = {}) {
|
|
488
|
+
const n = { ...DEFAULT_TABLE_NAMES2, ...names };
|
|
489
|
+
const indexes = options.indexes ?? [];
|
|
490
|
+
chunkI7YAY2VQ_cjs.assertNoSystemIndexNameCollision(indexes, n);
|
|
491
|
+
const nodes3 = sqliteCore.sqliteTable(
|
|
492
|
+
n.nodes,
|
|
493
|
+
{
|
|
494
|
+
graphId: sqliteCore.text("graph_id").notNull(),
|
|
495
|
+
kind: sqliteCore.text("kind").notNull(),
|
|
496
|
+
id: sqliteCore.text("id").notNull(),
|
|
497
|
+
props: sqliteCore.text("props").notNull(),
|
|
498
|
+
version: sqliteCore.integer("version").notNull().default(1),
|
|
499
|
+
validFrom: sqliteCore.text("valid_from"),
|
|
500
|
+
validTo: sqliteCore.text("valid_to"),
|
|
501
|
+
createdAt: sqliteCore.text("created_at").notNull(),
|
|
502
|
+
updatedAt: sqliteCore.text("updated_at").notNull(),
|
|
503
|
+
deletedAt: sqliteCore.text("deleted_at")
|
|
504
|
+
},
|
|
505
|
+
(t) => [
|
|
506
|
+
sqliteCore.primaryKey({ columns: [t.graphId, t.kind, t.id] }),
|
|
507
|
+
// System indexes come from SYSTEM_INDEX_DECLARATIONS (single source
|
|
508
|
+
// for both dialects + the runtime materializer).
|
|
509
|
+
...chunkLLFPQOBA_cjs.buildSqliteSystemIndexBuilders("nodes", n.nodes, t),
|
|
510
|
+
...chunkLLFPQOBA_cjs.buildSqliteNodeIndexBuilders(t, indexes)
|
|
511
|
+
]
|
|
512
|
+
);
|
|
513
|
+
const edges3 = sqliteCore.sqliteTable(
|
|
514
|
+
n.edges,
|
|
515
|
+
{
|
|
516
|
+
graphId: sqliteCore.text("graph_id").notNull(),
|
|
517
|
+
id: sqliteCore.text("id").notNull(),
|
|
518
|
+
kind: sqliteCore.text("kind").notNull(),
|
|
519
|
+
fromKind: sqliteCore.text("from_kind").notNull(),
|
|
520
|
+
fromId: sqliteCore.text("from_id").notNull(),
|
|
521
|
+
toKind: sqliteCore.text("to_kind").notNull(),
|
|
522
|
+
toId: sqliteCore.text("to_id").notNull(),
|
|
523
|
+
props: sqliteCore.text("props").notNull(),
|
|
524
|
+
validFrom: sqliteCore.text("valid_from"),
|
|
525
|
+
validTo: sqliteCore.text("valid_to"),
|
|
526
|
+
createdAt: sqliteCore.text("created_at").notNull(),
|
|
527
|
+
updatedAt: sqliteCore.text("updated_at").notNull(),
|
|
528
|
+
deletedAt: sqliteCore.text("deleted_at")
|
|
529
|
+
},
|
|
530
|
+
(t) => [
|
|
531
|
+
sqliteCore.primaryKey({ columns: [t.graphId, t.id] }),
|
|
532
|
+
...chunkLLFPQOBA_cjs.buildSqliteSystemIndexBuilders("edges", n.edges, t),
|
|
533
|
+
...chunkLLFPQOBA_cjs.buildSqliteEdgeIndexBuilders(t, indexes)
|
|
534
|
+
]
|
|
535
|
+
);
|
|
536
|
+
const recordedNodes3 = sqliteCore.sqliteTable(
|
|
537
|
+
n.recordedNodes,
|
|
538
|
+
{
|
|
539
|
+
historyId: sqliteCore.text("history_id").notNull(),
|
|
540
|
+
graphId: sqliteCore.text("graph_id").notNull(),
|
|
541
|
+
kind: sqliteCore.text("kind").notNull(),
|
|
542
|
+
id: sqliteCore.text("id").notNull(),
|
|
543
|
+
props: sqliteCore.text("props").notNull(),
|
|
544
|
+
version: sqliteCore.integer("version").notNull(),
|
|
545
|
+
validFrom: sqliteCore.text("valid_from"),
|
|
546
|
+
validTo: sqliteCore.text("valid_to"),
|
|
547
|
+
createdAt: sqliteCore.text("created_at").notNull(),
|
|
548
|
+
updatedAt: sqliteCore.text("updated_at").notNull(),
|
|
549
|
+
deletedAt: sqliteCore.text("deleted_at"),
|
|
550
|
+
recordedFrom: sqliteCore.integer("recorded_from").notNull(),
|
|
551
|
+
recordedTo: sqliteCore.integer("recorded_to").notNull(),
|
|
552
|
+
op: sqliteCore.text("op").notNull(),
|
|
553
|
+
schemaVersion: sqliteCore.integer("schema_version"),
|
|
554
|
+
txId: sqliteCore.text("tx_id"),
|
|
555
|
+
meta: sqliteCore.text("meta")
|
|
556
|
+
},
|
|
557
|
+
(t) => [
|
|
558
|
+
sqliteCore.primaryKey({ columns: [t.historyId] }),
|
|
559
|
+
...chunkLLFPQOBA_cjs.buildSqliteSystemIndexBuilders("recordedNodes", n.recordedNodes, t)
|
|
560
|
+
]
|
|
561
|
+
);
|
|
562
|
+
const recordedEdges3 = sqliteCore.sqliteTable(
|
|
563
|
+
n.recordedEdges,
|
|
564
|
+
{
|
|
565
|
+
historyId: sqliteCore.text("history_id").notNull(),
|
|
566
|
+
graphId: sqliteCore.text("graph_id").notNull(),
|
|
567
|
+
id: sqliteCore.text("id").notNull(),
|
|
568
|
+
kind: sqliteCore.text("kind").notNull(),
|
|
569
|
+
fromKind: sqliteCore.text("from_kind").notNull(),
|
|
570
|
+
fromId: sqliteCore.text("from_id").notNull(),
|
|
571
|
+
toKind: sqliteCore.text("to_kind").notNull(),
|
|
572
|
+
toId: sqliteCore.text("to_id").notNull(),
|
|
573
|
+
props: sqliteCore.text("props").notNull(),
|
|
574
|
+
validFrom: sqliteCore.text("valid_from"),
|
|
575
|
+
validTo: sqliteCore.text("valid_to"),
|
|
576
|
+
createdAt: sqliteCore.text("created_at").notNull(),
|
|
577
|
+
updatedAt: sqliteCore.text("updated_at").notNull(),
|
|
578
|
+
deletedAt: sqliteCore.text("deleted_at"),
|
|
579
|
+
recordedFrom: sqliteCore.integer("recorded_from").notNull(),
|
|
580
|
+
recordedTo: sqliteCore.integer("recorded_to").notNull(),
|
|
581
|
+
op: sqliteCore.text("op").notNull(),
|
|
582
|
+
schemaVersion: sqliteCore.integer("schema_version"),
|
|
583
|
+
txId: sqliteCore.text("tx_id"),
|
|
584
|
+
meta: sqliteCore.text("meta")
|
|
585
|
+
},
|
|
586
|
+
(t) => [
|
|
587
|
+
sqliteCore.primaryKey({ columns: [t.historyId] }),
|
|
588
|
+
...chunkLLFPQOBA_cjs.buildSqliteSystemIndexBuilders("recordedEdges", n.recordedEdges, t)
|
|
589
|
+
]
|
|
590
|
+
);
|
|
591
|
+
const recordedClock3 = sqliteCore.sqliteTable(
|
|
592
|
+
n.recordedClock,
|
|
593
|
+
{
|
|
594
|
+
graphId: sqliteCore.text("graph_id").notNull(),
|
|
595
|
+
revision: sqliteCore.integer("revision").notNull(),
|
|
596
|
+
recordedAt: sqliteCore.text("recorded_at").notNull()
|
|
597
|
+
},
|
|
598
|
+
(t) => [sqliteCore.primaryKey({ columns: [t.graphId] })]
|
|
599
|
+
);
|
|
600
|
+
const revisionOrigins = sqliteCore.sqliteTable(
|
|
601
|
+
n.revisionOrigins,
|
|
602
|
+
{
|
|
603
|
+
graphId: sqliteCore.text("graph_id").notNull(),
|
|
604
|
+
origin: sqliteCore.text("origin").notNull()
|
|
605
|
+
},
|
|
606
|
+
(t) => [sqliteCore.primaryKey({ columns: [t.graphId] })]
|
|
607
|
+
);
|
|
608
|
+
const identityAssertions = sqliteCore.sqliteTable(
|
|
609
|
+
n.identityAssertions,
|
|
610
|
+
{
|
|
611
|
+
graphId: sqliteCore.text("graph_id").notNull(),
|
|
612
|
+
id: sqliteCore.text("id").notNull(),
|
|
613
|
+
relation: sqliteCore.text("rel").notNull(),
|
|
614
|
+
aKind: sqliteCore.text("a_kind").notNull(),
|
|
615
|
+
aId: sqliteCore.text("a_id").notNull(),
|
|
616
|
+
bKind: sqliteCore.text("b_kind").notNull(),
|
|
617
|
+
bId: sqliteCore.text("b_id").notNull(),
|
|
618
|
+
validFrom: sqliteCore.text("valid_from").notNull(),
|
|
619
|
+
validTo: sqliteCore.text("valid_to"),
|
|
620
|
+
createdAt: sqliteCore.text("created_at").notNull(),
|
|
621
|
+
updatedAt: sqliteCore.text("updated_at").notNull(),
|
|
622
|
+
deletedAt: sqliteCore.text("deleted_at"),
|
|
623
|
+
endedByKind: sqliteCore.text("ended_by_kind"),
|
|
624
|
+
endedById: sqliteCore.text("ended_by_id")
|
|
625
|
+
},
|
|
626
|
+
(t) => [
|
|
627
|
+
sqliteCore.primaryKey({ columns: [t.graphId, t.id] }),
|
|
628
|
+
sqliteCore.index(`${n.identityAssertions}_a_idx`).on(
|
|
629
|
+
t.graphId,
|
|
630
|
+
t.aKind,
|
|
631
|
+
t.aId,
|
|
632
|
+
t.validTo
|
|
633
|
+
),
|
|
634
|
+
sqliteCore.index(`${n.identityAssertions}_b_idx`).on(
|
|
635
|
+
t.graphId,
|
|
636
|
+
t.bKind,
|
|
637
|
+
t.bId,
|
|
638
|
+
t.validTo
|
|
639
|
+
),
|
|
640
|
+
sqliteCore.uniqueIndex(`${n.identityAssertions}_current_pair_idx`).on(t.graphId, t.relation, t.aKind, t.aId, t.bKind, t.bId).where(drizzleOrm.sql`${t.validTo} IS NULL`),
|
|
641
|
+
sqliteCore.check(
|
|
642
|
+
`${n.identityAssertions}_ended_by_check`,
|
|
643
|
+
drizzleOrm.sql`(ended_by_kind IS NULL) = (ended_by_id IS NULL) AND (ended_by_kind IS NULL OR (valid_to IS NOT NULL AND ((ended_by_kind = a_kind AND ended_by_id = a_id) OR (ended_by_kind = b_kind AND ended_by_id = b_id))))`
|
|
644
|
+
)
|
|
645
|
+
]
|
|
646
|
+
);
|
|
647
|
+
const recordedIdentityAssertions = sqliteCore.sqliteTable(
|
|
648
|
+
n.recordedIdentityAssertions,
|
|
649
|
+
{
|
|
650
|
+
historyId: sqliteCore.text("history_id").notNull(),
|
|
651
|
+
graphId: sqliteCore.text("graph_id").notNull(),
|
|
652
|
+
id: sqliteCore.text("id").notNull(),
|
|
653
|
+
relation: sqliteCore.text("rel").notNull(),
|
|
654
|
+
aKind: sqliteCore.text("a_kind").notNull(),
|
|
655
|
+
aId: sqliteCore.text("a_id").notNull(),
|
|
656
|
+
bKind: sqliteCore.text("b_kind").notNull(),
|
|
657
|
+
bId: sqliteCore.text("b_id").notNull(),
|
|
658
|
+
validFrom: sqliteCore.text("valid_from").notNull(),
|
|
659
|
+
validTo: sqliteCore.text("valid_to"),
|
|
660
|
+
createdAt: sqliteCore.text("created_at").notNull(),
|
|
661
|
+
updatedAt: sqliteCore.text("updated_at").notNull(),
|
|
662
|
+
deletedAt: sqliteCore.text("deleted_at"),
|
|
663
|
+
endedByKind: sqliteCore.text("ended_by_kind"),
|
|
664
|
+
endedById: sqliteCore.text("ended_by_id"),
|
|
665
|
+
recordedFrom: sqliteCore.integer("recorded_from").notNull(),
|
|
666
|
+
recordedTo: sqliteCore.integer("recorded_to").notNull(),
|
|
667
|
+
op: sqliteCore.text("op").notNull(),
|
|
668
|
+
schemaVersion: sqliteCore.integer("schema_version"),
|
|
669
|
+
txId: sqliteCore.text("tx_id"),
|
|
670
|
+
meta: sqliteCore.text("meta")
|
|
671
|
+
},
|
|
672
|
+
(t) => [
|
|
673
|
+
sqliteCore.primaryKey({ columns: [t.historyId] }),
|
|
674
|
+
sqliteCore.index(`${n.recordedIdentityAssertions}_entity_idx`).on(
|
|
675
|
+
t.graphId,
|
|
676
|
+
t.id,
|
|
677
|
+
t.recordedFrom,
|
|
678
|
+
t.recordedTo
|
|
679
|
+
),
|
|
680
|
+
sqliteCore.index(`${n.recordedIdentityAssertions}_a_idx`).on(
|
|
681
|
+
t.graphId,
|
|
682
|
+
t.aKind,
|
|
683
|
+
t.aId,
|
|
684
|
+
t.recordedFrom,
|
|
685
|
+
t.recordedTo
|
|
686
|
+
),
|
|
687
|
+
sqliteCore.index(`${n.recordedIdentityAssertions}_b_idx`).on(
|
|
688
|
+
t.graphId,
|
|
689
|
+
t.bKind,
|
|
690
|
+
t.bId,
|
|
691
|
+
t.recordedFrom,
|
|
692
|
+
t.recordedTo
|
|
693
|
+
)
|
|
694
|
+
]
|
|
695
|
+
);
|
|
696
|
+
const identityClosure = sqliteCore.sqliteTable(
|
|
697
|
+
n.identityClosure,
|
|
698
|
+
{
|
|
699
|
+
graphId: sqliteCore.text("graph_id").notNull(),
|
|
700
|
+
memberKind: sqliteCore.text("member_kind").notNull(),
|
|
701
|
+
memberId: sqliteCore.text("member_id").notNull(),
|
|
702
|
+
classKind: sqliteCore.text("class_kind").notNull(),
|
|
703
|
+
classId: sqliteCore.text("class_id").notNull()
|
|
704
|
+
},
|
|
705
|
+
(t) => [
|
|
706
|
+
sqliteCore.primaryKey({ columns: [t.graphId, t.memberKind, t.memberId] }),
|
|
707
|
+
sqliteCore.index(`${n.identityClosure}_class_idx`).on(
|
|
708
|
+
t.graphId,
|
|
709
|
+
t.classKind,
|
|
710
|
+
t.classId
|
|
711
|
+
)
|
|
712
|
+
]
|
|
713
|
+
);
|
|
714
|
+
const identitySeparation = sqliteCore.sqliteTable(
|
|
715
|
+
n.identitySeparation,
|
|
716
|
+
{
|
|
717
|
+
graphId: sqliteCore.text("graph_id").notNull(),
|
|
718
|
+
classKeyLow: sqliteCore.text("class_key_low").notNull(),
|
|
719
|
+
classKeyHigh: sqliteCore.text("class_key_high").notNull()
|
|
720
|
+
},
|
|
721
|
+
(t) => [
|
|
722
|
+
sqliteCore.primaryKey({ columns: [t.graphId, t.classKeyLow, t.classKeyHigh] }),
|
|
723
|
+
sqliteCore.index(`${n.identitySeparation}_high_idx`).on(t.graphId, t.classKeyHigh),
|
|
724
|
+
sqliteCore.check(
|
|
725
|
+
`${n.identitySeparation}_ordered_pair_check`,
|
|
726
|
+
drizzleOrm.sql`class_key_low < class_key_high`
|
|
727
|
+
)
|
|
728
|
+
]
|
|
729
|
+
);
|
|
730
|
+
const uniques3 = sqliteCore.sqliteTable(
|
|
731
|
+
n.uniques,
|
|
732
|
+
{
|
|
733
|
+
graphId: sqliteCore.text("graph_id").notNull(),
|
|
734
|
+
nodeKind: sqliteCore.text("node_kind").notNull(),
|
|
735
|
+
constraintName: sqliteCore.text("constraint_name").notNull(),
|
|
736
|
+
key: sqliteCore.text("key").notNull(),
|
|
737
|
+
nodeId: sqliteCore.text("node_id").notNull(),
|
|
738
|
+
concreteKind: sqliteCore.text("concrete_kind").notNull(),
|
|
739
|
+
deletedAt: sqliteCore.text("deleted_at")
|
|
740
|
+
},
|
|
741
|
+
(t) => [
|
|
742
|
+
sqliteCore.primaryKey({
|
|
743
|
+
columns: [t.graphId, t.nodeKind, t.constraintName, t.key]
|
|
744
|
+
}),
|
|
745
|
+
sqliteCore.index(`${n.uniques}_node_idx`).on(t.graphId, t.concreteKind, t.nodeId)
|
|
746
|
+
]
|
|
747
|
+
);
|
|
748
|
+
const edgeClaims3 = sqliteCore.sqliteTable(
|
|
749
|
+
n.edgeClaims,
|
|
750
|
+
{
|
|
751
|
+
graphId: sqliteCore.text("graph_id").notNull(),
|
|
752
|
+
axis: sqliteCore.text("axis").notNull(),
|
|
753
|
+
key: sqliteCore.text("key").notNull(),
|
|
754
|
+
edgeId: sqliteCore.text("edge_id").notNull(),
|
|
755
|
+
updatedAt: sqliteCore.text("updated_at").notNull()
|
|
756
|
+
},
|
|
757
|
+
(t) => [
|
|
758
|
+
sqliteCore.primaryKey({ columns: [t.graphId, t.axis, t.key] }),
|
|
759
|
+
sqliteCore.index(`${n.edgeClaims}_edge_idx`).on(t.graphId, t.edgeId)
|
|
760
|
+
]
|
|
761
|
+
);
|
|
762
|
+
const schemaVersions3 = sqliteCore.sqliteTable(
|
|
763
|
+
n.schemaVersions,
|
|
764
|
+
{
|
|
765
|
+
graphId: sqliteCore.text("graph_id").notNull(),
|
|
766
|
+
version: sqliteCore.integer("version").notNull(),
|
|
767
|
+
schemaHash: sqliteCore.text("schema_hash").notNull(),
|
|
768
|
+
schemaDoc: sqliteCore.text("schema_doc").notNull(),
|
|
769
|
+
createdAt: sqliteCore.text("created_at").notNull(),
|
|
770
|
+
isActive: sqliteCore.integer("is_active", { mode: "boolean" }).notNull().default(false)
|
|
771
|
+
},
|
|
772
|
+
(t) => [
|
|
773
|
+
sqliteCore.primaryKey({ columns: [t.graphId, t.version] }),
|
|
774
|
+
sqliteCore.index(`${n.schemaVersions}_active_idx`).on(t.graphId, t.isActive),
|
|
775
|
+
// Partial unique index enforcing the "at most one active version
|
|
776
|
+
// per graph" invariant at the storage layer. Defense in depth
|
|
777
|
+
// against buggy backend implementations or out-of-band writes.
|
|
778
|
+
// Forces the deactivate-then-activate ordering used by
|
|
779
|
+
// `commitSchemaVersion` and `setActiveVersion`.
|
|
780
|
+
sqliteCore.uniqueIndex(`${n.schemaVersions}_one_active_per_graph_idx`).on(t.graphId).where(drizzleOrm.sql`${t.isActive} = 1`)
|
|
781
|
+
]
|
|
782
|
+
);
|
|
783
|
+
const indexMaterializations = sqliteCore.sqliteTable(
|
|
784
|
+
n.indexMaterializations,
|
|
785
|
+
{
|
|
786
|
+
indexName: sqliteCore.text("index_name").notNull(),
|
|
787
|
+
graphId: sqliteCore.text("graph_id").notNull(),
|
|
788
|
+
entity: sqliteCore.text("entity").notNull(),
|
|
789
|
+
kind: sqliteCore.text("kind").notNull(),
|
|
790
|
+
signature: sqliteCore.text("signature").notNull(),
|
|
791
|
+
schemaVersion: sqliteCore.integer("schema_version").notNull(),
|
|
792
|
+
materializedAt: sqliteCore.text("materialized_at"),
|
|
793
|
+
lastAttemptedAt: sqliteCore.text("last_attempted_at").notNull(),
|
|
794
|
+
lastError: sqliteCore.text("last_error")
|
|
795
|
+
},
|
|
796
|
+
(t) => [sqliteCore.primaryKey({ columns: [t.indexName] })]
|
|
797
|
+
);
|
|
798
|
+
const kindRemovals = sqliteCore.sqliteTable(
|
|
799
|
+
n.kindRemovals,
|
|
800
|
+
{
|
|
801
|
+
graphId: sqliteCore.text("graph_id").notNull(),
|
|
802
|
+
kindName: sqliteCore.text("kind_name").notNull(),
|
|
803
|
+
entity: sqliteCore.text("entity").notNull(),
|
|
804
|
+
schemaVersion: sqliteCore.integer("schema_version").notNull(),
|
|
805
|
+
removedAt: sqliteCore.text("removed_at"),
|
|
806
|
+
lastAttemptedAt: sqliteCore.text("last_attempted_at").notNull(),
|
|
807
|
+
lastError: sqliteCore.text("last_error")
|
|
808
|
+
},
|
|
809
|
+
(t) => [
|
|
810
|
+
sqliteCore.primaryKey({
|
|
811
|
+
columns: [t.graphId, t.kindName, t.entity, t.schemaVersion]
|
|
812
|
+
})
|
|
813
|
+
]
|
|
814
|
+
);
|
|
815
|
+
const reconciliationMarkers = sqliteCore.sqliteTable(
|
|
816
|
+
n.reconciliationMarkers,
|
|
817
|
+
{
|
|
818
|
+
graphId: sqliteCore.text("graph_id").notNull(),
|
|
819
|
+
reconciledToVersion: sqliteCore.integer("reconciled_to_version").notNull()
|
|
820
|
+
},
|
|
821
|
+
(t) => [sqliteCore.primaryKey({ columns: [t.graphId] })]
|
|
822
|
+
);
|
|
823
|
+
const contributionMaterializations = sqliteCore.sqliteTable(
|
|
824
|
+
n.contributionMaterializations,
|
|
825
|
+
{
|
|
826
|
+
graphId: sqliteCore.text("graph_id").notNull(),
|
|
827
|
+
logicalName: sqliteCore.text("logical_name").notNull(),
|
|
828
|
+
owner: sqliteCore.text("owner").notNull(),
|
|
829
|
+
tableName: sqliteCore.text("table_name").notNull(),
|
|
830
|
+
signature: sqliteCore.text("signature").notNull(),
|
|
831
|
+
materializedAt: sqliteCore.text("materialized_at"),
|
|
832
|
+
lastAttemptedAt: sqliteCore.text("last_attempted_at").notNull(),
|
|
833
|
+
lastError: sqliteCore.text("last_error")
|
|
834
|
+
},
|
|
835
|
+
(t) => [
|
|
836
|
+
sqliteCore.primaryKey({
|
|
837
|
+
columns: [t.graphId, t.logicalName, t.owner, t.tableName]
|
|
838
|
+
})
|
|
839
|
+
]
|
|
840
|
+
);
|
|
841
|
+
return {
|
|
842
|
+
nodes: nodes3,
|
|
843
|
+
edges: edges3,
|
|
844
|
+
recordedNodes: recordedNodes3,
|
|
845
|
+
recordedEdges: recordedEdges3,
|
|
846
|
+
recordedClock: recordedClock3,
|
|
847
|
+
revisionOrigins,
|
|
848
|
+
identityAssertions,
|
|
849
|
+
recordedIdentityAssertions,
|
|
850
|
+
identityClosure,
|
|
851
|
+
identitySeparation,
|
|
852
|
+
uniques: uniques3,
|
|
853
|
+
edgeClaims: edgeClaims3,
|
|
854
|
+
schemaVersions: schemaVersions3,
|
|
855
|
+
indexMaterializations,
|
|
856
|
+
contributionMaterializations,
|
|
857
|
+
kindRemovals,
|
|
858
|
+
reconciliationMarkers,
|
|
859
|
+
/**
|
|
860
|
+
* The fulltext storage is a FTS5 virtual table which Drizzle cannot
|
|
861
|
+
* represent. DDL is emitted as raw SQL and operations query it via
|
|
862
|
+
* `sql.raw()`.
|
|
863
|
+
*/
|
|
864
|
+
fulltextTableName: n.fulltext
|
|
865
|
+
};
|
|
866
|
+
}
|
|
867
|
+
var tables2 = createSqliteTables();
|
|
868
|
+
var {
|
|
869
|
+
nodes: nodes2,
|
|
870
|
+
edges: edges2,
|
|
871
|
+
recordedNodes: recordedNodes2,
|
|
872
|
+
recordedEdges: recordedEdges2,
|
|
873
|
+
recordedClock: recordedClock2,
|
|
874
|
+
uniques: uniques2,
|
|
875
|
+
edgeClaims: edgeClaims2,
|
|
876
|
+
schemaVersions: schemaVersions2
|
|
877
|
+
} = tables2;
|
|
878
|
+
function getSqliteColumnType(column) {
|
|
879
|
+
switch (column.columnType) {
|
|
880
|
+
case "SQLiteText": {
|
|
881
|
+
return "TEXT";
|
|
882
|
+
}
|
|
883
|
+
case "SQLiteInteger": {
|
|
884
|
+
return "INTEGER";
|
|
885
|
+
}
|
|
886
|
+
case "SQLiteReal": {
|
|
887
|
+
return "REAL";
|
|
888
|
+
}
|
|
889
|
+
case "SQLiteBlob": {
|
|
890
|
+
return "BLOB";
|
|
891
|
+
}
|
|
892
|
+
default: {
|
|
893
|
+
return "TEXT";
|
|
894
|
+
}
|
|
895
|
+
}
|
|
896
|
+
}
|
|
897
|
+
function formatDefaultValue(value) {
|
|
898
|
+
if (value === null) return "NULL";
|
|
899
|
+
if (typeof value === "string") return `'${value}'`;
|
|
900
|
+
if (typeof value === "number") return String(value);
|
|
901
|
+
if (typeof value === "boolean") return value ? "1" : "0";
|
|
902
|
+
return JSON.stringify(value);
|
|
903
|
+
}
|
|
904
|
+
function generateSqliteCreateTableSQL(table) {
|
|
905
|
+
const config = sqliteCore.getTableConfig(table);
|
|
906
|
+
const columnDefs = [];
|
|
907
|
+
for (const column of config.columns) {
|
|
908
|
+
const parts = [
|
|
909
|
+
`"${column.name}"`,
|
|
910
|
+
getSqliteColumnType(column)
|
|
911
|
+
];
|
|
912
|
+
if (column.notNull) {
|
|
913
|
+
parts.push("NOT NULL");
|
|
914
|
+
}
|
|
915
|
+
if (column.hasDefault && column.default !== void 0) {
|
|
916
|
+
parts.push(`DEFAULT ${formatDefaultValue(column.default)}`);
|
|
917
|
+
}
|
|
918
|
+
columnDefs.push(parts.join(" "));
|
|
919
|
+
}
|
|
920
|
+
const pk = config.primaryKeys[0];
|
|
921
|
+
if (pk) {
|
|
922
|
+
const pkColumns = pk.columns.map((c) => `"${c.name}"`).join(", ");
|
|
923
|
+
columnDefs.push(`PRIMARY KEY (${pkColumns})`);
|
|
924
|
+
}
|
|
925
|
+
columnDefs.push(...renderTableChecks(config.checks, config.name));
|
|
926
|
+
return `CREATE TABLE IF NOT EXISTS "${config.name}" (
|
|
927
|
+
${columnDefs.join(",\n ")}
|
|
928
|
+
);`;
|
|
929
|
+
}
|
|
930
|
+
function renderTableChecks(checks, tableName) {
|
|
931
|
+
return checks.map(
|
|
932
|
+
(check3) => `CONSTRAINT "${check3.name}" CHECK (${inlineSqlOrThrow(
|
|
933
|
+
check3.value,
|
|
934
|
+
`table "${tableName}" CHECK constraint "${check3.name}"`
|
|
935
|
+
)})`
|
|
936
|
+
);
|
|
937
|
+
}
|
|
938
|
+
function renderIndexColumn(col) {
|
|
939
|
+
if (col && typeof col === "object" && "name" in col) {
|
|
940
|
+
return `"${col.name}"`;
|
|
941
|
+
}
|
|
942
|
+
const sql19 = tryInlineSql(col);
|
|
943
|
+
if (sql19 !== void 0) {
|
|
944
|
+
return sql19;
|
|
945
|
+
}
|
|
946
|
+
return "unknown";
|
|
947
|
+
}
|
|
948
|
+
function tryInlineSql(value) {
|
|
949
|
+
if (value && typeof value === "object" && "getSQL" in value) {
|
|
950
|
+
const maybe = value;
|
|
951
|
+
if (typeof maybe.getSQL === "function") {
|
|
952
|
+
return inlineSql(maybe.getSQL());
|
|
953
|
+
}
|
|
954
|
+
}
|
|
955
|
+
return inlineSql(value);
|
|
956
|
+
}
|
|
957
|
+
function flattenSqlChunk(chunk2) {
|
|
958
|
+
if (typeof chunk2 === "string") {
|
|
959
|
+
return chunk2;
|
|
960
|
+
}
|
|
961
|
+
if (typeof chunk2 === "object" && chunk2 !== null) {
|
|
962
|
+
if ("name" in chunk2 && typeof chunk2.name === "string") {
|
|
963
|
+
return `"${chunk2.name}"`;
|
|
964
|
+
}
|
|
965
|
+
if ("value" in chunk2) {
|
|
966
|
+
const value = chunk2.value;
|
|
967
|
+
if (typeof value === "string") {
|
|
968
|
+
return value;
|
|
969
|
+
}
|
|
970
|
+
if (Array.isArray(value)) {
|
|
971
|
+
return value.map((part) => flattenSqlChunk(part)).join("");
|
|
972
|
+
}
|
|
973
|
+
}
|
|
974
|
+
if ("queryChunks" in chunk2 && Array.isArray(chunk2.queryChunks)) {
|
|
975
|
+
return chunk2.queryChunks.map((part) => flattenSqlChunk(part)).join("");
|
|
976
|
+
}
|
|
977
|
+
if ("getSQL" in chunk2) {
|
|
978
|
+
const maybe = chunk2;
|
|
979
|
+
if (typeof maybe.getSQL === "function") {
|
|
980
|
+
return flattenSqlChunk(maybe.getSQL());
|
|
981
|
+
}
|
|
982
|
+
}
|
|
983
|
+
}
|
|
984
|
+
throw new Error(`Unable to inline SQL chunk: ${String(chunk2)}`);
|
|
985
|
+
}
|
|
986
|
+
function inlineSql(value) {
|
|
987
|
+
try {
|
|
988
|
+
return flattenSqlChunk(value);
|
|
989
|
+
} catch {
|
|
990
|
+
return void 0;
|
|
991
|
+
}
|
|
992
|
+
}
|
|
993
|
+
function inlineSqlOrThrow(value, context) {
|
|
994
|
+
const inlined = inlineSql(value);
|
|
995
|
+
if (inlined === void 0) {
|
|
996
|
+
throw new Error(`Unable to inline SQL for ${context}`);
|
|
997
|
+
}
|
|
998
|
+
return inlined;
|
|
999
|
+
}
|
|
1000
|
+
function generateSqliteCreateIndexSQL(table) {
|
|
1001
|
+
const config = sqliteCore.getTableConfig(table);
|
|
1002
|
+
const statements = [];
|
|
1003
|
+
for (const index3 of config.indexes) {
|
|
1004
|
+
const indexConfig = index3.config;
|
|
1005
|
+
const columns = indexConfig.columns.map((c) => renderIndexColumn(c)).join(", ");
|
|
1006
|
+
const unique = indexConfig.unique ? "UNIQUE " : "";
|
|
1007
|
+
const where = indexConfig.where ? ` WHERE ${inlineSqlOrThrow(indexConfig.where, `SQLite index "${indexConfig.name}" WHERE clause`)}` : "";
|
|
1008
|
+
statements.push(
|
|
1009
|
+
`CREATE ${unique}INDEX IF NOT EXISTS "${indexConfig.name}" ON "${config.name}" (${columns})${where};`
|
|
1010
|
+
);
|
|
1011
|
+
}
|
|
1012
|
+
return statements;
|
|
1013
|
+
}
|
|
1014
|
+
function isSqliteTable(value) {
|
|
1015
|
+
return drizzleOrm.is(value, sqliteCore.SQLiteTable);
|
|
1016
|
+
}
|
|
1017
|
+
function runtimeStrategyContributions(fulltextStrategy, fulltextTableName) {
|
|
1018
|
+
return fulltextStrategy.ownedTables(fulltextTableName).filter((contribution) => contribution.runtimeEnsure);
|
|
1019
|
+
}
|
|
1020
|
+
function sqliteContributions(tables3 = tables2, fulltextStrategy = chunkH2VWDQWC_cjs.fts5Strategy) {
|
|
1021
|
+
const contributions = [];
|
|
1022
|
+
for (const [key, table] of Object.entries(tables3)) {
|
|
1023
|
+
if (!isSqliteTable(table)) continue;
|
|
1024
|
+
contributions.push({
|
|
1025
|
+
logicalName: key,
|
|
1026
|
+
owner: chunkH2VWDQWC_cjs.BASE_CONTRIBUTION_OWNER,
|
|
1027
|
+
tableName: sqliteCore.getTableConfig(table).name,
|
|
1028
|
+
createDdl: [
|
|
1029
|
+
generateSqliteCreateTableSQL(table),
|
|
1030
|
+
...generateSqliteCreateIndexSQL(table)
|
|
1031
|
+
],
|
|
1032
|
+
runtimeEnsure: false
|
|
1033
|
+
});
|
|
1034
|
+
}
|
|
1035
|
+
for (const declared of fulltextStrategy.ownedTables(
|
|
1036
|
+
tables3.fulltextTableName
|
|
1037
|
+
)) {
|
|
1038
|
+
contributions.push(declared);
|
|
1039
|
+
}
|
|
1040
|
+
return contributions;
|
|
1041
|
+
}
|
|
1042
|
+
function generateSqliteDDL(tables3 = tables2, fulltextStrategy = chunkH2VWDQWC_cjs.fts5Strategy) {
|
|
1043
|
+
return sqliteContributions(tables3, fulltextStrategy).flatMap(
|
|
1044
|
+
(contribution) => [...contribution.createDdl]
|
|
1045
|
+
);
|
|
1046
|
+
}
|
|
1047
|
+
function generateSqliteMigrationSQL(tables3 = tables2, fulltextStrategy = chunkH2VWDQWC_cjs.fts5Strategy) {
|
|
1048
|
+
return generateSqliteDDL(tables3, fulltextStrategy).join("\n\n");
|
|
1049
|
+
}
|
|
1050
|
+
function getPgColumnType(column) {
|
|
1051
|
+
switch (column.columnType) {
|
|
1052
|
+
case "PgText": {
|
|
1053
|
+
return "TEXT";
|
|
1054
|
+
}
|
|
1055
|
+
case "PgInteger": {
|
|
1056
|
+
return "INTEGER";
|
|
1057
|
+
}
|
|
1058
|
+
case "PgBigInt53":
|
|
1059
|
+
case "PgBigInt64": {
|
|
1060
|
+
return "BIGINT";
|
|
1061
|
+
}
|
|
1062
|
+
case "PgBoolean": {
|
|
1063
|
+
return "BOOLEAN";
|
|
1064
|
+
}
|
|
1065
|
+
case "PgJsonb": {
|
|
1066
|
+
return "JSONB";
|
|
1067
|
+
}
|
|
1068
|
+
case "PgTimestamp": {
|
|
1069
|
+
return column.config?.withTimezone ? "TIMESTAMPTZ" : "TIMESTAMP";
|
|
1070
|
+
}
|
|
1071
|
+
case "PgReal": {
|
|
1072
|
+
return "REAL";
|
|
1073
|
+
}
|
|
1074
|
+
case "PgDoublePrecision": {
|
|
1075
|
+
return "DOUBLE PRECISION";
|
|
1076
|
+
}
|
|
1077
|
+
case "PgCustomColumn": {
|
|
1078
|
+
const dataType = column.getSQLType?.();
|
|
1079
|
+
return dataType ?? "TEXT";
|
|
1080
|
+
}
|
|
1081
|
+
default: {
|
|
1082
|
+
return "TEXT";
|
|
1083
|
+
}
|
|
1084
|
+
}
|
|
1085
|
+
}
|
|
1086
|
+
function formatPgDefaultValue(value) {
|
|
1087
|
+
if (value === null) return "NULL";
|
|
1088
|
+
if (typeof value === "string") return `'${value}'`;
|
|
1089
|
+
if (typeof value === "number") return String(value);
|
|
1090
|
+
if (typeof value === "boolean") return value ? "TRUE" : "FALSE";
|
|
1091
|
+
return JSON.stringify(value);
|
|
1092
|
+
}
|
|
1093
|
+
function generatePgCreateTableSQL(table) {
|
|
1094
|
+
const config = pgCore.getTableConfig(table);
|
|
1095
|
+
const columnDefs = [];
|
|
1096
|
+
for (const column of config.columns) {
|
|
1097
|
+
const parts = [`"${column.name}"`, getPgColumnType(column)];
|
|
1098
|
+
if (column.notNull) {
|
|
1099
|
+
parts.push("NOT NULL");
|
|
1100
|
+
}
|
|
1101
|
+
if (column.hasDefault && column.default !== void 0) {
|
|
1102
|
+
parts.push(`DEFAULT ${formatPgDefaultValue(column.default)}`);
|
|
1103
|
+
}
|
|
1104
|
+
columnDefs.push(parts.join(" "));
|
|
1105
|
+
}
|
|
1106
|
+
const pk = config.primaryKeys[0];
|
|
1107
|
+
if (pk) {
|
|
1108
|
+
const pkColumns = pk.columns.map((c) => `"${c.name}"`).join(", ");
|
|
1109
|
+
columnDefs.push(`PRIMARY KEY (${pkColumns})`);
|
|
1110
|
+
}
|
|
1111
|
+
columnDefs.push(...renderTableChecks(config.checks, config.name));
|
|
1112
|
+
return `CREATE TABLE IF NOT EXISTS "${config.name}" (
|
|
1113
|
+
${columnDefs.join(",\n ")}
|
|
1114
|
+
);`;
|
|
1115
|
+
}
|
|
1116
|
+
function generatePgCreateIndexSQL(table) {
|
|
1117
|
+
const config = pgCore.getTableConfig(table);
|
|
1118
|
+
const statements = [];
|
|
1119
|
+
for (const index3 of config.indexes) {
|
|
1120
|
+
const indexConfig = index3.config;
|
|
1121
|
+
const columns = indexConfig.columns.map((c) => renderIndexColumn(c)).join(", ");
|
|
1122
|
+
const unique = indexConfig.unique ? "UNIQUE " : "";
|
|
1123
|
+
const method = indexConfig.method && indexConfig.method !== "btree" ? ` USING ${indexConfig.method}` : "";
|
|
1124
|
+
const where = indexConfig.where ? ` WHERE ${inlineSqlOrThrow(indexConfig.where, `PostgreSQL index "${indexConfig.name}" WHERE clause`)}` : "";
|
|
1125
|
+
statements.push(
|
|
1126
|
+
`CREATE ${unique}INDEX IF NOT EXISTS "${indexConfig.name}" ON "${config.name}"${method} (${columns})${where};`
|
|
1127
|
+
);
|
|
1128
|
+
}
|
|
1129
|
+
return statements;
|
|
1130
|
+
}
|
|
1131
|
+
function isPgTable(value) {
|
|
1132
|
+
return drizzleOrm.is(value, pgCore.PgTable);
|
|
1133
|
+
}
|
|
1134
|
+
function postgresContributions(tables3 = tables, fulltextStrategy = chunkH2VWDQWC_cjs.tsvectorStrategy) {
|
|
1135
|
+
const contributions = [];
|
|
1136
|
+
for (const [key, table] of Object.entries(tables3)) {
|
|
1137
|
+
if (!isPgTable(table)) continue;
|
|
1138
|
+
if (table === tables3.fulltext) continue;
|
|
1139
|
+
contributions.push({
|
|
1140
|
+
logicalName: key,
|
|
1141
|
+
owner: chunkH2VWDQWC_cjs.BASE_CONTRIBUTION_OWNER,
|
|
1142
|
+
tableName: pgCore.getTableConfig(table).name,
|
|
1143
|
+
createDdl: [
|
|
1144
|
+
generatePgCreateTableSQL(table),
|
|
1145
|
+
...generatePgCreateIndexSQL(table)
|
|
1146
|
+
],
|
|
1147
|
+
runtimeEnsure: false
|
|
1148
|
+
});
|
|
1149
|
+
}
|
|
1150
|
+
for (const declared of fulltextStrategy.ownedTables(
|
|
1151
|
+
tables3.fulltextTableName
|
|
1152
|
+
)) {
|
|
1153
|
+
contributions.push(declared);
|
|
1154
|
+
}
|
|
1155
|
+
return contributions;
|
|
1156
|
+
}
|
|
1157
|
+
function generatePostgresDDL(tables3 = tables, fulltextStrategy = chunkH2VWDQWC_cjs.tsvectorStrategy) {
|
|
1158
|
+
return postgresContributions(tables3, fulltextStrategy).flatMap(
|
|
1159
|
+
(contribution) => [...contribution.createDdl]
|
|
1160
|
+
);
|
|
1161
|
+
}
|
|
1162
|
+
function generatePostgresMigrationSQL(tables3 = tables, fulltextStrategy = chunkH2VWDQWC_cjs.tsvectorStrategy) {
|
|
1163
|
+
const extensionSql = "-- Enable pgvector extension for vector similarity search\nCREATE EXTENSION IF NOT EXISTS vector;";
|
|
1164
|
+
const ddlSql = generatePostgresDDL(tables3, fulltextStrategy).join("\n\n");
|
|
1165
|
+
return `${extensionSql}
|
|
1166
|
+
|
|
1167
|
+
${ddlSql}`;
|
|
1168
|
+
}
|
|
1169
|
+
|
|
1170
|
+
// src/backend/capabilities/declarations.ts
|
|
1171
|
+
function deepFreeze(value) {
|
|
1172
|
+
if (typeof value !== "object" || value === null || Object.isFrozen(value)) {
|
|
1173
|
+
return value;
|
|
1174
|
+
}
|
|
1175
|
+
Object.freeze(value);
|
|
1176
|
+
for (const propertyValue of Object.values(value)) {
|
|
1177
|
+
deepFreeze(propertyValue);
|
|
1178
|
+
}
|
|
1179
|
+
return value;
|
|
1180
|
+
}
|
|
1181
|
+
function assertBundledCapabilityDeclarations(capabilities) {
|
|
1182
|
+
const { recursiveTraversal } = capabilities;
|
|
1183
|
+
if (recursiveTraversal?.supported === false && recursiveTraversal.reason === void 0) {
|
|
1184
|
+
throw new chunkX4GDXBOP_cjs.ConfigurationError(
|
|
1185
|
+
"Backend capability declaration is contradictory: recursiveTraversal.supported is false but no reason is given.",
|
|
1186
|
+
{
|
|
1187
|
+
code: "CAPABILITY_DECLARATION_CONTRADICTION",
|
|
1188
|
+
member: "recursiveTraversal",
|
|
1189
|
+
missing: "reason"
|
|
1190
|
+
},
|
|
1191
|
+
{
|
|
1192
|
+
suggestion: "Supply a `reason` explaining why this backend cannot perform recursive traversal."
|
|
1193
|
+
}
|
|
1194
|
+
);
|
|
1195
|
+
}
|
|
1196
|
+
if (recursiveTraversal?.supported === true && recursiveTraversal.reason !== void 0) {
|
|
1197
|
+
throw new chunkX4GDXBOP_cjs.ConfigurationError(
|
|
1198
|
+
"Backend capability declaration is contradictory: recursiveTraversal.supported is true but a dangling reason is present.",
|
|
1199
|
+
{
|
|
1200
|
+
code: "CAPABILITY_DECLARATION_CONTRADICTION",
|
|
1201
|
+
member: "recursiveTraversal",
|
|
1202
|
+
danglingReason: recursiveTraversal.reason
|
|
1203
|
+
},
|
|
1204
|
+
{
|
|
1205
|
+
suggestion: "Remove `reason` when recursiveTraversal.supported is true \u2014 it is only meaningful alongside `supported: false`."
|
|
1206
|
+
}
|
|
1207
|
+
);
|
|
1208
|
+
}
|
|
1209
|
+
return deepFreeze(structuredClone(capabilities));
|
|
1210
|
+
}
|
|
16
1211
|
|
|
17
1212
|
// src/backend/edge-endpoint-sets.ts
|
|
18
1213
|
var FIND_EDGES_ENDPOINT_FIXED_PARAM_COUNT = 6;
|
|
@@ -81,10 +1276,10 @@ function resolveHeterogeneousEdgeRead(params, maxBindParameters) {
|
|
|
81
1276
|
|
|
82
1277
|
// src/backend/live-node-candidates.ts
|
|
83
1278
|
function buildLiveNodeCandidates(nodesTableName, graphId, nodeKind, now) {
|
|
84
|
-
const
|
|
85
|
-
return
|
|
1279
|
+
const nodes3 = chunkH5IJSROF_cjs.sql.identifier(nodesTableName);
|
|
1280
|
+
return chunkH5IJSROF_cjs.sql`
|
|
86
1281
|
SELECT "id" AS node_id
|
|
87
|
-
FROM ${
|
|
1282
|
+
FROM ${nodes3}
|
|
88
1283
|
WHERE "graph_id" = ${graphId}
|
|
89
1284
|
AND "kind" = ${nodeKind}
|
|
90
1285
|
AND "deleted_at" IS NULL
|
|
@@ -123,7 +1318,7 @@ function vectorSlotFromDropIndexParams(params) {
|
|
|
123
1318
|
};
|
|
124
1319
|
}
|
|
125
1320
|
function mapVectorWriteError(error, params) {
|
|
126
|
-
const mismatch =
|
|
1321
|
+
const mismatch = chunkNLX5OWK7_cjs.parseDimensionMismatch(error);
|
|
127
1322
|
if (mismatch === void 0) return error;
|
|
128
1323
|
const attempted = mismatch.actual ?? "a different number of";
|
|
129
1324
|
return new chunkX4GDXBOP_cjs.EmbeddingDimensionChangedError(
|
|
@@ -142,7 +1337,7 @@ var SQLITE_CONTRIBUTION_MAT_TIMESTAMPS = {
|
|
|
142
1337
|
encode: (value) => value
|
|
143
1338
|
};
|
|
144
1339
|
var POSTGRES_CONTRIBUTION_MAT_TIMESTAMPS = {
|
|
145
|
-
decode:
|
|
1340
|
+
decode: chunk36SX6QXP_cjs.formatPostgresTimestamp,
|
|
146
1341
|
encode: (value) => new Date(value)
|
|
147
1342
|
};
|
|
148
1343
|
function mapContributionMaterializationRow(row, decode) {
|
|
@@ -192,7 +1387,7 @@ function contributionSignatureInput(dialect, identity, createDdl) {
|
|
|
192
1387
|
tableName: identity.tableName,
|
|
193
1388
|
createDdl
|
|
194
1389
|
};
|
|
195
|
-
return JSON.stringify(hashable,
|
|
1390
|
+
return JSON.stringify(hashable, chunkNLX5OWK7_cjs.sortedReplacer);
|
|
196
1391
|
}
|
|
197
1392
|
function evaluateContributionState(row, signature) {
|
|
198
1393
|
if (row === void 0) return "missing";
|
|
@@ -251,7 +1446,7 @@ function identityOf(graphId, contribution) {
|
|
|
251
1446
|
}
|
|
252
1447
|
function missingTableErrorNames(error, tableName) {
|
|
253
1448
|
const quotedTableName2 = `"${tableName.replaceAll('"', '""')}"`;
|
|
254
|
-
for (const link of
|
|
1449
|
+
for (const link of chunkNLX5OWK7_cjs.errorChain(error)) {
|
|
255
1450
|
const message = errorMessage(link);
|
|
256
1451
|
if (typeof message !== "string") continue;
|
|
257
1452
|
const sqliteMatch = /\bno such table:\s*([^\s;:]+)/i.exec(message);
|
|
@@ -356,13 +1551,13 @@ function gateFulltextMethods(source, assert, refuseUnavailable) {
|
|
|
356
1551
|
return gated;
|
|
357
1552
|
}
|
|
358
1553
|
function gateFulltext(tx, assert, refuseUnavailable) {
|
|
359
|
-
return
|
|
1554
|
+
return chunkNLX5OWK7_cjs.deriveBackend(
|
|
360
1555
|
tx,
|
|
361
1556
|
gateFulltextMethods(tx, assert, refuseUnavailable)
|
|
362
1557
|
);
|
|
363
1558
|
}
|
|
364
1559
|
function contributionRebuildSupported(fulltextStrategy, fulltextTableName, transactional) {
|
|
365
|
-
return transactional &&
|
|
1560
|
+
return transactional && runtimeStrategyContributions(fulltextStrategy, fulltextTableName).every(
|
|
366
1561
|
(contribution) => contribution.dropDdl !== void 0
|
|
367
1562
|
);
|
|
368
1563
|
}
|
|
@@ -387,7 +1582,7 @@ function createContributionMaterializer(deps) {
|
|
|
387
1582
|
const cachedCreateDdl = cached?.createDdl;
|
|
388
1583
|
const cachedSignature = cached?.signature;
|
|
389
1584
|
if (cachedCreateDdl?.length === contribution.createDdl.length && cachedSignature !== void 0 && contribution.createDdl.every(
|
|
390
|
-
(statement,
|
|
1585
|
+
(statement, index3) => cachedCreateDdl[index3] === statement
|
|
391
1586
|
)) {
|
|
392
1587
|
return cachedSignature;
|
|
393
1588
|
}
|
|
@@ -411,7 +1606,7 @@ function createContributionMaterializer(deps) {
|
|
|
411
1606
|
}
|
|
412
1607
|
}
|
|
413
1608
|
function runtimeContributions() {
|
|
414
|
-
return
|
|
1609
|
+
return runtimeStrategyContributions(fulltextStrategy, fulltextTableName);
|
|
415
1610
|
}
|
|
416
1611
|
function cacheInitializedSignature(key, signature) {
|
|
417
1612
|
if (!uncacheableKeys.has(key)) {
|
|
@@ -438,13 +1633,13 @@ function createContributionMaterializer(deps) {
|
|
|
438
1633
|
await deps.recordMarker({
|
|
439
1634
|
...identity,
|
|
440
1635
|
signature: existing.signature,
|
|
441
|
-
attemptedAt:
|
|
1636
|
+
attemptedAt: chunk36SX6QXP_cjs.nowIso(),
|
|
442
1637
|
materializedAt: void 0,
|
|
443
1638
|
error: error.message
|
|
444
1639
|
});
|
|
445
1640
|
throw error;
|
|
446
1641
|
}
|
|
447
|
-
const attemptedAt =
|
|
1642
|
+
const attemptedAt = chunk36SX6QXP_cjs.nowIso();
|
|
448
1643
|
try {
|
|
449
1644
|
for (const statement of contribution.createDdl) {
|
|
450
1645
|
await deps.execDdl(statement);
|
|
@@ -480,7 +1675,7 @@ function createContributionMaterializer(deps) {
|
|
|
480
1675
|
rows: indexMarkerRows(graphId, await deps.getMarkers(graphId))
|
|
481
1676
|
};
|
|
482
1677
|
} catch (error) {
|
|
483
|
-
if (!
|
|
1678
|
+
if (!chunkNLX5OWK7_cjs.isMissingTableError(error)) throw error;
|
|
484
1679
|
return { kind: "missing-table", error };
|
|
485
1680
|
}
|
|
486
1681
|
}
|
|
@@ -583,7 +1778,7 @@ function createContributionMaterializer(deps) {
|
|
|
583
1778
|
}
|
|
584
1779
|
async function refuseUnavailableFulltext(graphId, error) {
|
|
585
1780
|
await Promise.resolve();
|
|
586
|
-
if (!
|
|
1781
|
+
if (!chunkNLX5OWK7_cjs.isMissingTableError(error)) throw error;
|
|
587
1782
|
const missingContribution = runtimeContributions().find(
|
|
588
1783
|
(contribution) => contribution.logicalName === "fulltext" && missingTableErrorNames(error, contribution.tableName)
|
|
589
1784
|
);
|
|
@@ -755,25 +1950,47 @@ function createContributionMaterializer(deps) {
|
|
|
755
1950
|
};
|
|
756
1951
|
}
|
|
757
1952
|
async function lockContributionDdl(tx) {
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
1953
|
+
const plan = chunkNUQ2YFFH_cjs.resolveWriteFencePlan(deps.fenceTarget);
|
|
1954
|
+
const fence = chunkNUQ2YFFH_cjs.requireWriteFence(plan, "contribution DDL", "advisory-lock");
|
|
1955
|
+
switch (fence.kind) {
|
|
1956
|
+
case "lock": {
|
|
1957
|
+
await tx.execute(
|
|
1958
|
+
chunkH5IJSROF_cjs.asCompiledRowsSql(
|
|
1959
|
+
chunkH5IJSROF_cjs.sql`SELECT pg_advisory_xact_lock(hashtext(${CONTRIBUTION_DDL_LOCK_KEY}), 0)`
|
|
1960
|
+
)
|
|
1961
|
+
);
|
|
1962
|
+
return;
|
|
1963
|
+
}
|
|
1964
|
+
case "engine-serialized": {
|
|
1965
|
+
return;
|
|
1966
|
+
}
|
|
1967
|
+
}
|
|
764
1968
|
}
|
|
765
1969
|
async function lockSharedFulltextTable(tx, tableName) {
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
1970
|
+
const plan = chunkNUQ2YFFH_cjs.resolveWriteFencePlan(deps.fenceTarget);
|
|
1971
|
+
const fence = chunkNUQ2YFFH_cjs.requireWriteFence(
|
|
1972
|
+
plan,
|
|
1973
|
+
"shared fulltext table lock",
|
|
1974
|
+
"table-lock"
|
|
771
1975
|
);
|
|
1976
|
+
switch (fence.kind) {
|
|
1977
|
+
case "lock": {
|
|
1978
|
+
await tx.executeStatement(
|
|
1979
|
+
chunkH5IJSROF_cjs.asCompiledStatementSql(
|
|
1980
|
+
chunkH5IJSROF_cjs.sql`LOCK TABLE ${chunkH5IJSROF_cjs.sql.identifier(tableName)} IN ACCESS EXCLUSIVE MODE`
|
|
1981
|
+
)
|
|
1982
|
+
);
|
|
1983
|
+
return;
|
|
1984
|
+
}
|
|
1985
|
+
case "engine-serialized": {
|
|
1986
|
+
return;
|
|
1987
|
+
}
|
|
1988
|
+
}
|
|
772
1989
|
}
|
|
773
1990
|
async function readForeignGraphIds(tx, tableName, graphId) {
|
|
774
1991
|
const rows = await tx.execute(
|
|
775
|
-
|
|
776
|
-
|
|
1992
|
+
chunkH5IJSROF_cjs.asCompiledRowsSql(
|
|
1993
|
+
chunkH2VWDQWC_cjs.buildForeignFulltextGraphProbe(
|
|
777
1994
|
tableName,
|
|
778
1995
|
graphId,
|
|
779
1996
|
FOREIGN_GRAPH_REPORT_LIMIT
|
|
@@ -876,13 +2093,13 @@ function createContributionMaterializer(deps) {
|
|
|
876
2093
|
}
|
|
877
2094
|
if (!recreateStorage) {
|
|
878
2095
|
await tx.executeStatement(
|
|
879
|
-
|
|
880
|
-
|
|
2096
|
+
chunkH5IJSROF_cjs.asCompiledStatementSql(
|
|
2097
|
+
chunkH2VWDQWC_cjs.buildFulltextGraphDelete(sharedTable, graphId)
|
|
881
2098
|
)
|
|
882
2099
|
);
|
|
883
2100
|
}
|
|
884
2101
|
const stats = await repopulate(tx);
|
|
885
|
-
const now =
|
|
2102
|
+
const now = chunk36SX6QXP_cjs.nowIso();
|
|
886
2103
|
for (const { contribution, signature } of stamps) {
|
|
887
2104
|
await record({
|
|
888
2105
|
...identityOf(graphId, contribution),
|
|
@@ -944,7 +2161,7 @@ var SQLITE_INDEX_MAT_TIMESTAMPS = {
|
|
|
944
2161
|
encode: (value) => value
|
|
945
2162
|
};
|
|
946
2163
|
var POSTGRES_INDEX_MAT_TIMESTAMPS = {
|
|
947
|
-
decode:
|
|
2164
|
+
decode: chunk36SX6QXP_cjs.formatPostgresTimestamp,
|
|
948
2165
|
encode: (value) => new Date(value)
|
|
949
2166
|
};
|
|
950
2167
|
function mapMaterializationRow(row, decode) {
|
|
@@ -1002,7 +2219,7 @@ var SQLITE_KIND_REMOVAL_TIMESTAMPS = {
|
|
|
1002
2219
|
encode: (value) => value
|
|
1003
2220
|
};
|
|
1004
2221
|
var POSTGRES_KIND_REMOVAL_TIMESTAMPS = {
|
|
1005
|
-
decode:
|
|
2222
|
+
decode: chunk36SX6QXP_cjs.formatPostgresTimestamp,
|
|
1006
2223
|
encode: (value) => new Date(value)
|
|
1007
2224
|
};
|
|
1008
2225
|
function mapKindRemovalRow(row, decode) {
|
|
@@ -1043,27 +2260,87 @@ function buildKindRemovalOnConflictSet(removedAtColumn, paramsRemovedAt) {
|
|
|
1043
2260
|
lastError: drizzleOrm.sql`excluded.${drizzleOrm.sql.identifier("last_error")}`
|
|
1044
2261
|
};
|
|
1045
2262
|
}
|
|
2263
|
+
function primaryKeyConstraintNames(relation, keyColumns) {
|
|
2264
|
+
return [`${relation}_pkey`, `${relation}_${keyColumns.join("_")}_pk`];
|
|
2265
|
+
}
|
|
2266
|
+
function nodePrimaryKeyConstraint(nodes3) {
|
|
2267
|
+
const relation = drizzleOrm.getTableName(nodes3);
|
|
2268
|
+
return {
|
|
2269
|
+
table: relation,
|
|
2270
|
+
constraintNames: primaryKeyConstraintNames(relation, [
|
|
2271
|
+
nodes3.graphId.name,
|
|
2272
|
+
nodes3.kind.name,
|
|
2273
|
+
nodes3.id.name
|
|
2274
|
+
])
|
|
2275
|
+
};
|
|
2276
|
+
}
|
|
2277
|
+
function edgePrimaryKeyConstraint(edges3) {
|
|
2278
|
+
const relation = drizzleOrm.getTableName(edges3);
|
|
2279
|
+
return {
|
|
2280
|
+
table: relation,
|
|
2281
|
+
constraintNames: primaryKeyConstraintNames(relation, [
|
|
2282
|
+
edges3.graphId.name,
|
|
2283
|
+
edges3.id.name
|
|
2284
|
+
])
|
|
2285
|
+
};
|
|
2286
|
+
}
|
|
2287
|
+
function sqlNull(value) {
|
|
2288
|
+
return value ?? drizzleOrm.sql.raw("NULL");
|
|
2289
|
+
}
|
|
2290
|
+
function expectedValidFromPredicate(column, expected) {
|
|
2291
|
+
if (expected === void 0) return drizzleOrm.sql.empty();
|
|
2292
|
+
if (expected === null) return drizzleOrm.sql` AND ${column} IS NULL`;
|
|
2293
|
+
return drizzleOrm.sql` AND ${column} = ${expected}`;
|
|
2294
|
+
}
|
|
2295
|
+
function quotedColumn(column) {
|
|
2296
|
+
return drizzleOrm.sql.raw(`"${column.name.replaceAll('"', '""')}"`);
|
|
2297
|
+
}
|
|
2298
|
+
function quotedTableName(tableName) {
|
|
2299
|
+
return drizzleOrm.sql.raw(`"${tableName.replaceAll('"', '""')}"`);
|
|
2300
|
+
}
|
|
2301
|
+
var CODE_POINT_ORDER_BUILDERS = {
|
|
2302
|
+
postgres: (value) => drizzleOrm.sql`${value} COLLATE "C"`,
|
|
2303
|
+
sqlite: (value) => value
|
|
2304
|
+
};
|
|
2305
|
+
function codePointOrderKey(column, dialect) {
|
|
2306
|
+
return CODE_POINT_ORDER_BUILDERS[dialect](column);
|
|
2307
|
+
}
|
|
2308
|
+
function liveNodeIdsSubquery(nodes3, graphId, nodeKind, nowIso2) {
|
|
2309
|
+
return drizzleOrm.sql`SELECT ${nodes3.id} AS node_id FROM ${nodes3} WHERE ${nodes3.graphId} = ${graphId} AND ${nodes3.kind} = ${nodeKind} AND ${nodes3.deletedAt} IS NULL AND (${nodes3.validFrom} IS NULL OR ${nodes3.validFrom} <= ${nowIso2}) AND (${nodes3.validTo} IS NULL OR ${nodes3.validTo} > ${nowIso2})`;
|
|
2310
|
+
}
|
|
2311
|
+
function nodeColumnList(nodes3) {
|
|
2312
|
+
return drizzleOrm.sql.raw(
|
|
2313
|
+
`"${nodes3.graphId.name}", "${nodes3.kind.name}", "${nodes3.id.name}", "${nodes3.props.name}", "${nodes3.version.name}", "${nodes3.validFrom.name}", "${nodes3.validTo.name}", "${nodes3.createdAt.name}", "${nodes3.updatedAt.name}"`
|
|
2314
|
+
);
|
|
2315
|
+
}
|
|
2316
|
+
function edgeColumnList(edges3) {
|
|
2317
|
+
return drizzleOrm.sql.raw(
|
|
2318
|
+
`"${edges3.graphId.name}", "${edges3.id.name}", "${edges3.kind.name}", "${edges3.fromKind.name}", "${edges3.fromId.name}", "${edges3.toKind.name}", "${edges3.toId.name}", "${edges3.props.name}", "${edges3.validFrom.name}", "${edges3.validTo.name}", "${edges3.createdAt.name}", "${edges3.updatedAt.name}"`
|
|
2319
|
+
);
|
|
2320
|
+
}
|
|
2321
|
+
|
|
2322
|
+
// src/backend/drizzle/operations/hybrid.ts
|
|
1046
2323
|
function nodeIdOrderKey(dialect) {
|
|
1047
|
-
return
|
|
2324
|
+
return codePointOrderKey(drizzleOrm.sql.raw("node_id"), dialect);
|
|
1048
2325
|
}
|
|
1049
2326
|
function hybridCandidatesRef() {
|
|
1050
2327
|
return drizzleOrm.sql`SELECT node_id FROM tg_hybrid_cand`;
|
|
1051
2328
|
}
|
|
1052
2329
|
function buildHybridSearchStatement(input) {
|
|
1053
|
-
const { nodes } = input;
|
|
2330
|
+
const { nodes: nodes3 } = input;
|
|
1054
2331
|
const nodeIdOrder = nodeIdOrderKey(input.dialect);
|
|
1055
2332
|
const vectorOrder = input.vectorScoreDescending ? drizzleOrm.sql`score DESC, ${nodeIdOrder} ASC` : drizzleOrm.sql`score ASC, ${nodeIdOrder} ASC`;
|
|
1056
2333
|
const columnPairs = [
|
|
1057
|
-
[
|
|
1058
|
-
[
|
|
1059
|
-
[
|
|
1060
|
-
[
|
|
1061
|
-
[
|
|
1062
|
-
[
|
|
1063
|
-
[
|
|
1064
|
-
[
|
|
1065
|
-
[
|
|
1066
|
-
[
|
|
2334
|
+
[nodes3.graphId, "graph_id"],
|
|
2335
|
+
[nodes3.kind, "kind"],
|
|
2336
|
+
[nodes3.id, "id"],
|
|
2337
|
+
[nodes3.props, "props"],
|
|
2338
|
+
[nodes3.version, "version"],
|
|
2339
|
+
[nodes3.validFrom, "valid_from"],
|
|
2340
|
+
[nodes3.validTo, "valid_to"],
|
|
2341
|
+
[nodes3.createdAt, "created_at"],
|
|
2342
|
+
[nodes3.updatedAt, "updated_at"],
|
|
2343
|
+
[nodes3.deletedAt, "deleted_at"]
|
|
1067
2344
|
];
|
|
1068
2345
|
const nodeColumns = drizzleOrm.sql.raw(
|
|
1069
2346
|
columnPairs.map(
|
|
@@ -1116,17 +2393,17 @@ function buildHybridSearchStatement(input) {
|
|
|
1116
2393
|
tg_hybrid_fused.snippet AS snippet,
|
|
1117
2394
|
${nodeColumns}
|
|
1118
2395
|
FROM tg_hybrid_fused
|
|
1119
|
-
JOIN ${
|
|
1120
|
-
ON ${qualified(
|
|
1121
|
-
AND ${qualified(
|
|
1122
|
-
AND ${qualified(
|
|
1123
|
-
AND ${qualified(
|
|
2396
|
+
JOIN ${nodes3} AS tg_hybrid_node
|
|
2397
|
+
ON ${qualified(nodes3, "graphId")} = ${input.graphId}
|
|
2398
|
+
AND ${qualified(nodes3, "kind")} = ${input.nodeKind}
|
|
2399
|
+
AND ${qualified(nodes3, "id")} = tg_hybrid_fused.node_id
|
|
2400
|
+
AND ${qualified(nodes3, "deletedAt")} IS NULL
|
|
1124
2401
|
ORDER BY fused_score DESC, ${nodeIdOrder} ASC
|
|
1125
2402
|
LIMIT ${input.limit} OFFSET ${input.offset}
|
|
1126
2403
|
`;
|
|
1127
2404
|
}
|
|
1128
|
-
function qualified(
|
|
1129
|
-
return drizzleOrm.sql`tg_hybrid_node.${
|
|
2405
|
+
function qualified(nodes3, member) {
|
|
2406
|
+
return drizzleOrm.sql`tg_hybrid_node.${quotedColumn(nodes3[member])}`;
|
|
1130
2407
|
}
|
|
1131
2408
|
function present(value) {
|
|
1132
2409
|
return value !== null && value !== void 0;
|
|
@@ -1134,61 +2411,61 @@ function present(value) {
|
|
|
1134
2411
|
function mapHybridSearchRow(row, toNodeRow) {
|
|
1135
2412
|
return {
|
|
1136
2413
|
node: toNodeRow(row),
|
|
1137
|
-
fusedScore:
|
|
2414
|
+
fusedScore: chunk36SX6QXP_cjs.coerceNumericScore(row["fused_score"]),
|
|
1138
2415
|
...present(row["vector_rank"]) ? { vectorRank: Number(row["vector_rank"]) } : {},
|
|
1139
|
-
...present(row["vector_score"]) ? { vectorScore:
|
|
2416
|
+
...present(row["vector_score"]) ? { vectorScore: chunk36SX6QXP_cjs.coerceNumericScore(row["vector_score"]) } : {},
|
|
1140
2417
|
...present(row["fulltext_rank"]) ? { fulltextRank: Number(row["fulltext_rank"]) } : {},
|
|
1141
2418
|
...present(row["fulltext_score"]) ? {
|
|
1142
|
-
fulltextScore:
|
|
2419
|
+
fulltextScore: chunk36SX6QXP_cjs.coerceNumericScore(
|
|
1143
2420
|
row["fulltext_score"]
|
|
1144
2421
|
)
|
|
1145
2422
|
} : {},
|
|
1146
2423
|
...present(row["snippet"]) ? { snippet: String(row["snippet"]) } : {}
|
|
1147
2424
|
};
|
|
1148
2425
|
}
|
|
1149
|
-
function buildClearGraph(
|
|
2426
|
+
function buildClearGraph(tables3, graphId) {
|
|
1150
2427
|
return [
|
|
1151
2428
|
// The fulltext table is shared by every graph in the database, so its
|
|
1152
2429
|
// graph-scoped delete is owned by one builder the destructive
|
|
1153
2430
|
// contribution rebuild calls too — see `buildFulltextGraphDelete`.
|
|
1154
|
-
{ query:
|
|
2431
|
+
{ query: chunkH2VWDQWC_cjs.buildFulltextGraphDelete(tables3.fulltextTableName, graphId) },
|
|
1155
2432
|
{
|
|
1156
|
-
query: drizzleOrm.sql`DELETE FROM ${
|
|
2433
|
+
query: drizzleOrm.sql`DELETE FROM ${tables3.recordedIdentityAssertions} WHERE ${tables3.recordedIdentityAssertions.graphId} = ${graphId}`,
|
|
1157
2434
|
ignoreMissingTable: true,
|
|
1158
|
-
requiredTableName: drizzleOrm.getTableName(
|
|
2435
|
+
requiredTableName: drizzleOrm.getTableName(tables3.recordedIdentityAssertions)
|
|
1159
2436
|
},
|
|
1160
2437
|
{
|
|
1161
|
-
query: drizzleOrm.sql`DELETE FROM ${
|
|
2438
|
+
query: drizzleOrm.sql`DELETE FROM ${tables3.recordedEdges} WHERE ${tables3.recordedEdges.graphId} = ${graphId}`,
|
|
1162
2439
|
ignoreMissingTable: true,
|
|
1163
|
-
requiredTableName: drizzleOrm.getTableName(
|
|
2440
|
+
requiredTableName: drizzleOrm.getTableName(tables3.recordedEdges)
|
|
1164
2441
|
},
|
|
1165
2442
|
{
|
|
1166
|
-
query: drizzleOrm.sql`DELETE FROM ${
|
|
2443
|
+
query: drizzleOrm.sql`DELETE FROM ${tables3.recordedNodes} WHERE ${tables3.recordedNodes.graphId} = ${graphId}`,
|
|
1167
2444
|
ignoreMissingTable: true,
|
|
1168
|
-
requiredTableName: drizzleOrm.getTableName(
|
|
2445
|
+
requiredTableName: drizzleOrm.getTableName(tables3.recordedNodes)
|
|
1169
2446
|
},
|
|
1170
2447
|
{
|
|
1171
|
-
query: drizzleOrm.sql`DELETE FROM ${
|
|
2448
|
+
query: drizzleOrm.sql`DELETE FROM ${tables3.recordedClock} WHERE ${tables3.recordedClock.graphId} = ${graphId}`,
|
|
1172
2449
|
ignoreMissingTable: true,
|
|
1173
|
-
requiredTableName: drizzleOrm.getTableName(
|
|
2450
|
+
requiredTableName: drizzleOrm.getTableName(tables3.recordedClock)
|
|
1174
2451
|
},
|
|
1175
2452
|
{
|
|
1176
|
-
query: drizzleOrm.sql`DELETE FROM ${
|
|
2453
|
+
query: drizzleOrm.sql`DELETE FROM ${tables3.identitySeparation} WHERE ${tables3.identitySeparation.graphId} = ${graphId}`,
|
|
1177
2454
|
ignoreMissingTable: true,
|
|
1178
|
-
requiredTableName: drizzleOrm.getTableName(
|
|
2455
|
+
requiredTableName: drizzleOrm.getTableName(tables3.identitySeparation)
|
|
1179
2456
|
},
|
|
1180
2457
|
{
|
|
1181
|
-
query: drizzleOrm.sql`DELETE FROM ${
|
|
2458
|
+
query: drizzleOrm.sql`DELETE FROM ${tables3.identityClosure} WHERE ${tables3.identityClosure.graphId} = ${graphId}`,
|
|
1182
2459
|
ignoreMissingTable: true,
|
|
1183
|
-
requiredTableName: drizzleOrm.getTableName(
|
|
2460
|
+
requiredTableName: drizzleOrm.getTableName(tables3.identityClosure)
|
|
1184
2461
|
},
|
|
1185
2462
|
{
|
|
1186
|
-
query: drizzleOrm.sql`DELETE FROM ${
|
|
2463
|
+
query: drizzleOrm.sql`DELETE FROM ${tables3.identityAssertions} WHERE ${tables3.identityAssertions.graphId} = ${graphId}`,
|
|
1187
2464
|
ignoreMissingTable: true,
|
|
1188
|
-
requiredTableName: drizzleOrm.getTableName(
|
|
2465
|
+
requiredTableName: drizzleOrm.getTableName(tables3.identityAssertions)
|
|
1189
2466
|
},
|
|
1190
2467
|
{
|
|
1191
|
-
query: drizzleOrm.sql`DELETE FROM ${
|
|
2468
|
+
query: drizzleOrm.sql`DELETE FROM ${tables3.uniques} WHERE ${tables3.uniques.graphId} = ${graphId}`
|
|
1192
2469
|
},
|
|
1193
2470
|
// Edge claims name the edges they are held by, so they are cleared
|
|
1194
2471
|
// BEFORE the edges — the same ordering `uniques` gets against `nodes`.
|
|
@@ -1197,27 +2474,27 @@ function buildClearGraph(tables, graphId) {
|
|
|
1197
2474
|
// existed has no such table, and clearing a graph must not become the
|
|
1198
2475
|
// operation that fails on it.
|
|
1199
2476
|
{
|
|
1200
|
-
query: drizzleOrm.sql`DELETE FROM ${
|
|
2477
|
+
query: drizzleOrm.sql`DELETE FROM ${tables3.edgeClaims} WHERE ${tables3.edgeClaims.graphId} = ${graphId}`,
|
|
1201
2478
|
ignoreMissingTable: true,
|
|
1202
|
-
requiredTableName: drizzleOrm.getTableName(
|
|
2479
|
+
requiredTableName: drizzleOrm.getTableName(tables3.edgeClaims)
|
|
1203
2480
|
},
|
|
1204
2481
|
{
|
|
1205
|
-
query: drizzleOrm.sql`DELETE FROM ${
|
|
2482
|
+
query: drizzleOrm.sql`DELETE FROM ${tables3.edges} WHERE ${tables3.edges.graphId} = ${graphId}`
|
|
1206
2483
|
},
|
|
1207
2484
|
{
|
|
1208
|
-
query: drizzleOrm.sql`DELETE FROM ${
|
|
2485
|
+
query: drizzleOrm.sql`DELETE FROM ${tables3.nodes} WHERE ${tables3.nodes.graphId} = ${graphId}`
|
|
1209
2486
|
},
|
|
1210
2487
|
{
|
|
1211
|
-
query: drizzleOrm.sql`DELETE FROM ${
|
|
2488
|
+
query: drizzleOrm.sql`DELETE FROM ${tables3.indexMaterializations} WHERE ${tables3.indexMaterializations.graphId} = ${graphId}`
|
|
1212
2489
|
},
|
|
1213
2490
|
{
|
|
1214
|
-
query: drizzleOrm.sql`DELETE FROM ${
|
|
2491
|
+
query: drizzleOrm.sql`DELETE FROM ${tables3.kindRemovals} WHERE ${tables3.kindRemovals.graphId} = ${graphId}`
|
|
1215
2492
|
},
|
|
1216
2493
|
{
|
|
1217
|
-
query: drizzleOrm.sql`DELETE FROM ${
|
|
2494
|
+
query: drizzleOrm.sql`DELETE FROM ${tables3.reconciliationMarkers} WHERE ${tables3.reconciliationMarkers.graphId} = ${graphId}`
|
|
1218
2495
|
},
|
|
1219
2496
|
{
|
|
1220
|
-
query: drizzleOrm.sql`DELETE FROM ${
|
|
2497
|
+
query: drizzleOrm.sql`DELETE FROM ${tables3.schemaVersions} WHERE ${tables3.schemaVersions.graphId} = ${graphId}`
|
|
1221
2498
|
}
|
|
1222
2499
|
];
|
|
1223
2500
|
}
|
|
@@ -1239,21 +2516,21 @@ function buildTemporalConditions(table, params) {
|
|
|
1239
2516
|
}
|
|
1240
2517
|
return conditions;
|
|
1241
2518
|
}
|
|
1242
|
-
function buildFindNodesByKind(
|
|
1243
|
-
const { nodes } =
|
|
2519
|
+
function buildFindNodesByKind(tables3, params) {
|
|
2520
|
+
const { nodes: nodes3 } = tables3;
|
|
1244
2521
|
const conditions = [
|
|
1245
|
-
drizzleOrm.sql`${
|
|
1246
|
-
drizzleOrm.sql`${
|
|
1247
|
-
...buildTemporalConditions(
|
|
2522
|
+
drizzleOrm.sql`${nodes3.graphId} = ${params.graphId}`,
|
|
2523
|
+
drizzleOrm.sql`${nodes3.kind} = ${params.kind}`,
|
|
2524
|
+
...buildTemporalConditions(nodes3, params)
|
|
1248
2525
|
];
|
|
1249
2526
|
if (params.orderBy === "id" && params.after !== void 0) {
|
|
1250
|
-
conditions.push(drizzleOrm.sql`${
|
|
2527
|
+
conditions.push(drizzleOrm.sql`${nodes3.id} > ${params.after}`);
|
|
1251
2528
|
}
|
|
1252
2529
|
const whereClause = drizzleOrm.sql.join(conditions, drizzleOrm.sql` AND `);
|
|
1253
|
-
const orderByClause = params.orderBy === "id" ? drizzleOrm.sql`${
|
|
2530
|
+
const orderByClause = params.orderBy === "id" ? drizzleOrm.sql`${nodes3.id} ASC` : drizzleOrm.sql`${nodes3.createdAt} DESC, ${nodes3.id} DESC`;
|
|
1254
2531
|
if (params.limit !== void 0 && params.offset !== void 0) {
|
|
1255
2532
|
return drizzleOrm.sql`
|
|
1256
|
-
SELECT * FROM ${
|
|
2533
|
+
SELECT * FROM ${nodes3}
|
|
1257
2534
|
WHERE ${whereClause}
|
|
1258
2535
|
ORDER BY ${orderByClause}
|
|
1259
2536
|
LIMIT ${params.limit} OFFSET ${params.offset}
|
|
@@ -1261,28 +2538,28 @@ function buildFindNodesByKind(tables, params) {
|
|
|
1261
2538
|
}
|
|
1262
2539
|
if (params.limit !== void 0) {
|
|
1263
2540
|
return drizzleOrm.sql`
|
|
1264
|
-
SELECT * FROM ${
|
|
2541
|
+
SELECT * FROM ${nodes3}
|
|
1265
2542
|
WHERE ${whereClause}
|
|
1266
2543
|
ORDER BY ${orderByClause}
|
|
1267
2544
|
LIMIT ${params.limit}
|
|
1268
2545
|
`;
|
|
1269
2546
|
}
|
|
1270
2547
|
return drizzleOrm.sql`
|
|
1271
|
-
SELECT * FROM ${
|
|
2548
|
+
SELECT * FROM ${nodes3}
|
|
1272
2549
|
WHERE ${whereClause}
|
|
1273
2550
|
ORDER BY ${orderByClause}
|
|
1274
2551
|
`;
|
|
1275
2552
|
}
|
|
1276
|
-
function buildCountNodesByKind(
|
|
1277
|
-
const { nodes } =
|
|
2553
|
+
function buildCountNodesByKind(tables3, params) {
|
|
2554
|
+
const { nodes: nodes3 } = tables3;
|
|
1278
2555
|
const conditions = [
|
|
1279
|
-
drizzleOrm.sql`${
|
|
1280
|
-
drizzleOrm.sql`${
|
|
1281
|
-
...buildTemporalConditions(
|
|
2556
|
+
drizzleOrm.sql`${nodes3.graphId} = ${params.graphId}`,
|
|
2557
|
+
drizzleOrm.sql`${nodes3.kind} = ${params.kind}`,
|
|
2558
|
+
...buildTemporalConditions(nodes3, params)
|
|
1282
2559
|
];
|
|
1283
2560
|
const whereClause = drizzleOrm.sql.join(conditions, drizzleOrm.sql` AND `);
|
|
1284
2561
|
return drizzleOrm.sql`
|
|
1285
|
-
SELECT COUNT(*) as count FROM ${
|
|
2562
|
+
SELECT COUNT(*) as count FROM ${nodes3}
|
|
1286
2563
|
WHERE ${whereClause}
|
|
1287
2564
|
`;
|
|
1288
2565
|
}
|
|
@@ -1292,43 +2569,43 @@ function buildIdSetCondition(column, ids) {
|
|
|
1292
2569
|
drizzleOrm.sql`, `
|
|
1293
2570
|
)})`;
|
|
1294
2571
|
}
|
|
1295
|
-
function buildEdgeOrdering(
|
|
1296
|
-
const { edges } =
|
|
1297
|
-
return orderBy === "id" ? { qualified: drizzleOrm.sql`${
|
|
1298
|
-
qualified: drizzleOrm.sql`${
|
|
2572
|
+
function buildEdgeOrdering(tables3, orderBy) {
|
|
2573
|
+
const { edges: edges3 } = tables3;
|
|
2574
|
+
return orderBy === "id" ? { qualified: drizzleOrm.sql`${edges3.id} ASC`, bare: drizzleOrm.sql.raw(`"id" ASC`) } : {
|
|
2575
|
+
qualified: drizzleOrm.sql`${edges3.createdAt} DESC, ${edges3.id} DESC`,
|
|
1299
2576
|
bare: drizzleOrm.sql.raw(`"created_at" DESC, "id" DESC`)
|
|
1300
2577
|
};
|
|
1301
2578
|
}
|
|
1302
|
-
function buildFindEdgesByKind(
|
|
1303
|
-
const { edges } =
|
|
2579
|
+
function buildFindEdgesByKind(tables3, params) {
|
|
2580
|
+
const { edges: edges3 } = tables3;
|
|
1304
2581
|
const conditions = [
|
|
1305
|
-
drizzleOrm.sql`${
|
|
1306
|
-
drizzleOrm.sql`${
|
|
1307
|
-
...buildTemporalConditions(
|
|
2582
|
+
drizzleOrm.sql`${edges3.graphId} = ${params.graphId}`,
|
|
2583
|
+
drizzleOrm.sql`${edges3.kind} = ${params.kind}`,
|
|
2584
|
+
...buildTemporalConditions(edges3, params)
|
|
1308
2585
|
];
|
|
1309
2586
|
if (params.fromKind !== void 0) {
|
|
1310
|
-
conditions.push(drizzleOrm.sql`${
|
|
2587
|
+
conditions.push(drizzleOrm.sql`${edges3.fromKind} = ${params.fromKind}`);
|
|
1311
2588
|
}
|
|
1312
2589
|
if (params.fromId !== void 0) {
|
|
1313
|
-
conditions.push(drizzleOrm.sql`${
|
|
2590
|
+
conditions.push(drizzleOrm.sql`${edges3.fromId} = ${params.fromId}`);
|
|
1314
2591
|
}
|
|
1315
2592
|
if (params.toKind !== void 0) {
|
|
1316
|
-
conditions.push(drizzleOrm.sql`${
|
|
2593
|
+
conditions.push(drizzleOrm.sql`${edges3.toKind} = ${params.toKind}`);
|
|
1317
2594
|
}
|
|
1318
2595
|
if (params.toId !== void 0) {
|
|
1319
|
-
conditions.push(drizzleOrm.sql`${
|
|
2596
|
+
conditions.push(drizzleOrm.sql`${edges3.toId} = ${params.toId}`);
|
|
1320
2597
|
}
|
|
1321
2598
|
if (params.orderBy === "id" && params.after !== void 0) {
|
|
1322
|
-
conditions.push(drizzleOrm.sql`${
|
|
2599
|
+
conditions.push(drizzleOrm.sql`${edges3.id} > ${params.after}`);
|
|
1323
2600
|
}
|
|
1324
2601
|
const whereClause = drizzleOrm.sql.join(conditions, drizzleOrm.sql` AND `);
|
|
1325
2602
|
const { qualified: orderByClause } = buildEdgeOrdering(
|
|
1326
|
-
|
|
2603
|
+
tables3,
|
|
1327
2604
|
params.orderBy
|
|
1328
2605
|
);
|
|
1329
2606
|
if (params.limit !== void 0 && params.offset !== void 0) {
|
|
1330
2607
|
return drizzleOrm.sql`
|
|
1331
|
-
SELECT * FROM ${
|
|
2608
|
+
SELECT * FROM ${edges3}
|
|
1332
2609
|
WHERE ${whereClause}
|
|
1333
2610
|
ORDER BY ${orderByClause}
|
|
1334
2611
|
LIMIT ${params.limit} OFFSET ${params.offset}
|
|
@@ -1336,37 +2613,37 @@ function buildFindEdgesByKind(tables, params) {
|
|
|
1336
2613
|
}
|
|
1337
2614
|
if (params.limit !== void 0) {
|
|
1338
2615
|
return drizzleOrm.sql`
|
|
1339
|
-
SELECT * FROM ${
|
|
2616
|
+
SELECT * FROM ${edges3}
|
|
1340
2617
|
WHERE ${whereClause}
|
|
1341
2618
|
ORDER BY ${orderByClause}
|
|
1342
2619
|
LIMIT ${params.limit}
|
|
1343
2620
|
`;
|
|
1344
2621
|
}
|
|
1345
2622
|
return drizzleOrm.sql`
|
|
1346
|
-
SELECT * FROM ${
|
|
2623
|
+
SELECT * FROM ${edges3}
|
|
1347
2624
|
WHERE ${whereClause}
|
|
1348
2625
|
ORDER BY ${orderByClause}
|
|
1349
2626
|
`;
|
|
1350
2627
|
}
|
|
1351
|
-
function buildFindEdgesByEndpointSet(
|
|
1352
|
-
const { edges } =
|
|
2628
|
+
function buildFindEdgesByEndpointSet(tables3, params, endpointIds) {
|
|
2629
|
+
const { edges: edges3 } = tables3;
|
|
1353
2630
|
const fromSide = params.side === "from";
|
|
1354
|
-
const kindColumn = fromSide ?
|
|
1355
|
-
const idColumn = fromSide ?
|
|
2631
|
+
const kindColumn = fromSide ? edges3.fromKind : edges3.toKind;
|
|
2632
|
+
const idColumn = fromSide ? edges3.fromId : edges3.toId;
|
|
1356
2633
|
const whereClause = drizzleOrm.sql.join(
|
|
1357
2634
|
[
|
|
1358
|
-
drizzleOrm.sql`${
|
|
1359
|
-
drizzleOrm.sql`${
|
|
1360
|
-
...buildTemporalConditions(
|
|
2635
|
+
drizzleOrm.sql`${edges3.graphId} = ${params.graphId}`,
|
|
2636
|
+
drizzleOrm.sql`${edges3.kind} = ${params.kind}`,
|
|
2637
|
+
...buildTemporalConditions(edges3, params),
|
|
1361
2638
|
drizzleOrm.sql`${kindColumn} = ${params.endpointKind}`,
|
|
1362
2639
|
buildIdSetCondition(idColumn, endpointIds)
|
|
1363
2640
|
],
|
|
1364
2641
|
drizzleOrm.sql` AND `
|
|
1365
2642
|
);
|
|
1366
|
-
const { qualified: orderByClause, bare: derivedOrderByClause } = buildEdgeOrdering(
|
|
2643
|
+
const { qualified: orderByClause, bare: derivedOrderByClause } = buildEdgeOrdering(tables3, void 0);
|
|
1367
2644
|
if (params.limitPerEndpoint === void 0) {
|
|
1368
2645
|
return drizzleOrm.sql`
|
|
1369
|
-
SELECT * FROM ${
|
|
2646
|
+
SELECT * FROM ${edges3}
|
|
1370
2647
|
WHERE ${whereClause}
|
|
1371
2648
|
ORDER BY ${orderByClause}
|
|
1372
2649
|
`;
|
|
@@ -1375,7 +2652,7 @@ function buildFindEdgesByEndpointSet(tables, params, endpointIds) {
|
|
|
1375
2652
|
SELECT *, ROW_NUMBER() OVER (
|
|
1376
2653
|
PARTITION BY ${idColumn} ORDER BY ${orderByClause}
|
|
1377
2654
|
) AS endpoint_rank
|
|
1378
|
-
FROM ${
|
|
2655
|
+
FROM ${edges3}
|
|
1379
2656
|
WHERE ${whereClause}
|
|
1380
2657
|
`;
|
|
1381
2658
|
return drizzleOrm.sql`
|
|
@@ -1384,11 +2661,11 @@ function buildFindEdgesByEndpointSet(tables, params, endpointIds) {
|
|
|
1384
2661
|
ORDER BY ${derivedOrderByClause}
|
|
1385
2662
|
`;
|
|
1386
2663
|
}
|
|
1387
|
-
function buildFindEdgesByHeterogeneousEndpointSet(
|
|
1388
|
-
const { edges } =
|
|
2664
|
+
function buildFindEdgesByHeterogeneousEndpointSet(tables3, params, endpoints, edgeKinds) {
|
|
2665
|
+
const { edges: edges3 } = tables3;
|
|
1389
2666
|
const fromSide = params.side === "from";
|
|
1390
|
-
const kindColumn = fromSide ?
|
|
1391
|
-
const idColumn = fromSide ?
|
|
2667
|
+
const kindColumn = fromSide ? edges3.fromKind : edges3.toKind;
|
|
2668
|
+
const idColumn = fromSide ? edges3.fromId : edges3.toId;
|
|
1392
2669
|
const requestedKind = drizzleOrm.sql.raw(`requested_endpoints."endpoint_kind"`);
|
|
1393
2670
|
const requestedId = drizzleOrm.sql.raw(`requested_endpoints."endpoint_id"`);
|
|
1394
2671
|
const requestedRows = drizzleOrm.sql.join(
|
|
@@ -1397,32 +2674,32 @@ function buildFindEdgesByHeterogeneousEndpointSet(tables, params, endpoints, edg
|
|
|
1397
2674
|
);
|
|
1398
2675
|
const whereClause = drizzleOrm.sql.join(
|
|
1399
2676
|
[
|
|
1400
|
-
drizzleOrm.sql`${
|
|
1401
|
-
buildIdSetCondition(
|
|
1402
|
-
...buildTemporalConditions(
|
|
2677
|
+
drizzleOrm.sql`${edges3.graphId} = ${params.graphId}`,
|
|
2678
|
+
buildIdSetCondition(edges3.kind, edgeKinds),
|
|
2679
|
+
...buildTemporalConditions(edges3, params)
|
|
1403
2680
|
],
|
|
1404
2681
|
drizzleOrm.sql` AND `
|
|
1405
2682
|
);
|
|
1406
2683
|
const joinClause = drizzleOrm.sql`
|
|
1407
|
-
FROM ${
|
|
2684
|
+
FROM ${edges3}
|
|
1408
2685
|
INNER JOIN requested_endpoints
|
|
1409
2686
|
ON ${kindColumn} = ${requestedKind}
|
|
1410
2687
|
AND ${idColumn} = ${requestedId}
|
|
1411
2688
|
WHERE ${whereClause}
|
|
1412
2689
|
`;
|
|
1413
|
-
const { qualified: orderByClause, bare: derivedOrderByClause } = buildEdgeOrdering(
|
|
2690
|
+
const { qualified: orderByClause, bare: derivedOrderByClause } = buildEdgeOrdering(tables3, void 0);
|
|
1414
2691
|
if (params.limitPerEndpoint === void 0) {
|
|
1415
2692
|
return drizzleOrm.sql`
|
|
1416
2693
|
WITH requested_endpoints(endpoint_kind, endpoint_id) AS (
|
|
1417
2694
|
VALUES ${requestedRows}
|
|
1418
2695
|
)
|
|
1419
|
-
SELECT ${
|
|
2696
|
+
SELECT ${edges3}.*
|
|
1420
2697
|
${joinClause}
|
|
1421
2698
|
ORDER BY ${orderByClause}
|
|
1422
2699
|
`;
|
|
1423
2700
|
}
|
|
1424
2701
|
const ranked = drizzleOrm.sql`
|
|
1425
|
-
SELECT ${
|
|
2702
|
+
SELECT ${edges3}.*, ROW_NUMBER() OVER (
|
|
1426
2703
|
PARTITION BY ${kindColumn}, ${idColumn} ORDER BY ${orderByClause}
|
|
1427
2704
|
) AS endpoint_rank
|
|
1428
2705
|
${joinClause}
|
|
@@ -1436,28 +2713,28 @@ function buildFindEdgesByHeterogeneousEndpointSet(tables, params, endpoints, edg
|
|
|
1436
2713
|
ORDER BY ${derivedOrderByClause}
|
|
1437
2714
|
`;
|
|
1438
2715
|
}
|
|
1439
|
-
function buildCountEdgesByKind(
|
|
1440
|
-
const { edges } =
|
|
2716
|
+
function buildCountEdgesByKind(tables3, params) {
|
|
2717
|
+
const { edges: edges3 } = tables3;
|
|
1441
2718
|
const conditions = [
|
|
1442
|
-
drizzleOrm.sql`${
|
|
1443
|
-
drizzleOrm.sql`${
|
|
1444
|
-
...buildTemporalConditions(
|
|
2719
|
+
drizzleOrm.sql`${edges3.graphId} = ${params.graphId}`,
|
|
2720
|
+
drizzleOrm.sql`${edges3.kind} = ${params.kind}`,
|
|
2721
|
+
...buildTemporalConditions(edges3, params)
|
|
1445
2722
|
];
|
|
1446
2723
|
if (params.fromKind !== void 0) {
|
|
1447
|
-
conditions.push(drizzleOrm.sql`${
|
|
2724
|
+
conditions.push(drizzleOrm.sql`${edges3.fromKind} = ${params.fromKind}`);
|
|
1448
2725
|
}
|
|
1449
2726
|
if (params.fromId !== void 0) {
|
|
1450
|
-
conditions.push(drizzleOrm.sql`${
|
|
2727
|
+
conditions.push(drizzleOrm.sql`${edges3.fromId} = ${params.fromId}`);
|
|
1451
2728
|
}
|
|
1452
2729
|
if (params.toKind !== void 0) {
|
|
1453
|
-
conditions.push(drizzleOrm.sql`${
|
|
2730
|
+
conditions.push(drizzleOrm.sql`${edges3.toKind} = ${params.toKind}`);
|
|
1454
2731
|
}
|
|
1455
2732
|
if (params.toId !== void 0) {
|
|
1456
|
-
conditions.push(drizzleOrm.sql`${
|
|
2733
|
+
conditions.push(drizzleOrm.sql`${edges3.toId} = ${params.toId}`);
|
|
1457
2734
|
}
|
|
1458
2735
|
const whereClause = drizzleOrm.sql.join(conditions, drizzleOrm.sql` AND `);
|
|
1459
2736
|
return drizzleOrm.sql`
|
|
1460
|
-
SELECT COUNT(*) as count FROM ${
|
|
2737
|
+
SELECT COUNT(*) as count FROM ${edges3}
|
|
1461
2738
|
WHERE ${whereClause}
|
|
1462
2739
|
`;
|
|
1463
2740
|
}
|
|
@@ -1471,313 +2748,382 @@ function inList(values) {
|
|
|
1471
2748
|
drizzleOrm.sql`, `
|
|
1472
2749
|
);
|
|
1473
2750
|
}
|
|
1474
|
-
function buildContendedUniqueRowAudit(
|
|
1475
|
-
const { uniques } =
|
|
1476
|
-
const relation = drizzleOrm.getTableName(
|
|
2751
|
+
function buildContendedUniqueRowAudit(tables3, graphId, constraintNames) {
|
|
2752
|
+
const { uniques: uniques3 } = tables3;
|
|
2753
|
+
const relation = drizzleOrm.getTableName(uniques3);
|
|
1477
2754
|
return drizzleOrm.sql`
|
|
1478
2755
|
SELECT
|
|
1479
|
-
${
|
|
1480
|
-
${
|
|
1481
|
-
${
|
|
1482
|
-
${
|
|
1483
|
-
${
|
|
1484
|
-
FROM ${
|
|
1485
|
-
WHERE ${qualified2(relation,
|
|
1486
|
-
AND ${qualified2(relation,
|
|
1487
|
-
AND ${qualified2(relation,
|
|
2756
|
+
${quotedColumn(uniques3.nodeKind)} as node_kind,
|
|
2757
|
+
${quotedColumn(uniques3.constraintName)} as constraint_name,
|
|
2758
|
+
${quotedColumn(uniques3.key)} as key,
|
|
2759
|
+
${quotedColumn(uniques3.concreteKind)} as concrete_kind,
|
|
2760
|
+
${quotedColumn(uniques3.nodeId)} as node_id
|
|
2761
|
+
FROM ${uniques3}
|
|
2762
|
+
WHERE ${qualified2(relation, uniques3.graphId)} = ${graphId}
|
|
2763
|
+
AND ${qualified2(relation, uniques3.constraintName)} IN (${inList(constraintNames)})
|
|
2764
|
+
AND ${qualified2(relation, uniques3.deletedAt)} IS NULL
|
|
1488
2765
|
AND EXISTS (
|
|
1489
|
-
SELECT 1 FROM ${
|
|
1490
|
-
WHERE ${qualified2(PEER,
|
|
1491
|
-
AND ${qualified2(PEER,
|
|
1492
|
-
AND ${qualified2(PEER,
|
|
1493
|
-
AND ${qualified2(PEER,
|
|
1494
|
-
AND ${qualified2(PEER,
|
|
2766
|
+
SELECT 1 FROM ${uniques3} AS ${drizzleOrm.sql.raw(`"${PEER}"`)}
|
|
2767
|
+
WHERE ${qualified2(PEER, uniques3.graphId)} = ${qualified2(relation, uniques3.graphId)}
|
|
2768
|
+
AND ${qualified2(PEER, uniques3.constraintName)} = ${qualified2(relation, uniques3.constraintName)}
|
|
2769
|
+
AND ${qualified2(PEER, uniques3.key)} = ${qualified2(relation, uniques3.key)}
|
|
2770
|
+
AND ${qualified2(PEER, uniques3.deletedAt)} IS NULL
|
|
2771
|
+
AND ${qualified2(PEER, uniques3.nodeKind)} <> ${qualified2(relation, uniques3.nodeKind)}
|
|
1495
2772
|
)
|
|
1496
2773
|
`;
|
|
1497
2774
|
}
|
|
1498
|
-
function buildContendedEdgeRowAudit(
|
|
1499
|
-
const { edges } =
|
|
1500
|
-
const relation = drizzleOrm.getTableName(
|
|
1501
|
-
const spec =
|
|
1502
|
-
const activeOnly = spec.holderLiveness === "liveAndActive" ? drizzleOrm.sql` AND ${qualified2(relation,
|
|
1503
|
-
const peerActiveOnly = spec.holderLiveness === "liveAndActive" ? drizzleOrm.sql` AND ${qualified2(PEER,
|
|
2775
|
+
function buildContendedEdgeRowAudit(tables3, graphId, cardinality, edgeKinds) {
|
|
2776
|
+
const { edges: edges3 } = tables3;
|
|
2777
|
+
const relation = drizzleOrm.getTableName(edges3);
|
|
2778
|
+
const spec = chunkFMMW3KX7_cjs.EDGE_CARDINALITY_SPECS[cardinality];
|
|
2779
|
+
const activeOnly = spec.holderLiveness === "liveAndActive" ? drizzleOrm.sql` AND ${qualified2(relation, edges3.validTo)} IS NULL` : drizzleOrm.sql.empty();
|
|
2780
|
+
const peerActiveOnly = spec.holderLiveness === "liveAndActive" ? drizzleOrm.sql` AND ${qualified2(PEER, edges3.validTo)} IS NULL` : drizzleOrm.sql.empty();
|
|
1504
2781
|
const peerToEndpoints = spec.keyShape === "fromAndTo" ? drizzleOrm.sql`
|
|
1505
|
-
AND ${qualified2(PEER,
|
|
1506
|
-
AND ${qualified2(PEER,
|
|
2782
|
+
AND ${qualified2(PEER, edges3.toKind)} = ${qualified2(relation, edges3.toKind)}
|
|
2783
|
+
AND ${qualified2(PEER, edges3.toId)} = ${qualified2(relation, edges3.toId)}
|
|
1507
2784
|
` : drizzleOrm.sql.empty();
|
|
1508
2785
|
return drizzleOrm.sql`
|
|
1509
2786
|
SELECT
|
|
1510
|
-
${
|
|
1511
|
-
${
|
|
1512
|
-
${
|
|
1513
|
-
${
|
|
1514
|
-
${
|
|
1515
|
-
${
|
|
1516
|
-
FROM ${
|
|
1517
|
-
WHERE ${qualified2(relation,
|
|
1518
|
-
AND ${qualified2(relation,
|
|
1519
|
-
AND ${qualified2(relation,
|
|
2787
|
+
${quotedColumn(edges3.id)} as edge_id,
|
|
2788
|
+
${quotedColumn(edges3.kind)} as edge_kind,
|
|
2789
|
+
${quotedColumn(edges3.fromKind)} as from_kind,
|
|
2790
|
+
${quotedColumn(edges3.fromId)} as from_id,
|
|
2791
|
+
${quotedColumn(edges3.toKind)} as to_kind,
|
|
2792
|
+
${quotedColumn(edges3.toId)} as to_id
|
|
2793
|
+
FROM ${edges3}
|
|
2794
|
+
WHERE ${qualified2(relation, edges3.graphId)} = ${graphId}
|
|
2795
|
+
AND ${qualified2(relation, edges3.kind)} IN (${inList(edgeKinds)})
|
|
2796
|
+
AND ${qualified2(relation, edges3.deletedAt)} IS NULL${activeOnly}
|
|
1520
2797
|
AND EXISTS (
|
|
1521
|
-
SELECT 1 FROM ${
|
|
1522
|
-
WHERE ${qualified2(PEER,
|
|
1523
|
-
AND ${qualified2(PEER,
|
|
1524
|
-
AND ${qualified2(PEER,
|
|
1525
|
-
AND ${qualified2(PEER,
|
|
1526
|
-
AND ${qualified2(PEER,
|
|
1527
|
-
AND ${qualified2(PEER,
|
|
2798
|
+
SELECT 1 FROM ${edges3} AS ${drizzleOrm.sql.raw(`"${PEER}"`)}
|
|
2799
|
+
WHERE ${qualified2(PEER, edges3.graphId)} = ${qualified2(relation, edges3.graphId)}
|
|
2800
|
+
AND ${qualified2(PEER, edges3.kind)} = ${qualified2(relation, edges3.kind)}
|
|
2801
|
+
AND ${qualified2(PEER, edges3.fromKind)} = ${qualified2(relation, edges3.fromKind)}
|
|
2802
|
+
AND ${qualified2(PEER, edges3.fromId)} = ${qualified2(relation, edges3.fromId)}${peerToEndpoints}
|
|
2803
|
+
AND ${qualified2(PEER, edges3.deletedAt)} IS NULL${peerActiveOnly}
|
|
2804
|
+
AND ${qualified2(PEER, edges3.id)} <> ${qualified2(relation, edges3.id)}
|
|
1528
2805
|
)
|
|
1529
2806
|
`;
|
|
1530
2807
|
}
|
|
1531
|
-
function buildDisjointOverlapAudit(
|
|
1532
|
-
const { nodes } =
|
|
1533
|
-
const relation = drizzleOrm.getTableName(
|
|
2808
|
+
function buildDisjointOverlapAudit(tables3, graphId, kinds) {
|
|
2809
|
+
const { nodes: nodes3 } = tables3;
|
|
2810
|
+
const relation = drizzleOrm.getTableName(nodes3);
|
|
1534
2811
|
const liveIdsOfKind = (kind) => drizzleOrm.sql`
|
|
1535
|
-
SELECT ${
|
|
1536
|
-
FROM ${
|
|
1537
|
-
WHERE ${qualified2(relation,
|
|
1538
|
-
AND ${qualified2(relation,
|
|
1539
|
-
AND ${qualified2(relation,
|
|
2812
|
+
SELECT ${quotedColumn(nodes3.id)} as node_id
|
|
2813
|
+
FROM ${nodes3}
|
|
2814
|
+
WHERE ${qualified2(relation, nodes3.graphId)} = ${graphId}
|
|
2815
|
+
AND ${qualified2(relation, nodes3.kind)} = ${kind}
|
|
2816
|
+
AND ${qualified2(relation, nodes3.deletedAt)} IS NULL
|
|
1540
2817
|
`;
|
|
1541
2818
|
return drizzleOrm.sql`${liveIdsOfKind(kinds[0])} INTERSECT ${liveIdsOfKind(kinds[1])}`;
|
|
1542
2819
|
}
|
|
1543
|
-
function
|
|
1544
|
-
|
|
2820
|
+
function qualified3(tableName, column) {
|
|
2821
|
+
return drizzleOrm.sql.raw(`"${tableName}"."${column.name}"`);
|
|
2822
|
+
}
|
|
2823
|
+
function buildLockEdgeClaims(tables3, entries, timestamp2) {
|
|
2824
|
+
const { edgeClaims: edgeClaims3 } = tables3;
|
|
2825
|
+
const claimsName = drizzleOrm.getTableName(edgeClaims3);
|
|
2826
|
+
const columns = drizzleOrm.sql.raw(
|
|
2827
|
+
`"${edgeClaims3.graphId.name}", "${edgeClaims3.axis.name}", "${edgeClaims3.key.name}", "${edgeClaims3.edgeId.name}", "${edgeClaims3.updatedAt.name}"`
|
|
2828
|
+
);
|
|
2829
|
+
const conflictColumns = drizzleOrm.sql.raw(
|
|
2830
|
+
`"${edgeClaims3.graphId.name}", "${edgeClaims3.axis.name}", "${edgeClaims3.key.name}"`
|
|
2831
|
+
);
|
|
2832
|
+
const valueRows = drizzleOrm.sql.join(
|
|
2833
|
+
entries.map((entry) => {
|
|
2834
|
+
const target = chunkFMMW3KX7_cjs.edgeCardinalityClaimTarget(entry);
|
|
2835
|
+
return drizzleOrm.sql`(${entry.graphId}, ${target.axis}, ${target.key}, ${entry.edgeId}, ${timestamp2})`;
|
|
2836
|
+
}),
|
|
2837
|
+
drizzleOrm.sql`, `
|
|
2838
|
+
);
|
|
2839
|
+
return drizzleOrm.sql`
|
|
2840
|
+
INSERT INTO ${edgeClaims3} (${columns})
|
|
2841
|
+
VALUES ${valueRows}
|
|
2842
|
+
ON CONFLICT (${conflictColumns})
|
|
2843
|
+
DO UPDATE SET ${quotedColumn(edgeClaims3.updatedAt)} = ${qualified3(claimsName, edgeClaims3.updatedAt)}
|
|
2844
|
+
RETURNING
|
|
2845
|
+
${quotedColumn(edgeClaims3.axis)} as axis,
|
|
2846
|
+
${quotedColumn(edgeClaims3.key)} as key,
|
|
2847
|
+
${quotedColumn(edgeClaims3.edgeId)} as holder_edge_id
|
|
2848
|
+
`;
|
|
2849
|
+
}
|
|
2850
|
+
function buildTakeOverEdgeClaim(tables3, params, timestamp2) {
|
|
2851
|
+
const { edgeClaims: edgeClaims3, edges: edges3 } = tables3;
|
|
2852
|
+
const claimsName = drizzleOrm.getTableName(edgeClaims3);
|
|
2853
|
+
const edgesName = drizzleOrm.getTableName(edges3);
|
|
2854
|
+
const spec = chunkFMMW3KX7_cjs.EDGE_CARDINALITY_SPECS[params.cardinality];
|
|
2855
|
+
const target = chunkFMMW3KX7_cjs.edgeCardinalityClaimTarget(params);
|
|
2856
|
+
const toEndpointTerms = spec.keyShape === "fromAndTo" ? drizzleOrm.sql` AND ${qualified3(edgesName, edges3.toKind)} = ${params.toKind} AND ${qualified3(edgesName, edges3.toId)} = ${params.toId}` : drizzleOrm.sql``;
|
|
2857
|
+
const activeTerm = spec.holderLiveness === "liveAndActive" ? drizzleOrm.sql` AND ${qualified3(edgesName, edges3.validTo)} IS NULL` : drizzleOrm.sql``;
|
|
2858
|
+
return drizzleOrm.sql`
|
|
2859
|
+
UPDATE ${edgeClaims3}
|
|
2860
|
+
SET ${quotedColumn(edgeClaims3.edgeId)} = ${params.edgeId},
|
|
2861
|
+
${quotedColumn(edgeClaims3.updatedAt)} = ${timestamp2}
|
|
2862
|
+
WHERE ${qualified3(claimsName, edgeClaims3.graphId)} = ${params.graphId}
|
|
2863
|
+
AND ${qualified3(claimsName, edgeClaims3.axis)} = ${target.axis}
|
|
2864
|
+
AND ${qualified3(claimsName, edgeClaims3.key)} = ${target.key}
|
|
2865
|
+
AND ${qualified3(claimsName, edgeClaims3.edgeId)} <> ${params.edgeId}
|
|
2866
|
+
AND NOT EXISTS (
|
|
2867
|
+
SELECT 1 FROM ${edges3}
|
|
2868
|
+
WHERE ${qualified3(edgesName, edges3.graphId)} = ${qualified3(claimsName, edgeClaims3.graphId)}
|
|
2869
|
+
AND ${qualified3(edgesName, edges3.id)} = ${qualified3(claimsName, edgeClaims3.edgeId)}
|
|
2870
|
+
AND ${qualified3(edgesName, edges3.deletedAt)} IS NULL
|
|
2871
|
+
AND ${qualified3(edgesName, edges3.kind)} = ${params.edgeKind}
|
|
2872
|
+
AND ${qualified3(edgesName, edges3.fromKind)} = ${params.fromKind}
|
|
2873
|
+
AND ${qualified3(edgesName, edges3.fromId)} = ${params.fromId}${toEndpointTerms}${activeTerm}
|
|
2874
|
+
)
|
|
2875
|
+
RETURNING ${quotedColumn(edgeClaims3.edgeId)} as holder_edge_id
|
|
2876
|
+
`;
|
|
2877
|
+
}
|
|
2878
|
+
function buildPurgeEdgeClaims(tables3, params) {
|
|
2879
|
+
const { edgeClaims: edgeClaims3 } = tables3;
|
|
2880
|
+
return drizzleOrm.sql`
|
|
2881
|
+
DELETE FROM ${edgeClaims3}
|
|
2882
|
+
WHERE ${edgeClaims3.graphId} = ${params.graphId}
|
|
2883
|
+
AND ${edgeClaims3.edgeId} IN (${drizzleOrm.sql.join(
|
|
2884
|
+
params.edgeIds.map((edgeId) => drizzleOrm.sql`${edgeId}`),
|
|
2885
|
+
drizzleOrm.sql`, `
|
|
2886
|
+
)})
|
|
2887
|
+
`;
|
|
2888
|
+
}
|
|
2889
|
+
function buildInsertEdge(tables3, params, timestamp2) {
|
|
2890
|
+
const { edges: edges3 } = tables3;
|
|
1545
2891
|
const propsJson = JSON.stringify(params.props);
|
|
1546
|
-
const columns =
|
|
2892
|
+
const columns = edgeColumnList(edges3);
|
|
1547
2893
|
return drizzleOrm.sql`
|
|
1548
|
-
INSERT INTO ${
|
|
2894
|
+
INSERT INTO ${edges3} (${columns})
|
|
1549
2895
|
VALUES (
|
|
1550
2896
|
${params.graphId}, ${params.id}, ${params.kind},
|
|
1551
2897
|
${params.fromKind}, ${params.fromId}, ${params.toKind}, ${params.toId},
|
|
1552
|
-
${propsJson}, ${
|
|
1553
|
-
${
|
|
2898
|
+
${propsJson}, ${sqlNull(chunkM5MSP3BI_cjs.resolveStampedValidityLowerBound(params.validFrom, params.validTo, timestamp2))}, ${sqlNull(params.validTo)},
|
|
2899
|
+
${timestamp2}, ${timestamp2}
|
|
1554
2900
|
)
|
|
1555
2901
|
RETURNING *
|
|
1556
2902
|
`;
|
|
1557
2903
|
}
|
|
1558
|
-
function buildInsertEdgeNoReturn(
|
|
1559
|
-
const { edges } =
|
|
2904
|
+
function buildInsertEdgeNoReturn(tables3, params, timestamp2) {
|
|
2905
|
+
const { edges: edges3 } = tables3;
|
|
1560
2906
|
const propsJson = JSON.stringify(params.props);
|
|
1561
|
-
const columns =
|
|
2907
|
+
const columns = edgeColumnList(edges3);
|
|
1562
2908
|
return drizzleOrm.sql`
|
|
1563
|
-
INSERT INTO ${
|
|
2909
|
+
INSERT INTO ${edges3} (${columns})
|
|
1564
2910
|
VALUES (
|
|
1565
2911
|
${params.graphId}, ${params.id}, ${params.kind},
|
|
1566
2912
|
${params.fromKind}, ${params.fromId}, ${params.toKind}, ${params.toId},
|
|
1567
|
-
${propsJson}, ${
|
|
1568
|
-
${
|
|
2913
|
+
${propsJson}, ${sqlNull(chunkM5MSP3BI_cjs.resolveStampedValidityLowerBound(params.validFrom, params.validTo, timestamp2))}, ${sqlNull(params.validTo)},
|
|
2914
|
+
${timestamp2}, ${timestamp2}
|
|
1569
2915
|
)
|
|
1570
2916
|
`;
|
|
1571
2917
|
}
|
|
1572
|
-
function buildInsertEdgesBatch(
|
|
1573
|
-
const { edges } =
|
|
1574
|
-
const columns =
|
|
2918
|
+
function buildInsertEdgesBatch(tables3, params, timestamp2) {
|
|
2919
|
+
const { edges: edges3 } = tables3;
|
|
2920
|
+
const columns = edgeColumnList(edges3);
|
|
1575
2921
|
const values = params.map((edgeParams) => {
|
|
1576
2922
|
const propsJson = JSON.stringify(edgeParams.props);
|
|
1577
|
-
return drizzleOrm.sql`(${edgeParams.graphId}, ${edgeParams.id}, ${edgeParams.kind}, ${edgeParams.fromKind}, ${edgeParams.fromId}, ${edgeParams.toKind}, ${edgeParams.toId}, ${propsJson}, ${
|
|
2923
|
+
return drizzleOrm.sql`(${edgeParams.graphId}, ${edgeParams.id}, ${edgeParams.kind}, ${edgeParams.fromKind}, ${edgeParams.fromId}, ${edgeParams.toKind}, ${edgeParams.toId}, ${propsJson}, ${sqlNull(chunkM5MSP3BI_cjs.resolveStampedValidityLowerBound(edgeParams.validFrom, edgeParams.validTo, timestamp2))}, ${sqlNull(edgeParams.validTo)}, ${timestamp2}, ${timestamp2})`;
|
|
1578
2924
|
});
|
|
1579
2925
|
return drizzleOrm.sql`
|
|
1580
|
-
INSERT INTO ${
|
|
2926
|
+
INSERT INTO ${edges3} (${columns})
|
|
1581
2927
|
VALUES ${drizzleOrm.sql.join(values, drizzleOrm.sql`, `)}
|
|
1582
2928
|
`;
|
|
1583
2929
|
}
|
|
1584
|
-
function buildInsertEdgesBatchReturning(
|
|
1585
|
-
const { edges } =
|
|
1586
|
-
const columns =
|
|
2930
|
+
function buildInsertEdgesBatchReturning(tables3, params, timestamp2) {
|
|
2931
|
+
const { edges: edges3 } = tables3;
|
|
2932
|
+
const columns = edgeColumnList(edges3);
|
|
1587
2933
|
const values = params.map((edgeParams) => {
|
|
1588
2934
|
const propsJson = JSON.stringify(edgeParams.props);
|
|
1589
|
-
return drizzleOrm.sql`(${edgeParams.graphId}, ${edgeParams.id}, ${edgeParams.kind}, ${edgeParams.fromKind}, ${edgeParams.fromId}, ${edgeParams.toKind}, ${edgeParams.toId}, ${propsJson}, ${
|
|
2935
|
+
return drizzleOrm.sql`(${edgeParams.graphId}, ${edgeParams.id}, ${edgeParams.kind}, ${edgeParams.fromKind}, ${edgeParams.fromId}, ${edgeParams.toKind}, ${edgeParams.toId}, ${propsJson}, ${sqlNull(chunkM5MSP3BI_cjs.resolveStampedValidityLowerBound(edgeParams.validFrom, edgeParams.validTo, timestamp2))}, ${sqlNull(edgeParams.validTo)}, ${timestamp2}, ${timestamp2})`;
|
|
1590
2936
|
});
|
|
1591
2937
|
return drizzleOrm.sql`
|
|
1592
|
-
INSERT INTO ${
|
|
2938
|
+
INSERT INTO ${edges3} (${columns})
|
|
1593
2939
|
VALUES ${drizzleOrm.sql.join(values, drizzleOrm.sql`, `)}
|
|
1594
2940
|
RETURNING *
|
|
1595
2941
|
`;
|
|
1596
2942
|
}
|
|
1597
|
-
function buildGetEdge(
|
|
1598
|
-
const { edges } =
|
|
2943
|
+
function buildGetEdge(tables3, graphId, id) {
|
|
2944
|
+
const { edges: edges3 } = tables3;
|
|
1599
2945
|
return drizzleOrm.sql`
|
|
1600
|
-
SELECT * FROM ${
|
|
1601
|
-
WHERE ${
|
|
1602
|
-
AND ${
|
|
2946
|
+
SELECT * FROM ${edges3}
|
|
2947
|
+
WHERE ${edges3.graphId} = ${graphId}
|
|
2948
|
+
AND ${edges3.id} = ${id}
|
|
1603
2949
|
`;
|
|
1604
2950
|
}
|
|
1605
|
-
function buildGetEdges(
|
|
1606
|
-
const { edges } =
|
|
2951
|
+
function buildGetEdges(tables3, graphId, ids) {
|
|
2952
|
+
const { edges: edges3 } = tables3;
|
|
1607
2953
|
return drizzleOrm.sql`
|
|
1608
|
-
SELECT * FROM ${
|
|
1609
|
-
WHERE ${
|
|
1610
|
-
AND ${
|
|
2954
|
+
SELECT * FROM ${edges3}
|
|
2955
|
+
WHERE ${edges3.graphId} = ${graphId}
|
|
2956
|
+
AND ${edges3.id} IN (${drizzleOrm.sql.join(
|
|
1611
2957
|
ids.map((id) => drizzleOrm.sql`${id}`),
|
|
1612
2958
|
drizzleOrm.sql`, `
|
|
1613
2959
|
)})
|
|
1614
2960
|
`;
|
|
1615
2961
|
}
|
|
1616
|
-
function expectedIdentityPredicate(
|
|
1617
|
-
const { edges } =
|
|
2962
|
+
function expectedIdentityPredicate(tables3, expected) {
|
|
2963
|
+
const { edges: edges3 } = tables3;
|
|
1618
2964
|
const parts = [
|
|
1619
|
-
expected.kind === void 0 ? void 0 : drizzleOrm.sql` AND ${
|
|
1620
|
-
expected.fromKind === void 0 ? void 0 : drizzleOrm.sql` AND ${
|
|
1621
|
-
expected.fromId === void 0 ? void 0 : drizzleOrm.sql` AND ${
|
|
1622
|
-
expected.toKind === void 0 ? void 0 : drizzleOrm.sql` AND ${
|
|
1623
|
-
expected.toId === void 0 ? void 0 : drizzleOrm.sql` AND ${
|
|
2965
|
+
expected.kind === void 0 ? void 0 : drizzleOrm.sql` AND ${edges3.kind} = ${expected.kind}`,
|
|
2966
|
+
expected.fromKind === void 0 ? void 0 : drizzleOrm.sql` AND ${edges3.fromKind} = ${expected.fromKind}`,
|
|
2967
|
+
expected.fromId === void 0 ? void 0 : drizzleOrm.sql` AND ${edges3.fromId} = ${expected.fromId}`,
|
|
2968
|
+
expected.toKind === void 0 ? void 0 : drizzleOrm.sql` AND ${edges3.toKind} = ${expected.toKind}`,
|
|
2969
|
+
expected.toId === void 0 ? void 0 : drizzleOrm.sql` AND ${edges3.toId} = ${expected.toId}`
|
|
1624
2970
|
].filter((part) => part !== void 0);
|
|
1625
2971
|
return parts.length === 0 ? drizzleOrm.sql.empty() : drizzleOrm.sql.join(parts, drizzleOrm.sql``);
|
|
1626
2972
|
}
|
|
1627
|
-
function buildUpdateEdge(
|
|
1628
|
-
const { edges } =
|
|
2973
|
+
function buildUpdateEdge(tables3, params, timestamp2) {
|
|
2974
|
+
const { edges: edges3 } = tables3;
|
|
1629
2975
|
const propsJson = JSON.stringify(params.props);
|
|
1630
2976
|
const setParts = [
|
|
1631
|
-
drizzleOrm.sql`${
|
|
1632
|
-
drizzleOrm.sql`${
|
|
2977
|
+
drizzleOrm.sql`${quotedColumn(edges3.props)} = ${propsJson}`,
|
|
2978
|
+
drizzleOrm.sql`${quotedColumn(edges3.updatedAt)} = ${timestamp2}`
|
|
1633
2979
|
];
|
|
1634
2980
|
if (params.clearDeleted && params.validFrom !== void 0) {
|
|
1635
2981
|
setParts.push(
|
|
1636
|
-
drizzleOrm.sql`${
|
|
1637
|
-
drizzleOrm.sql`${
|
|
2982
|
+
drizzleOrm.sql`${quotedColumn(edges3.validFrom)} = ${sqlNull(chunkM5MSP3BI_cjs.resolveStatedValidityLowerBound(params.validFrom))}`,
|
|
2983
|
+
drizzleOrm.sql`${quotedColumn(edges3.validTo)} = ${sqlNull(params.validTo)}`
|
|
1638
2984
|
);
|
|
1639
2985
|
} else if (params.clearValidTo === true) {
|
|
1640
|
-
setParts.push(drizzleOrm.sql`${
|
|
2986
|
+
setParts.push(drizzleOrm.sql`${quotedColumn(edges3.validTo)} = NULL`);
|
|
1641
2987
|
} else if (params.validTo !== void 0) {
|
|
1642
|
-
setParts.push(drizzleOrm.sql`${
|
|
2988
|
+
setParts.push(drizzleOrm.sql`${quotedColumn(edges3.validTo)} = ${params.validTo}`);
|
|
1643
2989
|
}
|
|
1644
2990
|
if (params.clearDeleted) {
|
|
1645
|
-
setParts.push(drizzleOrm.sql`${
|
|
2991
|
+
setParts.push(drizzleOrm.sql`${quotedColumn(edges3.deletedAt)} = NULL`);
|
|
1646
2992
|
}
|
|
1647
2993
|
const setClause = drizzleOrm.sql.join(setParts, drizzleOrm.sql`, `);
|
|
1648
|
-
const expectedIdentity = expectedIdentityPredicate(
|
|
1649
|
-
const expectedValidFrom =
|
|
1650
|
-
|
|
2994
|
+
const expectedIdentity = expectedIdentityPredicate(tables3, params);
|
|
2995
|
+
const expectedValidFrom = expectedValidFromPredicate(
|
|
2996
|
+
edges3.validFrom,
|
|
1651
2997
|
params.expectedValidFrom
|
|
1652
2998
|
);
|
|
1653
|
-
const expectedValidTo =
|
|
1654
|
-
|
|
2999
|
+
const expectedValidTo = expectedValidFromPredicate(
|
|
3000
|
+
edges3.validTo,
|
|
1655
3001
|
params.expectedValidTo
|
|
1656
3002
|
);
|
|
1657
3003
|
if (params.clearDeleted) {
|
|
1658
3004
|
return drizzleOrm.sql`
|
|
1659
|
-
UPDATE ${
|
|
3005
|
+
UPDATE ${edges3}
|
|
1660
3006
|
SET ${setClause}
|
|
1661
|
-
WHERE ${
|
|
1662
|
-
AND ${
|
|
3007
|
+
WHERE ${edges3.graphId} = ${params.graphId}
|
|
3008
|
+
AND ${edges3.id} = ${params.id}${expectedIdentity}${expectedValidFrom}${expectedValidTo}
|
|
1663
3009
|
RETURNING *
|
|
1664
3010
|
`;
|
|
1665
3011
|
}
|
|
1666
3012
|
return drizzleOrm.sql`
|
|
1667
|
-
UPDATE ${
|
|
3013
|
+
UPDATE ${edges3}
|
|
1668
3014
|
SET ${setClause}
|
|
1669
|
-
WHERE ${
|
|
1670
|
-
AND ${
|
|
1671
|
-
AND ${
|
|
3015
|
+
WHERE ${edges3.graphId} = ${params.graphId}
|
|
3016
|
+
AND ${edges3.id} = ${params.id}${expectedIdentity}${expectedValidFrom}${expectedValidTo}
|
|
3017
|
+
AND ${edges3.deletedAt} IS NULL
|
|
1672
3018
|
RETURNING *
|
|
1673
3019
|
`;
|
|
1674
3020
|
}
|
|
1675
|
-
function buildDeleteEdge(
|
|
1676
|
-
const { edges } =
|
|
3021
|
+
function buildDeleteEdge(tables3, params, timestamp2) {
|
|
3022
|
+
const { edges: edges3 } = tables3;
|
|
1677
3023
|
return drizzleOrm.sql`
|
|
1678
|
-
UPDATE ${
|
|
1679
|
-
SET ${
|
|
1680
|
-
WHERE ${
|
|
1681
|
-
AND ${
|
|
1682
|
-
AND ${
|
|
3024
|
+
UPDATE ${edges3}
|
|
3025
|
+
SET ${quotedColumn(edges3.deletedAt)} = ${timestamp2}
|
|
3026
|
+
WHERE ${edges3.graphId} = ${params.graphId}
|
|
3027
|
+
AND ${edges3.id} = ${params.id}${expectedIdentityPredicate(tables3, params.kind === void 0 ? {} : { kind: params.kind })}
|
|
3028
|
+
AND ${edges3.deletedAt} IS NULL
|
|
1683
3029
|
`;
|
|
1684
3030
|
}
|
|
1685
|
-
function buildDeleteEdgesBatch(
|
|
1686
|
-
const { edges } =
|
|
3031
|
+
function buildDeleteEdgesBatch(tables3, params, timestamp2) {
|
|
3032
|
+
const { edges: edges3 } = tables3;
|
|
1687
3033
|
return drizzleOrm.sql`
|
|
1688
|
-
UPDATE ${
|
|
1689
|
-
SET ${
|
|
1690
|
-
WHERE ${
|
|
1691
|
-
AND ${
|
|
3034
|
+
UPDATE ${edges3}
|
|
3035
|
+
SET ${quotedColumn(edges3.deletedAt)} = ${timestamp2}
|
|
3036
|
+
WHERE ${edges3.graphId} = ${params.graphId}
|
|
3037
|
+
AND ${edges3.id} IN (${drizzleOrm.sql.join(
|
|
1692
3038
|
params.ids.map((id) => drizzleOrm.sql`${id}`),
|
|
1693
3039
|
drizzleOrm.sql`, `
|
|
1694
3040
|
)})
|
|
1695
|
-
AND ${
|
|
3041
|
+
AND ${edges3.deletedAt} IS NULL
|
|
1696
3042
|
`;
|
|
1697
3043
|
}
|
|
1698
|
-
function buildHardDeleteEdgesBatch(
|
|
1699
|
-
const { edges } =
|
|
3044
|
+
function buildHardDeleteEdgesBatch(tables3, params) {
|
|
3045
|
+
const { edges: edges3 } = tables3;
|
|
1700
3046
|
return drizzleOrm.sql`
|
|
1701
|
-
DELETE FROM ${
|
|
1702
|
-
WHERE ${
|
|
1703
|
-
AND ${
|
|
3047
|
+
DELETE FROM ${edges3}
|
|
3048
|
+
WHERE ${edges3.graphId} = ${params.graphId}
|
|
3049
|
+
AND ${edges3.id} IN (${drizzleOrm.sql.join(
|
|
1704
3050
|
params.ids.map((id) => drizzleOrm.sql`${id}`),
|
|
1705
3051
|
drizzleOrm.sql`, `
|
|
1706
3052
|
)})
|
|
1707
3053
|
`;
|
|
1708
3054
|
}
|
|
1709
|
-
function buildHardDeleteEdge(
|
|
1710
|
-
const { edges } =
|
|
3055
|
+
function buildHardDeleteEdge(tables3, params) {
|
|
3056
|
+
const { edges: edges3 } = tables3;
|
|
1711
3057
|
return drizzleOrm.sql`
|
|
1712
|
-
DELETE FROM ${
|
|
1713
|
-
WHERE ${
|
|
1714
|
-
AND ${
|
|
3058
|
+
DELETE FROM ${edges3}
|
|
3059
|
+
WHERE ${edges3.graphId} = ${params.graphId}
|
|
3060
|
+
AND ${edges3.id} = ${params.id}${expectedIdentityPredicate(tables3, params.kind === void 0 ? {} : { kind: params.kind })}
|
|
1715
3061
|
`;
|
|
1716
3062
|
}
|
|
1717
|
-
function buildHardDeleteEdgesByNode(
|
|
1718
|
-
const { edges } =
|
|
3063
|
+
function buildHardDeleteEdgesByNode(tables3, graphId, nodeKind, nodeId) {
|
|
3064
|
+
const { edges: edges3 } = tables3;
|
|
1719
3065
|
return drizzleOrm.sql`
|
|
1720
|
-
DELETE FROM ${
|
|
1721
|
-
WHERE ${
|
|
3066
|
+
DELETE FROM ${edges3}
|
|
3067
|
+
WHERE ${edges3.graphId} = ${graphId}
|
|
1722
3068
|
AND (
|
|
1723
|
-
(${
|
|
1724
|
-
OR (${
|
|
3069
|
+
(${edges3.fromKind} = ${nodeKind} AND ${edges3.fromId} = ${nodeId})
|
|
3070
|
+
OR (${edges3.toKind} = ${nodeKind} AND ${edges3.toId} = ${nodeId})
|
|
1725
3071
|
)
|
|
1726
3072
|
`;
|
|
1727
3073
|
}
|
|
1728
|
-
function buildCountEdgesFrom(
|
|
1729
|
-
const { edges } =
|
|
3074
|
+
function buildCountEdgesFrom(tables3, params) {
|
|
3075
|
+
const { edges: edges3 } = tables3;
|
|
1730
3076
|
if (params.activeOnly) {
|
|
1731
3077
|
return drizzleOrm.sql`
|
|
1732
|
-
SELECT COUNT(*) as count FROM ${
|
|
1733
|
-
WHERE ${
|
|
1734
|
-
AND ${
|
|
1735
|
-
AND ${
|
|
1736
|
-
AND ${
|
|
1737
|
-
AND ${
|
|
1738
|
-
AND ${
|
|
3078
|
+
SELECT COUNT(*) as count FROM ${edges3}
|
|
3079
|
+
WHERE ${edges3.graphId} = ${params.graphId}
|
|
3080
|
+
AND ${edges3.kind} = ${params.edgeKind}
|
|
3081
|
+
AND ${edges3.fromKind} = ${params.fromKind}
|
|
3082
|
+
AND ${edges3.fromId} = ${params.fromId}
|
|
3083
|
+
AND ${edges3.deletedAt} IS NULL
|
|
3084
|
+
AND ${edges3.validTo} IS NULL
|
|
1739
3085
|
`;
|
|
1740
3086
|
}
|
|
1741
3087
|
return drizzleOrm.sql`
|
|
1742
|
-
SELECT COUNT(*) as count FROM ${
|
|
1743
|
-
WHERE ${
|
|
1744
|
-
AND ${
|
|
1745
|
-
AND ${
|
|
1746
|
-
AND ${
|
|
1747
|
-
AND ${
|
|
3088
|
+
SELECT COUNT(*) as count FROM ${edges3}
|
|
3089
|
+
WHERE ${edges3.graphId} = ${params.graphId}
|
|
3090
|
+
AND ${edges3.kind} = ${params.edgeKind}
|
|
3091
|
+
AND ${edges3.fromKind} = ${params.fromKind}
|
|
3092
|
+
AND ${edges3.fromId} = ${params.fromId}
|
|
3093
|
+
AND ${edges3.deletedAt} IS NULL
|
|
1748
3094
|
`;
|
|
1749
3095
|
}
|
|
1750
|
-
function buildEdgeExistsBetween(
|
|
1751
|
-
const { edges } =
|
|
3096
|
+
function buildEdgeExistsBetween(tables3, params) {
|
|
3097
|
+
const { edges: edges3 } = tables3;
|
|
1752
3098
|
return drizzleOrm.sql`
|
|
1753
|
-
SELECT 1 FROM ${
|
|
1754
|
-
WHERE ${
|
|
1755
|
-
AND ${
|
|
1756
|
-
AND ${
|
|
1757
|
-
AND ${
|
|
1758
|
-
AND ${
|
|
1759
|
-
AND ${
|
|
1760
|
-
AND ${
|
|
3099
|
+
SELECT 1 FROM ${edges3}
|
|
3100
|
+
WHERE ${edges3.graphId} = ${params.graphId}
|
|
3101
|
+
AND ${edges3.kind} = ${params.edgeKind}
|
|
3102
|
+
AND ${edges3.fromKind} = ${params.fromKind}
|
|
3103
|
+
AND ${edges3.fromId} = ${params.fromId}
|
|
3104
|
+
AND ${edges3.toKind} = ${params.toKind}
|
|
3105
|
+
AND ${edges3.toId} = ${params.toId}
|
|
3106
|
+
AND ${edges3.deletedAt} IS NULL
|
|
1761
3107
|
LIMIT 1
|
|
1762
3108
|
`;
|
|
1763
3109
|
}
|
|
1764
|
-
function buildFindEdgesConnectedTo(
|
|
1765
|
-
const { edges } =
|
|
3110
|
+
function buildFindEdgesConnectedTo(tables3, params) {
|
|
3111
|
+
const { edges: edges3 } = tables3;
|
|
1766
3112
|
return drizzleOrm.sql`
|
|
1767
|
-
SELECT * FROM ${
|
|
1768
|
-
WHERE ${
|
|
1769
|
-
AND ${
|
|
1770
|
-
AND ${
|
|
1771
|
-
AND ${
|
|
3113
|
+
SELECT * FROM ${edges3}
|
|
3114
|
+
WHERE ${edges3.graphId} = ${params.graphId}
|
|
3115
|
+
AND ${edges3.deletedAt} IS NULL
|
|
3116
|
+
AND ${edges3.fromKind} = ${params.nodeKind}
|
|
3117
|
+
AND ${edges3.fromId} = ${params.nodeId}
|
|
1772
3118
|
UNION ALL
|
|
1773
|
-
SELECT * FROM ${
|
|
1774
|
-
WHERE ${
|
|
1775
|
-
AND ${
|
|
1776
|
-
AND ${
|
|
1777
|
-
AND ${
|
|
3119
|
+
SELECT * FROM ${edges3}
|
|
3120
|
+
WHERE ${edges3.graphId} = ${params.graphId}
|
|
3121
|
+
AND ${edges3.deletedAt} IS NULL
|
|
3122
|
+
AND ${edges3.toKind} = ${params.nodeKind}
|
|
3123
|
+
AND ${edges3.toId} = ${params.nodeId}
|
|
1778
3124
|
AND NOT (
|
|
1779
|
-
${
|
|
1780
|
-
AND ${
|
|
3125
|
+
${edges3.fromKind} = ${params.nodeKind}
|
|
3126
|
+
AND ${edges3.fromId} = ${params.nodeId}
|
|
1781
3127
|
)
|
|
1782
3128
|
`;
|
|
1783
3129
|
}
|
|
@@ -1787,12 +3133,12 @@ function resolveMode(mode) {
|
|
|
1787
3133
|
function buildFulltextSearch(tableName, params, strategy, dialect, candidates) {
|
|
1788
3134
|
assertValidSearchParams(params);
|
|
1789
3135
|
const mode = resolveMode(params.mode);
|
|
1790
|
-
const table =
|
|
1791
|
-
const matchCondition =
|
|
3136
|
+
const table = quotedTableName(tableName);
|
|
3137
|
+
const matchCondition = chunkLLFPQOBA_cjs.toDrizzleSql(
|
|
1792
3138
|
strategy.matchCondition(tableName, params.query, mode, params.language),
|
|
1793
3139
|
dialect
|
|
1794
3140
|
);
|
|
1795
|
-
const rankExpression =
|
|
3141
|
+
const rankExpression = chunkLLFPQOBA_cjs.toDrizzleSql(
|
|
1796
3142
|
strategy.rankExpression(tableName, params.query, mode, params.language),
|
|
1797
3143
|
dialect
|
|
1798
3144
|
);
|
|
@@ -1805,10 +3151,10 @@ function buildFulltextSearch(tableName, params, strategy, dialect, candidates) {
|
|
|
1805
3151
|
conditions.push(drizzleOrm.sql`${rankExpression} >= ${params.minScore}`);
|
|
1806
3152
|
}
|
|
1807
3153
|
if (candidates !== void 0) {
|
|
1808
|
-
const candidateSql =
|
|
3154
|
+
const candidateSql = chunkH5IJSROF_cjs.isSqlFragment(candidates) ? chunkLLFPQOBA_cjs.toDrizzleSql(candidates, dialect) : candidates;
|
|
1809
3155
|
conditions.push(drizzleOrm.sql`"node_id" IN (${candidateSql})`);
|
|
1810
3156
|
}
|
|
1811
|
-
const snippetExpr = params.includeSnippets === true && strategy.supportsSnippets ?
|
|
3157
|
+
const snippetExpr = params.includeSnippets === true && strategy.supportsSnippets ? chunkLLFPQOBA_cjs.toDrizzleSql(
|
|
1812
3158
|
strategy.snippetExpression(
|
|
1813
3159
|
tableName,
|
|
1814
3160
|
params.query,
|
|
@@ -1825,7 +3171,7 @@ function buildFulltextSearch(tableName, params, strategy, dialect, candidates) {
|
|
|
1825
3171
|
${snippetExpr} AS snippet
|
|
1826
3172
|
FROM ${table}
|
|
1827
3173
|
WHERE ${drizzleOrm.sql.join(conditions, drizzleOrm.sql` AND `)}
|
|
1828
|
-
ORDER BY ${rankExpression} DESC, ${
|
|
3174
|
+
ORDER BY ${rankExpression} DESC, ${codePointOrderKey(drizzleOrm.sql.raw('"node_id"'), dialect)} ASC
|
|
1829
3175
|
${pageClause}
|
|
1830
3176
|
`;
|
|
1831
3177
|
}
|
|
@@ -1839,179 +3185,179 @@ function assertValidSearchParams(params) {
|
|
|
1839
3185
|
);
|
|
1840
3186
|
}
|
|
1841
3187
|
}
|
|
1842
|
-
function buildInsertNode(
|
|
1843
|
-
const { nodes } =
|
|
3188
|
+
function buildInsertNode(tables3, params, timestamp2) {
|
|
3189
|
+
const { nodes: nodes3 } = tables3;
|
|
1844
3190
|
const propsJson = JSON.stringify(params.props);
|
|
1845
|
-
const columns =
|
|
3191
|
+
const columns = nodeColumnList(nodes3);
|
|
1846
3192
|
return drizzleOrm.sql`
|
|
1847
|
-
INSERT INTO ${
|
|
3193
|
+
INSERT INTO ${nodes3} (${columns})
|
|
1848
3194
|
VALUES (
|
|
1849
3195
|
${params.graphId}, ${params.kind}, ${params.id}, ${propsJson},
|
|
1850
|
-
1, ${
|
|
1851
|
-
${
|
|
3196
|
+
1, ${sqlNull(chunkM5MSP3BI_cjs.resolveStampedValidityLowerBound(params.validFrom, params.validTo, timestamp2))}, ${sqlNull(params.validTo)},
|
|
3197
|
+
${timestamp2}, ${timestamp2}
|
|
1852
3198
|
)
|
|
1853
3199
|
RETURNING *
|
|
1854
3200
|
`;
|
|
1855
3201
|
}
|
|
1856
|
-
function buildInsertNodeNoReturn(
|
|
1857
|
-
const { nodes } =
|
|
3202
|
+
function buildInsertNodeNoReturn(tables3, params, timestamp2) {
|
|
3203
|
+
const { nodes: nodes3 } = tables3;
|
|
1858
3204
|
const propsJson = JSON.stringify(params.props);
|
|
1859
|
-
const columns =
|
|
3205
|
+
const columns = nodeColumnList(nodes3);
|
|
1860
3206
|
return drizzleOrm.sql`
|
|
1861
|
-
INSERT INTO ${
|
|
3207
|
+
INSERT INTO ${nodes3} (${columns})
|
|
1862
3208
|
VALUES (
|
|
1863
3209
|
${params.graphId}, ${params.kind}, ${params.id}, ${propsJson},
|
|
1864
|
-
1, ${
|
|
1865
|
-
${
|
|
3210
|
+
1, ${sqlNull(chunkM5MSP3BI_cjs.resolveStampedValidityLowerBound(params.validFrom, params.validTo, timestamp2))}, ${sqlNull(params.validTo)},
|
|
3211
|
+
${timestamp2}, ${timestamp2}
|
|
1866
3212
|
)
|
|
1867
3213
|
`;
|
|
1868
3214
|
}
|
|
1869
|
-
function buildInsertNodesBatch(
|
|
1870
|
-
const { nodes } =
|
|
1871
|
-
const columns =
|
|
3215
|
+
function buildInsertNodesBatch(tables3, params, timestamp2) {
|
|
3216
|
+
const { nodes: nodes3 } = tables3;
|
|
3217
|
+
const columns = nodeColumnList(nodes3);
|
|
1872
3218
|
const values = params.map((nodeParams) => {
|
|
1873
3219
|
const propsJson = JSON.stringify(nodeParams.props);
|
|
1874
|
-
return drizzleOrm.sql`(${nodeParams.graphId}, ${nodeParams.kind}, ${nodeParams.id}, ${propsJson}, 1, ${
|
|
3220
|
+
return drizzleOrm.sql`(${nodeParams.graphId}, ${nodeParams.kind}, ${nodeParams.id}, ${propsJson}, 1, ${sqlNull(chunkM5MSP3BI_cjs.resolveStampedValidityLowerBound(nodeParams.validFrom, nodeParams.validTo, timestamp2))}, ${sqlNull(nodeParams.validTo)}, ${timestamp2}, ${timestamp2})`;
|
|
1875
3221
|
});
|
|
1876
3222
|
return drizzleOrm.sql`
|
|
1877
|
-
INSERT INTO ${
|
|
3223
|
+
INSERT INTO ${nodes3} (${columns})
|
|
1878
3224
|
VALUES ${drizzleOrm.sql.join(values, drizzleOrm.sql`, `)}
|
|
1879
3225
|
`;
|
|
1880
3226
|
}
|
|
1881
|
-
function buildInsertNodesBatchReturning(
|
|
1882
|
-
const { nodes } =
|
|
1883
|
-
const columns =
|
|
3227
|
+
function buildInsertNodesBatchReturning(tables3, params, timestamp2) {
|
|
3228
|
+
const { nodes: nodes3 } = tables3;
|
|
3229
|
+
const columns = nodeColumnList(nodes3);
|
|
1884
3230
|
const values = params.map((nodeParams) => {
|
|
1885
3231
|
const propsJson = JSON.stringify(nodeParams.props);
|
|
1886
|
-
return drizzleOrm.sql`(${nodeParams.graphId}, ${nodeParams.kind}, ${nodeParams.id}, ${propsJson}, 1, ${
|
|
3232
|
+
return drizzleOrm.sql`(${nodeParams.graphId}, ${nodeParams.kind}, ${nodeParams.id}, ${propsJson}, 1, ${sqlNull(chunkM5MSP3BI_cjs.resolveStampedValidityLowerBound(nodeParams.validFrom, nodeParams.validTo, timestamp2))}, ${sqlNull(nodeParams.validTo)}, ${timestamp2}, ${timestamp2})`;
|
|
1887
3233
|
});
|
|
1888
3234
|
return drizzleOrm.sql`
|
|
1889
|
-
INSERT INTO ${
|
|
3235
|
+
INSERT INTO ${nodes3} (${columns})
|
|
1890
3236
|
VALUES ${drizzleOrm.sql.join(values, drizzleOrm.sql`, `)}
|
|
1891
3237
|
RETURNING *
|
|
1892
3238
|
`;
|
|
1893
3239
|
}
|
|
1894
|
-
function buildGetNode(
|
|
1895
|
-
const { nodes } =
|
|
3240
|
+
function buildGetNode(tables3, graphId, kind, id) {
|
|
3241
|
+
const { nodes: nodes3 } = tables3;
|
|
1896
3242
|
return drizzleOrm.sql`
|
|
1897
|
-
SELECT * FROM ${
|
|
1898
|
-
WHERE ${
|
|
1899
|
-
AND ${
|
|
1900
|
-
AND ${
|
|
3243
|
+
SELECT * FROM ${nodes3}
|
|
3244
|
+
WHERE ${nodes3.graphId} = ${graphId}
|
|
3245
|
+
AND ${nodes3.kind} = ${kind}
|
|
3246
|
+
AND ${nodes3.id} = ${id}
|
|
1901
3247
|
`;
|
|
1902
3248
|
}
|
|
1903
|
-
function buildGetNodes(
|
|
1904
|
-
const { nodes } =
|
|
3249
|
+
function buildGetNodes(tables3, graphId, kind, ids) {
|
|
3250
|
+
const { nodes: nodes3 } = tables3;
|
|
1905
3251
|
return drizzleOrm.sql`
|
|
1906
|
-
SELECT * FROM ${
|
|
1907
|
-
WHERE ${
|
|
1908
|
-
AND ${
|
|
1909
|
-
AND ${
|
|
3252
|
+
SELECT * FROM ${nodes3}
|
|
3253
|
+
WHERE ${nodes3.graphId} = ${graphId}
|
|
3254
|
+
AND ${nodes3.kind} = ${kind}
|
|
3255
|
+
AND ${nodes3.id} IN (${drizzleOrm.sql.join(
|
|
1910
3256
|
ids.map((id) => drizzleOrm.sql`${id}`),
|
|
1911
3257
|
drizzleOrm.sql`, `
|
|
1912
3258
|
)})
|
|
1913
3259
|
`;
|
|
1914
3260
|
}
|
|
1915
|
-
function buildUpdateNode(
|
|
1916
|
-
const { nodes } =
|
|
3261
|
+
function buildUpdateNode(tables3, params, timestamp2) {
|
|
3262
|
+
const { nodes: nodes3 } = tables3;
|
|
1917
3263
|
const propsJson = JSON.stringify(params.props);
|
|
1918
3264
|
const setParts = [
|
|
1919
|
-
drizzleOrm.sql`${
|
|
1920
|
-
drizzleOrm.sql`${
|
|
3265
|
+
drizzleOrm.sql`${quotedColumn(nodes3.props)} = ${propsJson}`,
|
|
3266
|
+
drizzleOrm.sql`${quotedColumn(nodes3.updatedAt)} = ${timestamp2}`
|
|
1921
3267
|
];
|
|
1922
3268
|
if (params.incrementVersion) {
|
|
1923
3269
|
setParts.push(
|
|
1924
|
-
drizzleOrm.sql`${
|
|
3270
|
+
drizzleOrm.sql`${quotedColumn(nodes3.version)} = ${quotedColumn(nodes3.version)} + 1`
|
|
1925
3271
|
);
|
|
1926
3272
|
}
|
|
1927
3273
|
if (params.clearDeleted) {
|
|
1928
3274
|
setParts.push(
|
|
1929
|
-
drizzleOrm.sql`${
|
|
1930
|
-
drizzleOrm.sql`${
|
|
3275
|
+
drizzleOrm.sql`${quotedColumn(nodes3.validFrom)} = ${sqlNull(chunkM5MSP3BI_cjs.resolveStampedValidityLowerBound(params.validFrom, params.validTo, timestamp2))}`,
|
|
3276
|
+
drizzleOrm.sql`${quotedColumn(nodes3.validTo)} = ${sqlNull(params.validTo)}`
|
|
1931
3277
|
);
|
|
1932
3278
|
} else if (params.clearValidTo === true) {
|
|
1933
|
-
setParts.push(drizzleOrm.sql`${
|
|
3279
|
+
setParts.push(drizzleOrm.sql`${quotedColumn(nodes3.validTo)} = NULL`);
|
|
1934
3280
|
} else if (params.validTo !== void 0) {
|
|
1935
|
-
setParts.push(drizzleOrm.sql`${
|
|
3281
|
+
setParts.push(drizzleOrm.sql`${quotedColumn(nodes3.validTo)} = ${params.validTo}`);
|
|
1936
3282
|
}
|
|
1937
3283
|
if (params.clearDeleted) {
|
|
1938
|
-
setParts.push(drizzleOrm.sql`${
|
|
3284
|
+
setParts.push(drizzleOrm.sql`${quotedColumn(nodes3.deletedAt)} = NULL`);
|
|
1939
3285
|
}
|
|
1940
3286
|
const setClause = drizzleOrm.sql.join(setParts, drizzleOrm.sql`, `);
|
|
1941
|
-
const expectedValidFrom =
|
|
1942
|
-
|
|
3287
|
+
const expectedValidFrom = expectedValidFromPredicate(
|
|
3288
|
+
nodes3.validFrom,
|
|
1943
3289
|
params.expectedValidFrom
|
|
1944
3290
|
);
|
|
1945
3291
|
if (params.clearDeleted) {
|
|
1946
3292
|
return drizzleOrm.sql`
|
|
1947
|
-
UPDATE ${
|
|
3293
|
+
UPDATE ${nodes3}
|
|
1948
3294
|
SET ${setClause}
|
|
1949
|
-
WHERE ${
|
|
1950
|
-
AND ${
|
|
1951
|
-
AND ${
|
|
1952
|
-
AND ${
|
|
3295
|
+
WHERE ${nodes3.graphId} = ${params.graphId}
|
|
3296
|
+
AND ${nodes3.kind} = ${params.kind}
|
|
3297
|
+
AND ${nodes3.id} = ${params.id}${expectedValidFrom}
|
|
3298
|
+
AND ${nodes3.deletedAt} IS NOT NULL
|
|
1953
3299
|
RETURNING *
|
|
1954
3300
|
`;
|
|
1955
3301
|
}
|
|
1956
3302
|
return drizzleOrm.sql`
|
|
1957
|
-
UPDATE ${
|
|
3303
|
+
UPDATE ${nodes3}
|
|
1958
3304
|
SET ${setClause}
|
|
1959
|
-
WHERE ${
|
|
1960
|
-
AND ${
|
|
1961
|
-
AND ${
|
|
1962
|
-
AND ${
|
|
3305
|
+
WHERE ${nodes3.graphId} = ${params.graphId}
|
|
3306
|
+
AND ${nodes3.kind} = ${params.kind}
|
|
3307
|
+
AND ${nodes3.id} = ${params.id}${expectedValidFrom}
|
|
3308
|
+
AND ${nodes3.deletedAt} IS NULL
|
|
1963
3309
|
RETURNING *
|
|
1964
3310
|
`;
|
|
1965
3311
|
}
|
|
1966
|
-
function buildUpdateNodeSet(
|
|
1967
|
-
const { nodes } =
|
|
1968
|
-
const adapter =
|
|
1969
|
-
const patchedProps =
|
|
3312
|
+
function buildUpdateNodeSet(tables3, dialect, params, timestamp2) {
|
|
3313
|
+
const { nodes: nodes3 } = tables3;
|
|
3314
|
+
const adapter = chunkJVA3KDEA_cjs.getDialect(dialect);
|
|
3315
|
+
const patchedProps = chunkLLFPQOBA_cjs.toDrizzleSql(
|
|
1970
3316
|
adapter.jsonSetProperties(
|
|
1971
|
-
|
|
3317
|
+
chunkH5IJSROF_cjs.sql.identifier(nodes3.props.name),
|
|
1972
3318
|
params.patch,
|
|
1973
3319
|
params.unsetProperties ?? []
|
|
1974
3320
|
),
|
|
1975
3321
|
dialect
|
|
1976
3322
|
);
|
|
1977
|
-
const candidateIds =
|
|
1978
|
-
const candidateIdColumn =
|
|
1979
|
-
|
|
3323
|
+
const candidateIds = chunkLLFPQOBA_cjs.toDrizzleSql(params.candidateIds, dialect);
|
|
3324
|
+
const candidateIdColumn = chunkLLFPQOBA_cjs.toDrizzleSql(
|
|
3325
|
+
chunkH5IJSROF_cjs.sql.identifier(params.candidateIdColumn),
|
|
1980
3326
|
dialect
|
|
1981
3327
|
);
|
|
1982
3328
|
return drizzleOrm.sql`
|
|
1983
|
-
UPDATE ${
|
|
1984
|
-
SET ${
|
|
1985
|
-
${
|
|
1986
|
-
${
|
|
1987
|
-
WHERE ${
|
|
1988
|
-
AND ${
|
|
1989
|
-
AND ${
|
|
1990
|
-
AND ${
|
|
3329
|
+
UPDATE ${nodes3}
|
|
3330
|
+
SET ${quotedColumn(nodes3.props)} = ${patchedProps},
|
|
3331
|
+
${quotedColumn(nodes3.updatedAt)} = ${timestamp2},
|
|
3332
|
+
${quotedColumn(nodes3.version)} = ${quotedColumn(nodes3.version)} + 1
|
|
3333
|
+
WHERE ${nodes3.graphId} = ${params.graphId}
|
|
3334
|
+
AND ${nodes3.kind} = ${params.kind}
|
|
3335
|
+
AND ${nodes3.deletedAt} IS NULL
|
|
3336
|
+
AND ${nodes3.id} IN (
|
|
1991
3337
|
SELECT ${candidateIdColumn}
|
|
1992
3338
|
FROM (${candidateIds}) AS tg_set_candidates
|
|
1993
3339
|
)
|
|
1994
3340
|
RETURNING *
|
|
1995
3341
|
`;
|
|
1996
3342
|
}
|
|
1997
|
-
function buildDeleteNode(
|
|
1998
|
-
const { nodes } =
|
|
3343
|
+
function buildDeleteNode(tables3, params, timestamp2) {
|
|
3344
|
+
const { nodes: nodes3 } = tables3;
|
|
1999
3345
|
return drizzleOrm.sql`
|
|
2000
|
-
UPDATE ${
|
|
2001
|
-
SET ${
|
|
2002
|
-
WHERE ${
|
|
2003
|
-
AND ${
|
|
2004
|
-
AND ${
|
|
2005
|
-
AND ${
|
|
3346
|
+
UPDATE ${nodes3}
|
|
3347
|
+
SET ${quotedColumn(nodes3.deletedAt)} = ${timestamp2}
|
|
3348
|
+
WHERE ${nodes3.graphId} = ${params.graphId}
|
|
3349
|
+
AND ${nodes3.kind} = ${params.kind}
|
|
3350
|
+
AND ${nodes3.id} = ${params.id}
|
|
3351
|
+
AND ${nodes3.deletedAt} IS NULL
|
|
2006
3352
|
`;
|
|
2007
3353
|
}
|
|
2008
|
-
function buildHardDeleteNode(
|
|
2009
|
-
const { nodes } =
|
|
3354
|
+
function buildHardDeleteNode(tables3, params) {
|
|
3355
|
+
const { nodes: nodes3 } = tables3;
|
|
2010
3356
|
return drizzleOrm.sql`
|
|
2011
|
-
DELETE FROM ${
|
|
2012
|
-
WHERE ${
|
|
2013
|
-
AND ${
|
|
2014
|
-
AND ${
|
|
3357
|
+
DELETE FROM ${nodes3}
|
|
3358
|
+
WHERE ${nodes3.graphId} = ${params.graphId}
|
|
3359
|
+
AND ${nodes3.kind} = ${params.kind}
|
|
3360
|
+
AND ${nodes3.id} = ${params.id}
|
|
2015
3361
|
`;
|
|
2016
3362
|
}
|
|
2017
3363
|
function createSchemaDialectStrategy(dialect) {
|
|
@@ -2032,66 +3378,319 @@ var SCHEMA_DIALECT_STRATEGIES = {
|
|
|
2032
3378
|
postgres: createSchemaDialectStrategy("postgres"),
|
|
2033
3379
|
sqlite: createSchemaDialectStrategy("sqlite")
|
|
2034
3380
|
};
|
|
2035
|
-
function buildInsertSchema(
|
|
2036
|
-
const { schemaVersions } =
|
|
3381
|
+
function buildInsertSchema(tables3, params, timestamp2, dialect = "sqlite") {
|
|
3382
|
+
const { schemaVersions: schemaVersions3 } = tables3;
|
|
2037
3383
|
const strategy = SCHEMA_DIALECT_STRATEGIES[dialect];
|
|
2038
3384
|
const schemaDocumentJson = JSON.stringify(params.schemaDoc);
|
|
2039
3385
|
const isActiveValue = strategy.booleanLiteral(params.isActive);
|
|
2040
3386
|
const columns = drizzleOrm.sql.raw(
|
|
2041
|
-
`"${
|
|
3387
|
+
`"${schemaVersions3.graphId.name}", "${schemaVersions3.version.name}", "${schemaVersions3.schemaHash.name}", "${schemaVersions3.schemaDoc.name}", "${schemaVersions3.createdAt.name}", "${schemaVersions3.isActive.name}"`
|
|
2042
3388
|
);
|
|
2043
3389
|
return drizzleOrm.sql`
|
|
2044
|
-
INSERT INTO ${
|
|
3390
|
+
INSERT INTO ${schemaVersions3} (${columns})
|
|
2045
3391
|
VALUES (
|
|
2046
3392
|
${params.graphId}, ${params.version},
|
|
2047
3393
|
${params.schemaHash}, ${schemaDocumentJson},
|
|
2048
|
-
${
|
|
3394
|
+
${timestamp2}, ${isActiveValue}
|
|
2049
3395
|
)
|
|
2050
3396
|
RETURNING *
|
|
2051
3397
|
`;
|
|
2052
3398
|
}
|
|
2053
|
-
function buildGetActiveSchema(
|
|
2054
|
-
const { schemaVersions } =
|
|
3399
|
+
function buildGetActiveSchema(tables3, graphId, dialect = "sqlite") {
|
|
3400
|
+
const { schemaVersions: schemaVersions3 } = tables3;
|
|
2055
3401
|
const strategy = SCHEMA_DIALECT_STRATEGIES[dialect];
|
|
2056
3402
|
return drizzleOrm.sql`
|
|
2057
|
-
SELECT * FROM ${
|
|
2058
|
-
WHERE ${
|
|
2059
|
-
AND ${
|
|
3403
|
+
SELECT * FROM ${schemaVersions3}
|
|
3404
|
+
WHERE ${schemaVersions3.graphId} = ${graphId}
|
|
3405
|
+
AND ${schemaVersions3.isActive} = ${strategy.booleanLiteral(true)}
|
|
2060
3406
|
`;
|
|
2061
3407
|
}
|
|
2062
|
-
function buildGetSchemaVersion(
|
|
2063
|
-
const { schemaVersions } =
|
|
3408
|
+
function buildGetSchemaVersion(tables3, graphId, version) {
|
|
3409
|
+
const { schemaVersions: schemaVersions3 } = tables3;
|
|
2064
3410
|
return drizzleOrm.sql`
|
|
2065
|
-
SELECT * FROM ${
|
|
2066
|
-
WHERE ${
|
|
2067
|
-
AND ${
|
|
3411
|
+
SELECT * FROM ${schemaVersions3}
|
|
3412
|
+
WHERE ${schemaVersions3.graphId} = ${graphId}
|
|
3413
|
+
AND ${schemaVersions3.version} = ${version}
|
|
2068
3414
|
`;
|
|
2069
3415
|
}
|
|
2070
|
-
function buildSetActiveSchema(
|
|
2071
|
-
const { schemaVersions } =
|
|
3416
|
+
function buildSetActiveSchema(tables3, graphId, version, dialect = "sqlite") {
|
|
3417
|
+
const { schemaVersions: schemaVersions3 } = tables3;
|
|
2072
3418
|
const strategy = SCHEMA_DIALECT_STRATEGIES[dialect];
|
|
2073
3419
|
const deactivateAll = drizzleOrm.sql`
|
|
2074
|
-
UPDATE ${
|
|
2075
|
-
SET ${
|
|
2076
|
-
WHERE ${
|
|
3420
|
+
UPDATE ${schemaVersions3}
|
|
3421
|
+
SET ${quotedColumn(schemaVersions3.isActive)} = ${strategy.booleanLiteral(false)}
|
|
3422
|
+
WHERE ${schemaVersions3.graphId} = ${graphId}
|
|
2077
3423
|
`;
|
|
2078
3424
|
const activateVersion = drizzleOrm.sql`
|
|
2079
|
-
UPDATE ${
|
|
2080
|
-
SET ${
|
|
2081
|
-
WHERE ${
|
|
2082
|
-
AND ${
|
|
3425
|
+
UPDATE ${schemaVersions3}
|
|
3426
|
+
SET ${quotedColumn(schemaVersions3.isActive)} = ${strategy.booleanLiteral(true)}
|
|
3427
|
+
WHERE ${schemaVersions3.graphId} = ${graphId}
|
|
3428
|
+
AND ${schemaVersions3.version} = ${version}
|
|
2083
3429
|
`;
|
|
2084
3430
|
return { deactivateAll, activateVersion };
|
|
2085
3431
|
}
|
|
3432
|
+
function drizzleSqlTag(strings, ...expressions) {
|
|
3433
|
+
return drizzleOrm.sql(strings, ...expressions);
|
|
3434
|
+
}
|
|
3435
|
+
function ownerColumnNames(uniques3) {
|
|
3436
|
+
return {
|
|
3437
|
+
nodeId: uniques3.nodeId.name,
|
|
3438
|
+
concreteKind: uniques3.concreteKind.name
|
|
3439
|
+
};
|
|
3440
|
+
}
|
|
3441
|
+
function boundOwnerColumn(uniques3, params) {
|
|
3442
|
+
return (columnName) => columnName === uniques3.nodeId.name ? drizzleOrm.sql`${params.nodeId}` : drizzleOrm.sql`${params.concreteKind}`;
|
|
3443
|
+
}
|
|
3444
|
+
function excludedColumnByName(columnName) {
|
|
3445
|
+
return drizzleOrm.sql`excluded.${quotedColumn({ name: columnName })}`;
|
|
3446
|
+
}
|
|
3447
|
+
function excludedColumn(column) {
|
|
3448
|
+
return excludedColumnByName(column.name);
|
|
3449
|
+
}
|
|
3450
|
+
function buildInsertUniqueSqlite(tables3, params) {
|
|
3451
|
+
const { uniques: uniques3 } = tables3;
|
|
3452
|
+
const columns = drizzleOrm.sql.raw(
|
|
3453
|
+
`"${uniques3.graphId.name}", "${uniques3.nodeKind.name}", "${uniques3.constraintName.name}", "${uniques3.key.name}", "${uniques3.nodeId.name}", "${uniques3.concreteKind.name}", "${uniques3.deletedAt.name}"`
|
|
3454
|
+
);
|
|
3455
|
+
const conflictColumns = drizzleOrm.sql.raw(
|
|
3456
|
+
`"${uniques3.graphId.name}", "${uniques3.nodeKind.name}", "${uniques3.constraintName.name}", "${uniques3.key.name}"`
|
|
3457
|
+
);
|
|
3458
|
+
const ownerMatches = chunkCRZ56SZU_cjs.claimOwnerMatchesSql(
|
|
3459
|
+
drizzleSqlTag,
|
|
3460
|
+
(columnName) => quotedColumn({ name: columnName }),
|
|
3461
|
+
boundOwnerColumn(uniques3, params),
|
|
3462
|
+
ownerColumnNames(uniques3)
|
|
3463
|
+
);
|
|
3464
|
+
return drizzleOrm.sql`
|
|
3465
|
+
INSERT INTO ${uniques3} (${columns})
|
|
3466
|
+
VALUES (
|
|
3467
|
+
${params.graphId}, ${params.nodeKind}, ${params.constraintName},
|
|
3468
|
+
${params.key}, ${params.nodeId}, ${params.concreteKind}, ${drizzleOrm.sql.raw("NULL")}
|
|
3469
|
+
)
|
|
3470
|
+
ON CONFLICT (${conflictColumns})
|
|
3471
|
+
DO UPDATE SET
|
|
3472
|
+
${quotedColumn(uniques3.nodeId)} = CASE
|
|
3473
|
+
WHEN ${ownerMatches} THEN ${params.nodeId}
|
|
3474
|
+
WHEN ${quotedColumn(uniques3.deletedAt)} IS NOT NULL THEN ${params.nodeId}
|
|
3475
|
+
ELSE ${quotedColumn(uniques3.nodeId)}
|
|
3476
|
+
END,
|
|
3477
|
+
${quotedColumn(uniques3.concreteKind)} = CASE
|
|
3478
|
+
WHEN ${ownerMatches} THEN ${params.concreteKind}
|
|
3479
|
+
WHEN ${quotedColumn(uniques3.deletedAt)} IS NOT NULL THEN ${params.concreteKind}
|
|
3480
|
+
ELSE ${quotedColumn(uniques3.concreteKind)}
|
|
3481
|
+
END,
|
|
3482
|
+
${quotedColumn(uniques3.deletedAt)} = CASE
|
|
3483
|
+
WHEN ${ownerMatches} THEN NULL
|
|
3484
|
+
WHEN ${quotedColumn(uniques3.deletedAt)} IS NOT NULL THEN NULL
|
|
3485
|
+
ELSE ${quotedColumn(uniques3.deletedAt)}
|
|
3486
|
+
END
|
|
3487
|
+
RETURNING
|
|
3488
|
+
${quotedColumn(uniques3.nodeId)} as node_id,
|
|
3489
|
+
${quotedColumn(uniques3.concreteKind)} as concrete_kind
|
|
3490
|
+
`;
|
|
3491
|
+
}
|
|
3492
|
+
function buildInsertUniquePostgres(tables3, params) {
|
|
3493
|
+
const { uniques: uniques3 } = tables3;
|
|
3494
|
+
const columns = drizzleOrm.sql.raw(
|
|
3495
|
+
`"${uniques3.graphId.name}", "${uniques3.nodeKind.name}", "${uniques3.constraintName.name}", "${uniques3.key.name}", "${uniques3.nodeId.name}", "${uniques3.concreteKind.name}", "${uniques3.deletedAt.name}"`
|
|
3496
|
+
);
|
|
3497
|
+
const conflictColumns = drizzleOrm.sql.raw(
|
|
3498
|
+
`"${uniques3.graphId.name}", "${uniques3.nodeKind.name}", "${uniques3.constraintName.name}", "${uniques3.key.name}"`
|
|
3499
|
+
);
|
|
3500
|
+
const tableName = drizzleOrm.getTableName(uniques3);
|
|
3501
|
+
const existingColumnByName = (columnName) => drizzleOrm.sql`${quotedTableName(tableName)}.${quotedColumn({ name: columnName })}`;
|
|
3502
|
+
const existingColumn = (column) => existingColumnByName(column.name);
|
|
3503
|
+
const ownerMatches = chunkCRZ56SZU_cjs.claimOwnerMatchesSql(
|
|
3504
|
+
drizzleSqlTag,
|
|
3505
|
+
(columnName) => existingColumnByName(columnName),
|
|
3506
|
+
boundOwnerColumn(uniques3, params),
|
|
3507
|
+
ownerColumnNames(uniques3)
|
|
3508
|
+
);
|
|
3509
|
+
return drizzleOrm.sql`
|
|
3510
|
+
INSERT INTO ${uniques3} (${columns})
|
|
3511
|
+
VALUES (
|
|
3512
|
+
${params.graphId}, ${params.nodeKind}, ${params.constraintName},
|
|
3513
|
+
${params.key}, ${params.nodeId}, ${params.concreteKind}, ${drizzleOrm.sql.raw("NULL")}
|
|
3514
|
+
)
|
|
3515
|
+
ON CONFLICT (${conflictColumns})
|
|
3516
|
+
DO UPDATE SET
|
|
3517
|
+
${quotedColumn(uniques3.nodeId)} = CASE
|
|
3518
|
+
WHEN ${ownerMatches} THEN ${params.nodeId}
|
|
3519
|
+
WHEN ${existingColumn(uniques3.deletedAt)} IS NOT NULL THEN ${params.nodeId}
|
|
3520
|
+
ELSE ${existingColumn(uniques3.nodeId)}
|
|
3521
|
+
END,
|
|
3522
|
+
${quotedColumn(uniques3.concreteKind)} = CASE
|
|
3523
|
+
WHEN ${ownerMatches} THEN ${params.concreteKind}
|
|
3524
|
+
WHEN ${existingColumn(uniques3.deletedAt)} IS NOT NULL THEN ${params.concreteKind}
|
|
3525
|
+
ELSE ${existingColumn(uniques3.concreteKind)}
|
|
3526
|
+
END,
|
|
3527
|
+
${quotedColumn(uniques3.deletedAt)} = CASE
|
|
3528
|
+
WHEN ${ownerMatches} THEN NULL
|
|
3529
|
+
WHEN ${existingColumn(uniques3.deletedAt)} IS NOT NULL THEN NULL
|
|
3530
|
+
ELSE ${existingColumn(uniques3.deletedAt)}
|
|
3531
|
+
END
|
|
3532
|
+
RETURNING
|
|
3533
|
+
${quotedColumn(uniques3.nodeId)} as node_id,
|
|
3534
|
+
${quotedColumn(uniques3.concreteKind)} as concrete_kind
|
|
3535
|
+
`;
|
|
3536
|
+
}
|
|
3537
|
+
var UNIQUE_INSERT_BUILDERS = {
|
|
3538
|
+
postgres: buildInsertUniquePostgres,
|
|
3539
|
+
sqlite: buildInsertUniqueSqlite
|
|
3540
|
+
};
|
|
3541
|
+
function buildInsertUnique(tables3, dialect, params) {
|
|
3542
|
+
const builder = UNIQUE_INSERT_BUILDERS[dialect];
|
|
3543
|
+
return builder(tables3, params);
|
|
3544
|
+
}
|
|
3545
|
+
function buildInsertUniqueBatch(tables3, dialect, entries) {
|
|
3546
|
+
const { uniques: uniques3 } = tables3;
|
|
3547
|
+
const columns = drizzleOrm.sql.raw(
|
|
3548
|
+
`"${uniques3.graphId.name}", "${uniques3.nodeKind.name}", "${uniques3.constraintName.name}", "${uniques3.key.name}", "${uniques3.nodeId.name}", "${uniques3.concreteKind.name}", "${uniques3.deletedAt.name}"`
|
|
3549
|
+
);
|
|
3550
|
+
const conflictColumns = drizzleOrm.sql.raw(
|
|
3551
|
+
`"${uniques3.graphId.name}", "${uniques3.nodeKind.name}", "${uniques3.constraintName.name}", "${uniques3.key.name}"`
|
|
3552
|
+
);
|
|
3553
|
+
const tableName = drizzleOrm.getTableName(uniques3);
|
|
3554
|
+
const existingColumnByName = (columnName) => {
|
|
3555
|
+
switch (dialect) {
|
|
3556
|
+
case "postgres": {
|
|
3557
|
+
return drizzleOrm.sql`${quotedTableName(tableName)}.${quotedColumn({ name: columnName })}`;
|
|
3558
|
+
}
|
|
3559
|
+
case "sqlite": {
|
|
3560
|
+
return quotedColumn({ name: columnName });
|
|
3561
|
+
}
|
|
3562
|
+
default: {
|
|
3563
|
+
return dialect;
|
|
3564
|
+
}
|
|
3565
|
+
}
|
|
3566
|
+
};
|
|
3567
|
+
const existingColumn = (column) => existingColumnByName(column.name);
|
|
3568
|
+
const ownerMatches = chunkCRZ56SZU_cjs.claimOwnerMatchesSql(
|
|
3569
|
+
drizzleSqlTag,
|
|
3570
|
+
(columnName) => existingColumnByName(columnName),
|
|
3571
|
+
excludedColumnByName,
|
|
3572
|
+
ownerColumnNames(uniques3)
|
|
3573
|
+
);
|
|
3574
|
+
const valueRows = drizzleOrm.sql.join(
|
|
3575
|
+
entries.map(
|
|
3576
|
+
(params) => drizzleOrm.sql`(${params.graphId}, ${params.nodeKind}, ${params.constraintName}, ${params.key}, ${params.nodeId}, ${params.concreteKind}, ${drizzleOrm.sql.raw("NULL")})`
|
|
3577
|
+
),
|
|
3578
|
+
drizzleOrm.sql`, `
|
|
3579
|
+
);
|
|
3580
|
+
return drizzleOrm.sql`
|
|
3581
|
+
INSERT INTO ${uniques3} (${columns})
|
|
3582
|
+
VALUES ${valueRows}
|
|
3583
|
+
ON CONFLICT (${conflictColumns})
|
|
3584
|
+
DO UPDATE SET
|
|
3585
|
+
${quotedColumn(uniques3.nodeId)} = CASE
|
|
3586
|
+
WHEN ${ownerMatches} THEN ${excludedColumn(uniques3.nodeId)}
|
|
3587
|
+
WHEN ${existingColumn(uniques3.deletedAt)} IS NOT NULL THEN ${excludedColumn(uniques3.nodeId)}
|
|
3588
|
+
ELSE ${existingColumn(uniques3.nodeId)}
|
|
3589
|
+
END,
|
|
3590
|
+
${quotedColumn(uniques3.concreteKind)} = CASE
|
|
3591
|
+
WHEN ${ownerMatches} THEN ${excludedColumn(uniques3.concreteKind)}
|
|
3592
|
+
WHEN ${existingColumn(uniques3.deletedAt)} IS NOT NULL THEN ${excludedColumn(uniques3.concreteKind)}
|
|
3593
|
+
ELSE ${existingColumn(uniques3.concreteKind)}
|
|
3594
|
+
END,
|
|
3595
|
+
${quotedColumn(uniques3.deletedAt)} = CASE
|
|
3596
|
+
WHEN ${ownerMatches} THEN NULL
|
|
3597
|
+
WHEN ${existingColumn(uniques3.deletedAt)} IS NOT NULL THEN NULL
|
|
3598
|
+
ELSE ${existingColumn(uniques3.deletedAt)}
|
|
3599
|
+
END
|
|
3600
|
+
RETURNING
|
|
3601
|
+
${quotedColumn(uniques3.nodeKind)} as node_kind,
|
|
3602
|
+
${quotedColumn(uniques3.constraintName)} as constraint_name,
|
|
3603
|
+
${quotedColumn(uniques3.key)} as key,
|
|
3604
|
+
${quotedColumn(uniques3.nodeId)} as node_id,
|
|
3605
|
+
${quotedColumn(uniques3.concreteKind)} as concrete_kind
|
|
3606
|
+
`;
|
|
3607
|
+
}
|
|
3608
|
+
function buildDeleteUnique(tables3, params, timestamp2) {
|
|
3609
|
+
const { uniques: uniques3 } = tables3;
|
|
3610
|
+
const axisTerm = params.nodeKind === void 0 ? drizzleOrm.sql`` : drizzleOrm.sql` AND ${uniques3.nodeKind} = ${params.nodeKind}`;
|
|
3611
|
+
return drizzleOrm.sql`
|
|
3612
|
+
UPDATE ${uniques3}
|
|
3613
|
+
SET ${quotedColumn(uniques3.deletedAt)} = ${timestamp2}
|
|
3614
|
+
WHERE ${uniques3.graphId} = ${params.graphId}
|
|
3615
|
+
AND ${uniques3.concreteKind} = ${params.concreteKind}
|
|
3616
|
+
AND ${uniques3.nodeId} = ${params.nodeId}
|
|
3617
|
+
AND ${uniques3.constraintName} = ${params.constraintName}
|
|
3618
|
+
AND ${uniques3.key} = ${params.key}${axisTerm}
|
|
3619
|
+
AND ${uniques3.deletedAt} IS NULL
|
|
3620
|
+
`;
|
|
3621
|
+
}
|
|
3622
|
+
function buildHardDeleteUniquesByNode(tables3, graphId, concreteKind, nodeId) {
|
|
3623
|
+
return buildHardDeleteUniquesByNodeIds(tables3, {
|
|
3624
|
+
graphId,
|
|
3625
|
+
concreteKind,
|
|
3626
|
+
nodeIds: [nodeId]
|
|
3627
|
+
});
|
|
3628
|
+
}
|
|
3629
|
+
function buildHardDeleteUniquesByNodeIds(tables3, params) {
|
|
3630
|
+
const { uniques: uniques3 } = tables3;
|
|
3631
|
+
return drizzleOrm.sql`
|
|
3632
|
+
DELETE FROM ${uniques3}
|
|
3633
|
+
WHERE ${uniques3.graphId} = ${params.graphId}
|
|
3634
|
+
AND ${uniques3.concreteKind} = ${params.concreteKind}
|
|
3635
|
+
AND ${uniques3.nodeId} IN (${drizzleOrm.sql.join(
|
|
3636
|
+
params.nodeIds.map((nodeId) => drizzleOrm.sql`${nodeId}`),
|
|
3637
|
+
drizzleOrm.sql`, `
|
|
3638
|
+
)})
|
|
3639
|
+
`;
|
|
3640
|
+
}
|
|
3641
|
+
function buildCheckUnique(tables3, params) {
|
|
3642
|
+
const { uniques: uniques3 } = tables3;
|
|
3643
|
+
if (params.includeDeleted) {
|
|
3644
|
+
return drizzleOrm.sql`
|
|
3645
|
+
SELECT * FROM ${uniques3}
|
|
3646
|
+
WHERE ${uniques3.graphId} = ${params.graphId}
|
|
3647
|
+
AND ${uniques3.nodeKind} = ${params.nodeKind}
|
|
3648
|
+
AND ${uniques3.constraintName} = ${params.constraintName}
|
|
3649
|
+
AND ${uniques3.key} = ${params.key}
|
|
3650
|
+
`;
|
|
3651
|
+
}
|
|
3652
|
+
return drizzleOrm.sql`
|
|
3653
|
+
SELECT * FROM ${uniques3}
|
|
3654
|
+
WHERE ${uniques3.graphId} = ${params.graphId}
|
|
3655
|
+
AND ${uniques3.nodeKind} = ${params.nodeKind}
|
|
3656
|
+
AND ${uniques3.constraintName} = ${params.constraintName}
|
|
3657
|
+
AND ${uniques3.key} = ${params.key}
|
|
3658
|
+
AND ${uniques3.deletedAt} IS NULL
|
|
3659
|
+
`;
|
|
3660
|
+
}
|
|
3661
|
+
function buildCheckUniqueBatch(tables3, params) {
|
|
3662
|
+
const { uniques: uniques3 } = tables3;
|
|
3663
|
+
const keyPlaceholders = drizzleOrm.sql.join(
|
|
3664
|
+
params.keys.map((key) => drizzleOrm.sql`${key}`),
|
|
3665
|
+
drizzleOrm.sql`, `
|
|
3666
|
+
);
|
|
3667
|
+
if (params.includeDeleted) {
|
|
3668
|
+
return drizzleOrm.sql`
|
|
3669
|
+
SELECT * FROM ${uniques3}
|
|
3670
|
+
WHERE ${uniques3.graphId} = ${params.graphId}
|
|
3671
|
+
AND ${uniques3.nodeKind} = ${params.nodeKind}
|
|
3672
|
+
AND ${uniques3.constraintName} = ${params.constraintName}
|
|
3673
|
+
AND ${uniques3.key} IN (${keyPlaceholders})
|
|
3674
|
+
`;
|
|
3675
|
+
}
|
|
3676
|
+
return drizzleOrm.sql`
|
|
3677
|
+
SELECT * FROM ${uniques3}
|
|
3678
|
+
WHERE ${uniques3.graphId} = ${params.graphId}
|
|
3679
|
+
AND ${uniques3.nodeKind} = ${params.nodeKind}
|
|
3680
|
+
AND ${uniques3.constraintName} = ${params.constraintName}
|
|
3681
|
+
AND ${uniques3.key} IN (${keyPlaceholders})
|
|
3682
|
+
AND ${uniques3.deletedAt} IS NULL
|
|
3683
|
+
`;
|
|
3684
|
+
}
|
|
2086
3685
|
|
|
2087
3686
|
// src/backend/drizzle/operations/strategy.ts
|
|
2088
3687
|
function nullableText(value) {
|
|
2089
3688
|
return value === void 0 ? drizzleOrm.sql`NULL` : drizzleOrm.sql`${value}`;
|
|
2090
3689
|
}
|
|
2091
|
-
function bindTableOperationBuilders(
|
|
3690
|
+
function bindTableOperationBuilders(tables3, builders) {
|
|
2092
3691
|
const boundEntries = Object.entries(builders).map(([name, builder]) => {
|
|
2093
3692
|
function boundBuilder(...args) {
|
|
2094
|
-
return builder(
|
|
3693
|
+
return builder(tables3, ...args);
|
|
2095
3694
|
}
|
|
2096
3695
|
return [name, boundBuilder];
|
|
2097
3696
|
});
|
|
@@ -2130,30 +3729,30 @@ var COMMON_TABLE_OPERATION_BUILDERS = {
|
|
|
2130
3729
|
buildFindEdgesByEndpointSet,
|
|
2131
3730
|
buildFindEdgesByHeterogeneousEndpointSet,
|
|
2132
3731
|
buildCountEdgesByKind,
|
|
2133
|
-
buildDeleteUnique
|
|
2134
|
-
buildHardDeleteUniquesByNode
|
|
2135
|
-
buildHardDeleteUniquesByNodeIds
|
|
2136
|
-
buildCheckUnique
|
|
2137
|
-
buildCheckUniqueBatch
|
|
3732
|
+
buildDeleteUnique,
|
|
3733
|
+
buildHardDeleteUniquesByNode,
|
|
3734
|
+
buildHardDeleteUniquesByNodeIds,
|
|
3735
|
+
buildCheckUnique,
|
|
3736
|
+
buildCheckUniqueBatch,
|
|
2138
3737
|
buildGetSchemaVersion
|
|
2139
3738
|
};
|
|
2140
|
-
function createCommonOperationStrategy(
|
|
3739
|
+
function createCommonOperationStrategy(tables3, dialect, fulltextStrategy) {
|
|
2141
3740
|
const tableOperations = bindTableOperationBuilders(
|
|
2142
|
-
|
|
3741
|
+
tables3,
|
|
2143
3742
|
COMMON_TABLE_OPERATION_BUILDERS
|
|
2144
3743
|
);
|
|
2145
|
-
const fulltextTable =
|
|
2146
|
-
const contributionMaterializations =
|
|
3744
|
+
const fulltextTable = tables3.fulltextTableName;
|
|
3745
|
+
const contributionMaterializations = tables3.contributionMaterializations;
|
|
2147
3746
|
const fulltextBuilders = {
|
|
2148
|
-
buildUpsertFulltext: (params,
|
|
2149
|
-
buildDeleteFulltext: (params) => fulltextStrategy.buildDelete(fulltextTable, params).map((statement) =>
|
|
3747
|
+
buildUpsertFulltext: (params, timestamp2) => fulltextStrategy.buildUpsert(fulltextTable, params, timestamp2).map((statement) => chunkLLFPQOBA_cjs.toDrizzleSql(statement, dialect)),
|
|
3748
|
+
buildDeleteFulltext: (params) => fulltextStrategy.buildDelete(fulltextTable, params).map((statement) => chunkLLFPQOBA_cjs.toDrizzleSql(statement, dialect)),
|
|
2150
3749
|
buildDeleteFulltextByNode: (graphId, nodeKind, nodeId) => fulltextStrategy.buildDelete(fulltextTable, {
|
|
2151
3750
|
graphId,
|
|
2152
3751
|
nodeKind,
|
|
2153
3752
|
nodeId
|
|
2154
|
-
}).map((statement) =>
|
|
2155
|
-
buildUpsertFulltextBatch: (params,
|
|
2156
|
-
buildDeleteFulltextBatch: (params) => fulltextStrategy.buildBatchDelete(fulltextTable, params).map((statement) =>
|
|
3753
|
+
}).map((statement) => chunkLLFPQOBA_cjs.toDrizzleSql(statement, dialect)),
|
|
3754
|
+
buildUpsertFulltextBatch: (params, timestamp2) => fulltextStrategy.buildBatchUpsert(fulltextTable, params, timestamp2).map((statement) => chunkLLFPQOBA_cjs.toDrizzleSql(statement, dialect)),
|
|
3755
|
+
buildDeleteFulltextBatch: (params) => fulltextStrategy.buildBatchDelete(fulltextTable, params).map((statement) => chunkLLFPQOBA_cjs.toDrizzleSql(statement, dialect)),
|
|
2157
3756
|
buildFulltextSearch: (params) => buildFulltextSearch(
|
|
2158
3757
|
fulltextTable,
|
|
2159
3758
|
params,
|
|
@@ -2161,19 +3760,19 @@ function createCommonOperationStrategy(tables, dialect, fulltextStrategy) {
|
|
|
2161
3760
|
dialect,
|
|
2162
3761
|
// Store-compiled candidates (predicates + subclass + currency)
|
|
2163
3762
|
// take precedence; the live-node default covers direct backend use.
|
|
2164
|
-
params.candidates ??
|
|
2165
|
-
|
|
3763
|
+
params.candidates ?? liveNodeIdsSubquery(
|
|
3764
|
+
tables3.nodes,
|
|
2166
3765
|
params.graphId,
|
|
2167
3766
|
params.nodeKind,
|
|
2168
|
-
|
|
3767
|
+
chunk36SX6QXP_cjs.nowIso()
|
|
2169
3768
|
)
|
|
2170
3769
|
),
|
|
2171
3770
|
buildHybridSearch: (params, vectorSql, vectorScoreDescending) => {
|
|
2172
|
-
const candidates = params.candidates ??
|
|
2173
|
-
|
|
3771
|
+
const candidates = params.candidates ?? liveNodeIdsSubquery(
|
|
3772
|
+
tables3.nodes,
|
|
2174
3773
|
params.graphId,
|
|
2175
3774
|
params.nodeKind,
|
|
2176
|
-
|
|
3775
|
+
chunk36SX6QXP_cjs.nowIso()
|
|
2177
3776
|
);
|
|
2178
3777
|
const fulltextSql = buildFulltextSearch(
|
|
2179
3778
|
fulltextTable,
|
|
@@ -2194,11 +3793,11 @@ function createCommonOperationStrategy(tables, dialect, fulltextStrategy) {
|
|
|
2194
3793
|
hybridCandidatesRef()
|
|
2195
3794
|
);
|
|
2196
3795
|
return buildHybridSearchStatement({
|
|
2197
|
-
candidatesSql:
|
|
3796
|
+
candidatesSql: chunkH5IJSROF_cjs.isSqlFragment(candidates) ? chunkLLFPQOBA_cjs.toDrizzleSql(candidates, dialect) : candidates,
|
|
2198
3797
|
vectorSql,
|
|
2199
3798
|
vectorScoreDescending,
|
|
2200
3799
|
fulltextSql,
|
|
2201
|
-
nodes:
|
|
3800
|
+
nodes: tables3.nodes,
|
|
2202
3801
|
dialect,
|
|
2203
3802
|
graphId: params.graphId,
|
|
2204
3803
|
nodeKind: params.nodeKind,
|
|
@@ -2241,57 +3840,57 @@ function createCommonOperationStrategy(tables, dialect, fulltextStrategy) {
|
|
|
2241
3840
|
...tableOperations,
|
|
2242
3841
|
...fulltextBuilders,
|
|
2243
3842
|
primaryKeyConstraints: {
|
|
2244
|
-
nodes:
|
|
2245
|
-
edges:
|
|
3843
|
+
nodes: nodePrimaryKeyConstraint(tables3.nodes),
|
|
3844
|
+
edges: edgePrimaryKeyConstraint(tables3.edges)
|
|
2246
3845
|
},
|
|
2247
|
-
buildUpdateNodeSet(params,
|
|
2248
|
-
return buildUpdateNodeSet(
|
|
3846
|
+
buildUpdateNodeSet(params, timestamp2) {
|
|
3847
|
+
return buildUpdateNodeSet(tables3, dialect, params, timestamp2);
|
|
2249
3848
|
},
|
|
2250
3849
|
buildDeleteContributionMaterialization,
|
|
2251
3850
|
buildInsertContributionMaterialization,
|
|
2252
3851
|
buildInsertUnique(params) {
|
|
2253
|
-
return
|
|
3852
|
+
return buildInsertUnique(tables3, dialect, params);
|
|
2254
3853
|
},
|
|
2255
3854
|
buildInsertUniqueBatch(entries) {
|
|
2256
|
-
return
|
|
3855
|
+
return buildInsertUniqueBatch(tables3, dialect, entries);
|
|
2257
3856
|
},
|
|
2258
3857
|
buildHardDeleteUniquesByConcreteKind(params) {
|
|
2259
|
-
return
|
|
2260
|
-
drizzleOrm.getTableName(
|
|
3858
|
+
return chunk36SX6QXP_cjs.buildHardDeleteUniquesByConcreteKind(
|
|
3859
|
+
drizzleOrm.getTableName(tables3.uniques),
|
|
2261
3860
|
params
|
|
2262
3861
|
);
|
|
2263
3862
|
},
|
|
2264
|
-
buildLockEdgeClaims(entries,
|
|
2265
|
-
return
|
|
3863
|
+
buildLockEdgeClaims(entries, timestamp2) {
|
|
3864
|
+
return buildLockEdgeClaims(tables3, entries, timestamp2);
|
|
2266
3865
|
},
|
|
2267
|
-
buildTakeOverEdgeClaim(params,
|
|
2268
|
-
return
|
|
3866
|
+
buildTakeOverEdgeClaim(params, timestamp2) {
|
|
3867
|
+
return buildTakeOverEdgeClaim(tables3, params, timestamp2);
|
|
2269
3868
|
},
|
|
2270
3869
|
buildPurgeEdgeClaims(params) {
|
|
2271
|
-
return
|
|
3870
|
+
return buildPurgeEdgeClaims(tables3, params);
|
|
2272
3871
|
},
|
|
2273
3872
|
buildContendedUniqueRowAudit(graphId, constraintNames) {
|
|
2274
|
-
return buildContendedUniqueRowAudit(
|
|
3873
|
+
return buildContendedUniqueRowAudit(tables3, graphId, constraintNames);
|
|
2275
3874
|
},
|
|
2276
3875
|
buildContendedEdgeRowAudit(graphId, cardinality, edgeKinds) {
|
|
2277
3876
|
return buildContendedEdgeRowAudit(
|
|
2278
|
-
|
|
3877
|
+
tables3,
|
|
2279
3878
|
graphId,
|
|
2280
3879
|
cardinality,
|
|
2281
3880
|
edgeKinds
|
|
2282
3881
|
);
|
|
2283
3882
|
},
|
|
2284
3883
|
buildDisjointOverlapAudit(graphId, kinds) {
|
|
2285
|
-
return buildDisjointOverlapAudit(
|
|
3884
|
+
return buildDisjointOverlapAudit(tables3, graphId, kinds);
|
|
2286
3885
|
},
|
|
2287
3886
|
buildGetActiveSchema(graphId) {
|
|
2288
|
-
return buildGetActiveSchema(
|
|
3887
|
+
return buildGetActiveSchema(tables3, graphId, dialect);
|
|
2289
3888
|
},
|
|
2290
|
-
buildInsertSchema(params,
|
|
2291
|
-
return buildInsertSchema(
|
|
3889
|
+
buildInsertSchema(params, timestamp2) {
|
|
3890
|
+
return buildInsertSchema(tables3, params, timestamp2, dialect);
|
|
2292
3891
|
},
|
|
2293
3892
|
buildSetActiveSchema(graphId, version) {
|
|
2294
|
-
return buildSetActiveSchema(
|
|
3893
|
+
return buildSetActiveSchema(tables3, graphId, version, dialect);
|
|
2295
3894
|
},
|
|
2296
3895
|
buildTableExists(tableName) {
|
|
2297
3896
|
switch (dialect) {
|
|
@@ -2314,7 +3913,7 @@ function createCommonOperationStrategy(tables, dialect, fulltextStrategy) {
|
|
|
2314
3913
|
}
|
|
2315
3914
|
},
|
|
2316
3915
|
buildClearGraph(graphId) {
|
|
2317
|
-
return buildClearGraph(
|
|
3916
|
+
return buildClearGraph(tables3, graphId);
|
|
2318
3917
|
}
|
|
2319
3918
|
};
|
|
2320
3919
|
}
|
|
@@ -2340,11 +3939,11 @@ function createCachedTableExistence(probe, options) {
|
|
|
2340
3939
|
return exists;
|
|
2341
3940
|
};
|
|
2342
3941
|
}
|
|
2343
|
-
function createSqliteOperationStrategy(
|
|
2344
|
-
return createCommonOperationStrategy(
|
|
3942
|
+
function createSqliteOperationStrategy(tables3, fulltextStrategy) {
|
|
3943
|
+
return createCommonOperationStrategy(tables3, "sqlite", fulltextStrategy);
|
|
2345
3944
|
}
|
|
2346
|
-
function createPostgresOperationStrategy(
|
|
2347
|
-
return createCommonOperationStrategy(
|
|
3945
|
+
function createPostgresOperationStrategy(tables3, fulltextStrategy) {
|
|
3946
|
+
return createCommonOperationStrategy(tables3, "postgres", fulltextStrategy);
|
|
2348
3947
|
}
|
|
2349
3948
|
function claimOwnerOf(params) {
|
|
2350
3949
|
return { concreteKind: params.concreteKind, nodeId: params.nodeId };
|
|
@@ -2365,7 +3964,7 @@ async function withDuplicateKeyClassification(run, context) {
|
|
|
2365
3964
|
try {
|
|
2366
3965
|
return await run();
|
|
2367
3966
|
} catch (error) {
|
|
2368
|
-
if (!
|
|
3967
|
+
if (!chunkNLX5OWK7_cjs.isDuplicatePrimaryKeyError(error, context.relation)) throw error;
|
|
2369
3968
|
throw new chunkX4GDXBOP_cjs.DatabaseOperationError(
|
|
2370
3969
|
`Insert ${context.entity} failed: a row with this identity already exists`,
|
|
2371
3970
|
{
|
|
@@ -2437,7 +4036,7 @@ function createCommonOperationBackend(options) {
|
|
|
2437
4036
|
operationStrategy,
|
|
2438
4037
|
rowMappers
|
|
2439
4038
|
} = options;
|
|
2440
|
-
const nowIso2 = options.nowIso ??
|
|
4039
|
+
const nowIso2 = options.nowIso ?? chunk36SX6QXP_cjs.nowIso;
|
|
2441
4040
|
const tableExists = createCachedTableExistence(
|
|
2442
4041
|
(tableName) => execution.execGet(
|
|
2443
4042
|
operationStrategy.buildTableExists(tableName)
|
|
@@ -2453,7 +4052,7 @@ function createCommonOperationBackend(options) {
|
|
|
2453
4052
|
async function claimEdgeCardinalityEntries(entries) {
|
|
2454
4053
|
if (entries.length === 0) return [];
|
|
2455
4054
|
const targetKey = (entry) => {
|
|
2456
|
-
const target =
|
|
4055
|
+
const target = chunkFMMW3KX7_cjs.edgeCardinalityClaimTarget(entry);
|
|
2457
4056
|
return `${target.axis}\0${target.key}`;
|
|
2458
4057
|
};
|
|
2459
4058
|
const seen = /* @__PURE__ */ new Set();
|
|
@@ -2468,7 +4067,7 @@ function createCommonOperationBackend(options) {
|
|
|
2468
4067
|
seen.add(key);
|
|
2469
4068
|
}
|
|
2470
4069
|
const outcomes = /* @__PURE__ */ new Map();
|
|
2471
|
-
for (const chunk2 of
|
|
4070
|
+
for (const chunk2 of chunkNLX5OWK7_cjs.chunk(entries, batchConfig.edgeInsertBatchSize)) {
|
|
2472
4071
|
const lockQuery = operationStrategy.buildLockEdgeClaims(chunk2, nowIso2());
|
|
2473
4072
|
const rows = await execution.execAll(lockQuery);
|
|
2474
4073
|
const holderByTarget = new Map(
|
|
@@ -2503,7 +4102,7 @@ function createCommonOperationBackend(options) {
|
|
|
2503
4102
|
return {
|
|
2504
4103
|
tableExists,
|
|
2505
4104
|
async executeSchemaDdl(ddl) {
|
|
2506
|
-
await execution.execRun(
|
|
4105
|
+
await execution.execRun(chunkH5IJSROF_cjs.asCompiledStatementSql(chunkH5IJSROF_cjs.sql.raw(ddl)));
|
|
2507
4106
|
},
|
|
2508
4107
|
async executeStatement(query) {
|
|
2509
4108
|
await execution.execRun(query);
|
|
@@ -2512,8 +4111,8 @@ function createCommonOperationBackend(options) {
|
|
|
2512
4111
|
await execution.execRun(query);
|
|
2513
4112
|
},
|
|
2514
4113
|
async insertNode(params) {
|
|
2515
|
-
const
|
|
2516
|
-
const query = operationStrategy.buildInsertNode(params,
|
|
4114
|
+
const timestamp2 = nowIso2();
|
|
4115
|
+
const query = operationStrategy.buildInsertNode(params, timestamp2);
|
|
2517
4116
|
const row = await withDuplicateKeyClassification(
|
|
2518
4117
|
() => execution.execGet(query),
|
|
2519
4118
|
{
|
|
@@ -2534,10 +4133,10 @@ function createCommonOperationBackend(options) {
|
|
|
2534
4133
|
return rowMappers.toNodeRow(row);
|
|
2535
4134
|
},
|
|
2536
4135
|
async insertNodeNoReturn(params) {
|
|
2537
|
-
const
|
|
4136
|
+
const timestamp2 = nowIso2();
|
|
2538
4137
|
const query = operationStrategy.buildInsertNodeNoReturn(
|
|
2539
4138
|
params,
|
|
2540
|
-
|
|
4139
|
+
timestamp2
|
|
2541
4140
|
);
|
|
2542
4141
|
await withDuplicateKeyClassification(() => execution.execRun(query), {
|
|
2543
4142
|
entity: "node",
|
|
@@ -2549,9 +4148,9 @@ function createCommonOperationBackend(options) {
|
|
|
2549
4148
|
if (params.length === 0) {
|
|
2550
4149
|
return;
|
|
2551
4150
|
}
|
|
2552
|
-
const
|
|
2553
|
-
for (const chunk2 of
|
|
2554
|
-
const query = operationStrategy.buildInsertNodesBatch(chunk2,
|
|
4151
|
+
const timestamp2 = nowIso2();
|
|
4152
|
+
for (const chunk2 of chunkNLX5OWK7_cjs.chunk(params, batchConfig.nodeInsertBatchSize)) {
|
|
4153
|
+
const query = operationStrategy.buildInsertNodesBatch(chunk2, timestamp2);
|
|
2555
4154
|
await withDuplicateKeyClassification(() => execution.execRun(query), {
|
|
2556
4155
|
entity: "node",
|
|
2557
4156
|
relation: operationStrategy.primaryKeyConstraints.nodes,
|
|
@@ -2563,12 +4162,12 @@ function createCommonOperationBackend(options) {
|
|
|
2563
4162
|
if (params.length === 0) {
|
|
2564
4163
|
return [];
|
|
2565
4164
|
}
|
|
2566
|
-
const
|
|
4165
|
+
const timestamp2 = nowIso2();
|
|
2567
4166
|
const allRows = [];
|
|
2568
|
-
for (const chunk2 of
|
|
4167
|
+
for (const chunk2 of chunkNLX5OWK7_cjs.chunk(params, batchConfig.nodeInsertBatchSize)) {
|
|
2569
4168
|
const query = operationStrategy.buildInsertNodesBatchReturning(
|
|
2570
4169
|
chunk2,
|
|
2571
|
-
|
|
4170
|
+
timestamp2
|
|
2572
4171
|
);
|
|
2573
4172
|
const rows = await withDuplicateKeyClassification(
|
|
2574
4173
|
() => execution.execAll(query),
|
|
@@ -2590,7 +4189,7 @@ function createCommonOperationBackend(options) {
|
|
|
2590
4189
|
async getNodes(graphId, kind, ids) {
|
|
2591
4190
|
if (ids.length === 0) return [];
|
|
2592
4191
|
const allRows = [];
|
|
2593
|
-
for (const chunk2 of
|
|
4192
|
+
for (const chunk2 of chunkNLX5OWK7_cjs.chunk(ids, batchConfig.getNodesChunkSize)) {
|
|
2594
4193
|
const query = operationStrategy.buildGetNodes(graphId, kind, chunk2);
|
|
2595
4194
|
const rows = await execution.execAll(query);
|
|
2596
4195
|
allRows.push(...rows.map((row) => rowMappers.toNodeRow(row)));
|
|
@@ -2598,8 +4197,8 @@ function createCommonOperationBackend(options) {
|
|
|
2598
4197
|
return allRows;
|
|
2599
4198
|
},
|
|
2600
4199
|
async updateNode(params) {
|
|
2601
|
-
const
|
|
2602
|
-
const query = operationStrategy.buildUpdateNode(params,
|
|
4200
|
+
const timestamp2 = nowIso2();
|
|
4201
|
+
const query = operationStrategy.buildUpdateNode(params, timestamp2);
|
|
2603
4202
|
const row = await execution.execGet(query);
|
|
2604
4203
|
if (!row)
|
|
2605
4204
|
throw new chunkX4GDXBOP_cjs.DatabaseOperationError(
|
|
@@ -2625,15 +4224,15 @@ function createCommonOperationBackend(options) {
|
|
|
2625
4224
|
{ operation: "updateNodeSet", kind: params.kind }
|
|
2626
4225
|
);
|
|
2627
4226
|
}
|
|
2628
|
-
const
|
|
2629
|
-
const query = operationStrategy.buildUpdateNodeSet(params,
|
|
4227
|
+
const timestamp2 = nowIso2();
|
|
4228
|
+
const query = operationStrategy.buildUpdateNodeSet(params, timestamp2);
|
|
2630
4229
|
const rows = await execution.execAll(query);
|
|
2631
4230
|
const updatedRows = rows.map((row) => rowMappers.toNodeRow(row));
|
|
2632
4231
|
return { affectedCount: updatedRows.length, rows: updatedRows };
|
|
2633
4232
|
},
|
|
2634
4233
|
async deleteNode(params) {
|
|
2635
|
-
const
|
|
2636
|
-
const query = operationStrategy.buildDeleteNode(params,
|
|
4234
|
+
const timestamp2 = nowIso2();
|
|
4235
|
+
const query = operationStrategy.buildDeleteNode(params, timestamp2);
|
|
2637
4236
|
await execution.execRun(query);
|
|
2638
4237
|
},
|
|
2639
4238
|
// IMPORTANT: This cascade is not atomic. Callers must ensure this runs
|
|
@@ -2670,8 +4269,8 @@ function createCommonOperationBackend(options) {
|
|
|
2670
4269
|
await execution.execRun(query);
|
|
2671
4270
|
},
|
|
2672
4271
|
async insertEdge(params) {
|
|
2673
|
-
const
|
|
2674
|
-
const query = operationStrategy.buildInsertEdge(params,
|
|
4272
|
+
const timestamp2 = nowIso2();
|
|
4273
|
+
const query = operationStrategy.buildInsertEdge(params, timestamp2);
|
|
2675
4274
|
const row = await withDuplicateKeyClassification(
|
|
2676
4275
|
() => execution.execGet(query),
|
|
2677
4276
|
{
|
|
@@ -2692,10 +4291,10 @@ function createCommonOperationBackend(options) {
|
|
|
2692
4291
|
return rowMappers.toEdgeRow(row);
|
|
2693
4292
|
},
|
|
2694
4293
|
async insertEdgeNoReturn(params) {
|
|
2695
|
-
const
|
|
4294
|
+
const timestamp2 = nowIso2();
|
|
2696
4295
|
const query = operationStrategy.buildInsertEdgeNoReturn(
|
|
2697
4296
|
params,
|
|
2698
|
-
|
|
4297
|
+
timestamp2
|
|
2699
4298
|
);
|
|
2700
4299
|
await withDuplicateKeyClassification(() => execution.execRun(query), {
|
|
2701
4300
|
entity: "edge",
|
|
@@ -2707,9 +4306,9 @@ function createCommonOperationBackend(options) {
|
|
|
2707
4306
|
if (params.length === 0) {
|
|
2708
4307
|
return;
|
|
2709
4308
|
}
|
|
2710
|
-
const
|
|
2711
|
-
for (const chunk2 of
|
|
2712
|
-
const query = operationStrategy.buildInsertEdgesBatch(chunk2,
|
|
4309
|
+
const timestamp2 = nowIso2();
|
|
4310
|
+
for (const chunk2 of chunkNLX5OWK7_cjs.chunk(params, batchConfig.edgeInsertBatchSize)) {
|
|
4311
|
+
const query = operationStrategy.buildInsertEdgesBatch(chunk2, timestamp2);
|
|
2713
4312
|
await withDuplicateKeyClassification(() => execution.execRun(query), {
|
|
2714
4313
|
entity: "edge",
|
|
2715
4314
|
relation: operationStrategy.primaryKeyConstraints.edges,
|
|
@@ -2721,12 +4320,12 @@ function createCommonOperationBackend(options) {
|
|
|
2721
4320
|
if (params.length === 0) {
|
|
2722
4321
|
return [];
|
|
2723
4322
|
}
|
|
2724
|
-
const
|
|
4323
|
+
const timestamp2 = nowIso2();
|
|
2725
4324
|
const allRows = [];
|
|
2726
|
-
for (const chunk2 of
|
|
4325
|
+
for (const chunk2 of chunkNLX5OWK7_cjs.chunk(params, batchConfig.edgeInsertBatchSize)) {
|
|
2727
4326
|
const query = operationStrategy.buildInsertEdgesBatchReturning(
|
|
2728
4327
|
chunk2,
|
|
2729
|
-
|
|
4328
|
+
timestamp2
|
|
2730
4329
|
);
|
|
2731
4330
|
const rows = await withDuplicateKeyClassification(
|
|
2732
4331
|
() => execution.execAll(query),
|
|
@@ -2748,7 +4347,7 @@ function createCommonOperationBackend(options) {
|
|
|
2748
4347
|
async getEdges(graphId, ids) {
|
|
2749
4348
|
if (ids.length === 0) return [];
|
|
2750
4349
|
const allRows = [];
|
|
2751
|
-
for (const chunk2 of
|
|
4350
|
+
for (const chunk2 of chunkNLX5OWK7_cjs.chunk(ids, batchConfig.getEdgesChunkSize)) {
|
|
2752
4351
|
const query = operationStrategy.buildGetEdges(graphId, chunk2);
|
|
2753
4352
|
const rows = await execution.execAll(query);
|
|
2754
4353
|
allRows.push(...rows.map((row) => rowMappers.toEdgeRow(row)));
|
|
@@ -2756,8 +4355,8 @@ function createCommonOperationBackend(options) {
|
|
|
2756
4355
|
return allRows;
|
|
2757
4356
|
},
|
|
2758
4357
|
async updateEdge(params) {
|
|
2759
|
-
const
|
|
2760
|
-
const query = operationStrategy.buildUpdateEdge(params,
|
|
4358
|
+
const timestamp2 = nowIso2();
|
|
4359
|
+
const query = operationStrategy.buildUpdateEdge(params, timestamp2);
|
|
2761
4360
|
const row = await execution.execGet(query);
|
|
2762
4361
|
if (!row)
|
|
2763
4362
|
throw new chunkX4GDXBOP_cjs.DatabaseOperationError(
|
|
@@ -2771,8 +4370,8 @@ function createCommonOperationBackend(options) {
|
|
|
2771
4370
|
return rowMappers.toEdgeRow(row);
|
|
2772
4371
|
},
|
|
2773
4372
|
async deleteEdge(params) {
|
|
2774
|
-
const
|
|
2775
|
-
const query = operationStrategy.buildDeleteEdge(params,
|
|
4373
|
+
const timestamp2 = nowIso2();
|
|
4374
|
+
const query = operationStrategy.buildDeleteEdge(params, timestamp2);
|
|
2776
4375
|
await execution.execRun(query);
|
|
2777
4376
|
},
|
|
2778
4377
|
async hardDeleteEdge(params) {
|
|
@@ -2781,22 +4380,22 @@ function createCommonOperationBackend(options) {
|
|
|
2781
4380
|
},
|
|
2782
4381
|
async deleteEdgesBatch(params) {
|
|
2783
4382
|
if (params.ids.length === 0) return;
|
|
2784
|
-
const
|
|
4383
|
+
const timestamp2 = nowIso2();
|
|
2785
4384
|
const softDeleteChunkSize = Math.max(
|
|
2786
4385
|
1,
|
|
2787
4386
|
batchConfig.getEdgesChunkSize - 1
|
|
2788
4387
|
);
|
|
2789
|
-
for (const chunk2 of
|
|
4388
|
+
for (const chunk2 of chunkNLX5OWK7_cjs.chunk(params.ids, softDeleteChunkSize)) {
|
|
2790
4389
|
const query = operationStrategy.buildDeleteEdgesBatch(
|
|
2791
4390
|
{ graphId: params.graphId, ids: chunk2 },
|
|
2792
|
-
|
|
4391
|
+
timestamp2
|
|
2793
4392
|
);
|
|
2794
4393
|
await execution.execRun(query);
|
|
2795
4394
|
}
|
|
2796
4395
|
},
|
|
2797
4396
|
async hardDeleteEdgesBatch(params) {
|
|
2798
4397
|
if (params.ids.length === 0) return;
|
|
2799
|
-
for (const chunk2 of
|
|
4398
|
+
for (const chunk2 of chunkNLX5OWK7_cjs.chunk(
|
|
2800
4399
|
params.ids,
|
|
2801
4400
|
batchConfig.getEdgesChunkSize
|
|
2802
4401
|
)) {
|
|
@@ -2840,7 +4439,7 @@ function createCommonOperationBackend(options) {
|
|
|
2840
4439
|
async findEdgesByEndpointSet(params) {
|
|
2841
4440
|
const ids = resolveEdgeEndpointIds(params);
|
|
2842
4441
|
const edgeRows = [];
|
|
2843
|
-
for (const idChunk of
|
|
4442
|
+
for (const idChunk of chunkNLX5OWK7_cjs.chunk(
|
|
2844
4443
|
ids,
|
|
2845
4444
|
batchConfig.findEdgesEndpointChunkSize
|
|
2846
4445
|
)) {
|
|
@@ -2857,7 +4456,7 @@ function createCommonOperationBackend(options) {
|
|
|
2857
4456
|
const { edgeKinds, endpoints, endpointChunkSize } = resolveHeterogeneousEdgeRead(params, maxBindParameters);
|
|
2858
4457
|
if (edgeKinds.length === 0 || endpoints.length === 0) return [];
|
|
2859
4458
|
const edgeRows = [];
|
|
2860
|
-
for (const endpointChunk of
|
|
4459
|
+
for (const endpointChunk of chunkNLX5OWK7_cjs.chunk(endpoints, endpointChunkSize)) {
|
|
2861
4460
|
const query = operationStrategy.buildFindEdgesByHeterogeneousEndpointSet(
|
|
2862
4461
|
params,
|
|
2863
4462
|
endpointChunk,
|
|
@@ -2876,7 +4475,7 @@ function createCommonOperationBackend(options) {
|
|
|
2876
4475
|
async insertUnique(params) {
|
|
2877
4476
|
const query = operationStrategy.buildInsertUnique(params);
|
|
2878
4477
|
const result = await execution.execGet(query);
|
|
2879
|
-
if (result && !
|
|
4478
|
+
if (result && !chunkCRZ56SZU_cjs.isSameClaimOwner(
|
|
2880
4479
|
{ concreteKind: result.concrete_kind, nodeId: result.node_id },
|
|
2881
4480
|
claimOwnerOf(params)
|
|
2882
4481
|
)) {
|
|
@@ -2906,7 +4505,7 @@ function createCommonOperationBackend(options) {
|
|
|
2906
4505
|
byTarget.set(targetKey(entry), entry);
|
|
2907
4506
|
continue;
|
|
2908
4507
|
}
|
|
2909
|
-
if (!
|
|
4508
|
+
if (!chunkCRZ56SZU_cjs.isSameClaimOwner(claimOwnerOf(existing), claimOwnerOf(entry))) {
|
|
2910
4509
|
throw new chunkX4GDXBOP_cjs.UniquenessError({
|
|
2911
4510
|
constraintName: entry.constraintName,
|
|
2912
4511
|
kind: existing.concreteKind,
|
|
@@ -2918,7 +4517,7 @@ function createCommonOperationBackend(options) {
|
|
|
2918
4517
|
}
|
|
2919
4518
|
}
|
|
2920
4519
|
const deduped = [...byTarget.values()];
|
|
2921
|
-
for (const chunk2 of
|
|
4520
|
+
for (const chunk2 of chunkNLX5OWK7_cjs.chunk(
|
|
2922
4521
|
deduped,
|
|
2923
4522
|
batchConfig.uniqueInsertBatchSize
|
|
2924
4523
|
)) {
|
|
@@ -2932,7 +4531,7 @@ function createCommonOperationBackend(options) {
|
|
|
2932
4531
|
);
|
|
2933
4532
|
for (const entry of chunk2) {
|
|
2934
4533
|
const owner = ownerByTarget.get(targetKey(entry));
|
|
2935
|
-
if (owner !== void 0 && !
|
|
4534
|
+
if (owner !== void 0 && !chunkCRZ56SZU_cjs.isSameClaimOwner(owner, claimOwnerOf(entry))) {
|
|
2936
4535
|
throw new chunkX4GDXBOP_cjs.UniquenessError({
|
|
2937
4536
|
constraintName: entry.constraintName,
|
|
2938
4537
|
kind: owner.concreteKind,
|
|
@@ -2946,13 +4545,13 @@ function createCommonOperationBackend(options) {
|
|
|
2946
4545
|
}
|
|
2947
4546
|
},
|
|
2948
4547
|
async deleteUnique(params) {
|
|
2949
|
-
const
|
|
2950
|
-
const query = operationStrategy.buildDeleteUnique(params,
|
|
4548
|
+
const timestamp2 = nowIso2();
|
|
4549
|
+
const query = operationStrategy.buildDeleteUnique(params, timestamp2);
|
|
2951
4550
|
await execution.execRun(query);
|
|
2952
4551
|
},
|
|
2953
4552
|
async hardDeleteUniquesByNodeIds(params) {
|
|
2954
4553
|
const nodeIds = [...new Set(params.nodeIds)];
|
|
2955
|
-
for (const chunk2 of
|
|
4554
|
+
for (const chunk2 of chunkNLX5OWK7_cjs.chunk(
|
|
2956
4555
|
nodeIds,
|
|
2957
4556
|
batchConfig.uniqueDeleteChunkSize
|
|
2958
4557
|
)) {
|
|
@@ -2976,7 +4575,7 @@ function createCommonOperationBackend(options) {
|
|
|
2976
4575
|
},
|
|
2977
4576
|
async purgeEdgeClaims(params) {
|
|
2978
4577
|
const edgeIds = [...new Set(params.edgeIds)];
|
|
2979
|
-
for (const chunk2 of
|
|
4578
|
+
for (const chunk2 of chunkNLX5OWK7_cjs.chunk(edgeIds, batchConfig.getEdgesChunkSize)) {
|
|
2980
4579
|
const query = operationStrategy.buildPurgeEdgeClaims({
|
|
2981
4580
|
...params,
|
|
2982
4581
|
edgeIds: chunk2
|
|
@@ -3043,7 +4642,7 @@ function createCommonOperationBackend(options) {
|
|
|
3043
4642
|
async checkUniqueBatch(params) {
|
|
3044
4643
|
if (params.keys.length === 0) return [];
|
|
3045
4644
|
const allRows = [];
|
|
3046
|
-
for (const chunk2 of
|
|
4645
|
+
for (const chunk2 of chunkNLX5OWK7_cjs.chunk(
|
|
3047
4646
|
params.keys,
|
|
3048
4647
|
batchConfig.checkUniqueBatchChunkSize
|
|
3049
4648
|
)) {
|
|
@@ -3109,7 +4708,7 @@ function createCommonOperationBackend(options) {
|
|
|
3109
4708
|
);
|
|
3110
4709
|
await execution.execRun(flip.deactivateAll);
|
|
3111
4710
|
}
|
|
3112
|
-
const
|
|
4711
|
+
const timestamp2 = nowIso2();
|
|
3113
4712
|
const insertQuery = operationStrategy.buildInsertSchema(
|
|
3114
4713
|
{
|
|
3115
4714
|
graphId: params.graphId,
|
|
@@ -3118,7 +4717,7 @@ function createCommonOperationBackend(options) {
|
|
|
3118
4717
|
schemaDoc: params.schemaDoc,
|
|
3119
4718
|
isActive: true
|
|
3120
4719
|
},
|
|
3121
|
-
|
|
4720
|
+
timestamp2
|
|
3122
4721
|
);
|
|
3123
4722
|
const insertedRaw = await execution.execGet(insertQuery);
|
|
3124
4723
|
if (!insertedRaw) {
|
|
@@ -3216,8 +4815,8 @@ async function assertTrustedImportDatabaseEmpty(backend, tableNames) {
|
|
|
3216
4815
|
async function lockPostgresTrustedImportTables(backend, tableNames) {
|
|
3217
4816
|
const executeStatement = requireStatementExecution(backend);
|
|
3218
4817
|
await executeStatement(
|
|
3219
|
-
|
|
3220
|
-
|
|
4818
|
+
chunkH5IJSROF_cjs.asCompiledStatementSql(
|
|
4819
|
+
chunkH5IJSROF_cjs.sql.raw(
|
|
3221
4820
|
`LOCK TABLE ${quoteSqlIdentifier(tableNames.nodes)}, ${quoteSqlIdentifier(tableNames.edges)} IN ACCESS EXCLUSIVE MODE`
|
|
3222
4821
|
)
|
|
3223
4822
|
)
|
|
@@ -3237,8 +4836,8 @@ async function suspendSqliteSecondaryIndexes(backend, tableNames) {
|
|
|
3237
4836
|
);
|
|
3238
4837
|
for (const definition of definitions) {
|
|
3239
4838
|
await executeStatement(
|
|
3240
|
-
|
|
3241
|
-
|
|
4839
|
+
chunkH5IJSROF_cjs.asCompiledStatementSql(
|
|
4840
|
+
chunkH5IJSROF_cjs.sql.raw(`DROP INDEX ${quoteSqlIdentifier(definition.index_name)}`)
|
|
3242
4841
|
)
|
|
3243
4842
|
);
|
|
3244
4843
|
}
|
|
@@ -3268,8 +4867,8 @@ async function suspendPostgresSecondaryIndexes(backend, tableNames) {
|
|
|
3268
4867
|
);
|
|
3269
4868
|
for (const definition of definitions) {
|
|
3270
4869
|
await executeStatement(
|
|
3271
|
-
|
|
3272
|
-
|
|
4870
|
+
chunkH5IJSROF_cjs.asCompiledStatementSql(
|
|
4871
|
+
chunkH5IJSROF_cjs.sql.raw(`DROP INDEX ${quoteSqlIdentifier(definition.index_name)}`)
|
|
3273
4872
|
)
|
|
3274
4873
|
);
|
|
3275
4874
|
}
|
|
@@ -3279,20 +4878,20 @@ async function restoreSecondaryIndexes(backend, definitions) {
|
|
|
3279
4878
|
const executeStatement = requireStatementExecution(backend);
|
|
3280
4879
|
for (const definition of definitions) {
|
|
3281
4880
|
await executeStatement(
|
|
3282
|
-
|
|
4881
|
+
chunkH5IJSROF_cjs.asCompiledStatementSql(chunkH5IJSROF_cjs.sql.raw(definition.index_definition))
|
|
3283
4882
|
);
|
|
3284
4883
|
}
|
|
3285
4884
|
}
|
|
3286
4885
|
async function analyzeImportedTables(backend, tableNames) {
|
|
3287
4886
|
const executeStatement = requireStatementExecution(backend);
|
|
3288
4887
|
await executeStatement(
|
|
3289
|
-
|
|
3290
|
-
|
|
4888
|
+
chunkH5IJSROF_cjs.asCompiledStatementSql(
|
|
4889
|
+
chunkH5IJSROF_cjs.sql.raw(`ANALYZE ${quoteSqlIdentifier(tableNames.nodes)}`)
|
|
3291
4890
|
)
|
|
3292
4891
|
);
|
|
3293
4892
|
await executeStatement(
|
|
3294
|
-
|
|
3295
|
-
|
|
4893
|
+
chunkH5IJSROF_cjs.asCompiledStatementSql(
|
|
4894
|
+
chunkH5IJSROF_cjs.sql.raw(`ANALYZE ${quoteSqlIdentifier(tableNames.edges)}`)
|
|
3296
4895
|
)
|
|
3297
4896
|
);
|
|
3298
4897
|
}
|
|
@@ -3318,7 +4917,7 @@ function createSqliteTrustedImportSession(executionAdapter, tableNames) {
|
|
|
3318
4917
|
return {
|
|
3319
4918
|
async insertNodes(params) {
|
|
3320
4919
|
if (params.length === 0) return;
|
|
3321
|
-
const
|
|
4920
|
+
const timestamp2 = (/* @__PURE__ */ new Date()).toISOString();
|
|
3322
4921
|
await executePreparedRunBatch(
|
|
3323
4922
|
nodeSql,
|
|
3324
4923
|
params.map((item) => [
|
|
@@ -3326,16 +4925,16 @@ function createSqliteTrustedImportSession(executionAdapter, tableNames) {
|
|
|
3326
4925
|
item.kind,
|
|
3327
4926
|
item.id,
|
|
3328
4927
|
JSON.stringify(item.props),
|
|
3329
|
-
chunkM5MSP3BI_cjs.resolveStampedValidityLowerBound(item.validFrom, item.validTo,
|
|
4928
|
+
chunkM5MSP3BI_cjs.resolveStampedValidityLowerBound(item.validFrom, item.validTo, timestamp2) ?? DATABASE_NULL,
|
|
3330
4929
|
item.validTo ?? DATABASE_NULL,
|
|
3331
|
-
|
|
3332
|
-
|
|
4930
|
+
timestamp2,
|
|
4931
|
+
timestamp2
|
|
3333
4932
|
])
|
|
3334
4933
|
);
|
|
3335
4934
|
},
|
|
3336
4935
|
async insertEdges(params) {
|
|
3337
4936
|
if (params.length === 0) return;
|
|
3338
|
-
const
|
|
4937
|
+
const timestamp2 = (/* @__PURE__ */ new Date()).toISOString();
|
|
3339
4938
|
await executePreparedRunBatch(
|
|
3340
4939
|
edgeSql,
|
|
3341
4940
|
params.map((item) => [
|
|
@@ -3347,10 +4946,10 @@ function createSqliteTrustedImportSession(executionAdapter, tableNames) {
|
|
|
3347
4946
|
item.toKind,
|
|
3348
4947
|
item.toId,
|
|
3349
4948
|
JSON.stringify(item.props),
|
|
3350
|
-
chunkM5MSP3BI_cjs.resolveStampedValidityLowerBound(item.validFrom, item.validTo,
|
|
4949
|
+
chunkM5MSP3BI_cjs.resolveStampedValidityLowerBound(item.validFrom, item.validTo, timestamp2) ?? DATABASE_NULL,
|
|
3351
4950
|
item.validTo ?? DATABASE_NULL,
|
|
3352
|
-
|
|
3353
|
-
|
|
4951
|
+
timestamp2,
|
|
4952
|
+
timestamp2
|
|
3354
4953
|
])
|
|
3355
4954
|
);
|
|
3356
4955
|
}
|
|
@@ -3380,7 +4979,7 @@ function createPostgresTrustedImportSession(backend, tableNames) {
|
|
|
3380
4979
|
return {
|
|
3381
4980
|
async insertNodes(params) {
|
|
3382
4981
|
if (params.length === 0) return;
|
|
3383
|
-
const
|
|
4982
|
+
const timestamp2 = (/* @__PURE__ */ new Date()).toISOString();
|
|
3384
4983
|
await executeRaw(nodeSql, [
|
|
3385
4984
|
postgresArray(params.map((item) => item.graphId)),
|
|
3386
4985
|
postgresArray(params.map((item) => item.kind)),
|
|
@@ -3388,16 +4987,16 @@ function createPostgresTrustedImportSession(backend, tableNames) {
|
|
|
3388
4987
|
postgresArray(params.map((item) => JSON.stringify(item.props))),
|
|
3389
4988
|
postgresArray(
|
|
3390
4989
|
params.map(
|
|
3391
|
-
(item) => chunkM5MSP3BI_cjs.resolveStampedValidityLowerBound(item.validFrom, item.validTo,
|
|
4990
|
+
(item) => chunkM5MSP3BI_cjs.resolveStampedValidityLowerBound(item.validFrom, item.validTo, timestamp2) ?? DATABASE_NULL
|
|
3392
4991
|
)
|
|
3393
4992
|
),
|
|
3394
4993
|
postgresArray(params.map((item) => item.validTo ?? DATABASE_NULL)),
|
|
3395
|
-
postgresArray(params.map(() =>
|
|
4994
|
+
postgresArray(params.map(() => timestamp2))
|
|
3396
4995
|
]);
|
|
3397
4996
|
},
|
|
3398
4997
|
async insertEdges(params) {
|
|
3399
4998
|
if (params.length === 0) return;
|
|
3400
|
-
const
|
|
4999
|
+
const timestamp2 = (/* @__PURE__ */ new Date()).toISOString();
|
|
3401
5000
|
await executeRaw(edgeSql, [
|
|
3402
5001
|
postgresArray(params.map((item) => item.graphId)),
|
|
3403
5002
|
postgresArray(params.map((item) => item.id)),
|
|
@@ -3409,11 +5008,11 @@ function createPostgresTrustedImportSession(backend, tableNames) {
|
|
|
3409
5008
|
postgresArray(params.map((item) => JSON.stringify(item.props))),
|
|
3410
5009
|
postgresArray(
|
|
3411
5010
|
params.map(
|
|
3412
|
-
(item) => chunkM5MSP3BI_cjs.resolveStampedValidityLowerBound(item.validFrom, item.validTo,
|
|
5011
|
+
(item) => chunkM5MSP3BI_cjs.resolveStampedValidityLowerBound(item.validFrom, item.validTo, timestamp2) ?? DATABASE_NULL
|
|
3413
5012
|
)
|
|
3414
5013
|
),
|
|
3415
5014
|
postgresArray(params.map((item) => item.validTo ?? DATABASE_NULL)),
|
|
3416
|
-
postgresArray(params.map(() =>
|
|
5015
|
+
postgresArray(params.map(() => timestamp2))
|
|
3417
5016
|
]);
|
|
3418
5017
|
}
|
|
3419
5018
|
};
|
|
@@ -3447,6 +5046,7 @@ exports.SQLITE_KIND_REMOVAL_TIMESTAMPS = SQLITE_KIND_REMOVAL_TIMESTAMPS;
|
|
|
3447
5046
|
exports.analyzeImportedTables = analyzeImportedTables;
|
|
3448
5047
|
exports.assertActiveSchemaVersion = assertActiveSchemaVersion;
|
|
3449
5048
|
exports.assertAdoptedDialect = assertAdoptedDialect;
|
|
5049
|
+
exports.assertBundledCapabilityDeclarations = assertBundledCapabilityDeclarations;
|
|
3450
5050
|
exports.assertTrustedImportDatabaseEmpty = assertTrustedImportDatabaseEmpty;
|
|
3451
5051
|
exports.buildContributionInsertValues = buildContributionInsertValues;
|
|
3452
5052
|
exports.buildContributionOnConflictSet = buildContributionOnConflictSet;
|
|
@@ -3461,11 +5061,24 @@ exports.createCachedTableExistence = createCachedTableExistence;
|
|
|
3461
5061
|
exports.createCommonOperationBackend = createCommonOperationBackend;
|
|
3462
5062
|
exports.createContributionMaterializer = createContributionMaterializer;
|
|
3463
5063
|
exports.createPostgresOperationStrategy = createPostgresOperationStrategy;
|
|
5064
|
+
exports.createPostgresTables = createPostgresTables;
|
|
3464
5065
|
exports.createPostgresTrustedImportSession = createPostgresTrustedImportSession;
|
|
3465
5066
|
exports.createSqliteOperationStrategy = createSqliteOperationStrategy;
|
|
5067
|
+
exports.createSqliteTables = createSqliteTables;
|
|
3466
5068
|
exports.createSqliteTrustedImportSession = createSqliteTrustedImportSession;
|
|
5069
|
+
exports.edgeClaims = edgeClaims;
|
|
5070
|
+
exports.edgeClaims2 = edgeClaims2;
|
|
5071
|
+
exports.edges = edges;
|
|
5072
|
+
exports.edges2 = edges2;
|
|
5073
|
+
exports.fulltext = fulltext;
|
|
3467
5074
|
exports.gateFulltext = gateFulltext;
|
|
3468
5075
|
exports.gateFulltextMethods = gateFulltextMethods;
|
|
5076
|
+
exports.generatePgCreateTableSQL = generatePgCreateTableSQL;
|
|
5077
|
+
exports.generatePostgresDDL = generatePostgresDDL;
|
|
5078
|
+
exports.generatePostgresMigrationSQL = generatePostgresMigrationSQL;
|
|
5079
|
+
exports.generateSqliteCreateTableSQL = generateSqliteCreateTableSQL;
|
|
5080
|
+
exports.generateSqliteDDL = generateSqliteDDL;
|
|
5081
|
+
exports.generateSqliteMigrationSQL = generateSqliteMigrationSQL;
|
|
3469
5082
|
exports.getOrCreateLru = getOrCreateLru;
|
|
3470
5083
|
exports.lockPostgresTrustedImportTables = lockPostgresTrustedImportTables;
|
|
3471
5084
|
exports.mapContributionMaterializationRow = mapContributionMaterializationRow;
|
|
@@ -3473,12 +5086,28 @@ exports.mapHybridSearchRow = mapHybridSearchRow;
|
|
|
3473
5086
|
exports.mapKindRemovalRow = mapKindRemovalRow;
|
|
3474
5087
|
exports.mapMaterializationRow = mapMaterializationRow;
|
|
3475
5088
|
exports.mapVectorWriteError = mapVectorWriteError;
|
|
5089
|
+
exports.nodes = nodes;
|
|
5090
|
+
exports.nodes2 = nodes2;
|
|
5091
|
+
exports.postgresContributions = postgresContributions;
|
|
5092
|
+
exports.recordedClock = recordedClock;
|
|
5093
|
+
exports.recordedClock2 = recordedClock2;
|
|
5094
|
+
exports.recordedEdges = recordedEdges;
|
|
5095
|
+
exports.recordedEdges2 = recordedEdges2;
|
|
5096
|
+
exports.recordedNodes = recordedNodes;
|
|
5097
|
+
exports.recordedNodes2 = recordedNodes2;
|
|
3476
5098
|
exports.restoreSecondaryIndexes = restoreSecondaryIndexes;
|
|
5099
|
+
exports.schemaVersions = schemaVersions;
|
|
5100
|
+
exports.schemaVersions2 = schemaVersions2;
|
|
5101
|
+
exports.sqliteContributions = sqliteContributions;
|
|
3477
5102
|
exports.suspendPostgresSecondaryIndexes = suspendPostgresSecondaryIndexes;
|
|
3478
5103
|
exports.suspendSqliteSecondaryIndexes = suspendSqliteSecondaryIndexes;
|
|
3479
5104
|
exports.tableExistsFromRow = tableExistsFromRow;
|
|
5105
|
+
exports.tables = tables;
|
|
5106
|
+
exports.tables2 = tables2;
|
|
5107
|
+
exports.uniques = uniques;
|
|
5108
|
+
exports.uniques2 = uniques2;
|
|
3480
5109
|
exports.vectorSlotFromCreateIndexParams = vectorSlotFromCreateIndexParams;
|
|
3481
5110
|
exports.vectorSlotFromDropIndexParams = vectorSlotFromDropIndexParams;
|
|
3482
5111
|
exports.vectorSlotFromParams = vectorSlotFromParams;
|
|
3483
|
-
//# sourceMappingURL=chunk-
|
|
3484
|
-
//# sourceMappingURL=chunk-
|
|
5112
|
+
//# sourceMappingURL=chunk-5WWEYV4H.cjs.map
|
|
5113
|
+
//# sourceMappingURL=chunk-5WWEYV4H.cjs.map
|