dineway 0.1.47 → 0.1.48
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 +57 -54
- package/dist/{activity-events-CNk3clTT.mjs → activity-events-C9u37D5z.mjs} +1 -1
- package/dist/api/route-utils.d.mts +8 -22
- package/dist/api/route-utils.mjs +8 -8
- package/dist/api/schemas/index.d.mts +2 -2
- package/dist/api/schemas/index.mjs +3 -3
- package/dist/{api-ePsOhL3q.mjs → api-Eiy8_zVZ.mjs} +63 -16
- package/dist/{apply-BpRBCqUt.mjs → apply-CX3no7XE.mjs} +54 -48
- package/dist/astro/index.d.mts +8 -8
- package/dist/astro/index.mjs +67 -25
- package/dist/astro/middleware/auth.d.mts +7 -7
- package/dist/astro/middleware/auth.mjs +1 -1
- package/dist/astro/middleware/redirect.mjs +4 -4
- package/dist/astro/middleware/request-context.mjs +2 -2
- package/dist/astro/middleware/seed.d.mts +1 -1
- package/dist/astro/middleware/seed.mjs +2 -2
- package/dist/astro/middleware/setup.mjs +1 -1
- package/dist/astro/middleware.d.mts +2 -1
- package/dist/astro/middleware.mjs +362 -143
- package/dist/astro/routes/api/admin/allowed-domains/_domain_.mjs +2 -2
- package/dist/astro/routes/api/admin/allowed-domains/index.mjs +2 -2
- package/dist/astro/routes/api/admin/api-tokens/index.mjs +1 -1
- package/dist/astro/routes/api/admin/briefing.mjs +14 -14
- package/dist/astro/routes/api/admin/byline-fields/_slug_/usage.mjs +2 -2
- package/dist/astro/routes/api/admin/byline-fields/_slug_.mjs +4 -4
- package/dist/astro/routes/api/admin/byline-fields/index.mjs +4 -4
- package/dist/astro/routes/api/admin/byline-fields/reorder.mjs +4 -4
- package/dist/astro/routes/api/admin/bylines/_id_/index.mjs +9 -9
- package/dist/astro/routes/api/admin/bylines/_id_/translations.mjs +9 -9
- package/dist/astro/routes/api/admin/bylines/index.mjs +9 -9
- package/dist/astro/routes/api/admin/comments/_id_/status.mjs +8 -8
- package/dist/astro/routes/api/admin/comments/_id_.mjs +3 -3
- package/dist/astro/routes/api/admin/comments/bulk.mjs +5 -5
- package/dist/astro/routes/api/admin/comments/counts.mjs +3 -3
- package/dist/astro/routes/api/admin/comments/index.mjs +5 -5
- package/dist/astro/routes/api/admin/context/_id_/history.mjs +20 -20
- package/dist/astro/routes/api/admin/context/_id_/index.mjs +20 -20
- package/dist/astro/routes/api/admin/context/_id_/review.mjs +23 -23
- package/dist/astro/routes/api/admin/context/_id_/supersede.mjs +23 -23
- package/dist/astro/routes/api/admin/context/diff.mjs +22 -22
- package/dist/astro/routes/api/admin/context/index.mjs +23 -23
- package/dist/astro/routes/api/admin/context/stale.mjs +22 -22
- package/dist/astro/routes/api/admin/hitl-requests/_id_/index.mjs +21 -21
- package/dist/astro/routes/api/admin/hitl-requests/_id_/resolve.mjs +23 -23
- package/dist/astro/routes/api/admin/hitl-requests/index.mjs +23 -23
- package/dist/astro/routes/api/admin/hooks/exclusive/_hookName_.mjs +20 -20
- package/dist/astro/routes/api/admin/hooks/exclusive/index.mjs +1 -1
- package/dist/astro/routes/api/admin/oauth-clients/_id_.mjs +2 -2
- package/dist/astro/routes/api/admin/oauth-clients/index.mjs +2 -2
- package/dist/astro/routes/api/admin/plugins/_id_/disable.mjs +40 -40
- package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs +40 -40
- package/dist/astro/routes/api/admin/plugins/_id_/index.mjs +35 -35
- package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs +40 -40
- package/dist/astro/routes/api/admin/plugins/_id_/update.mjs +40 -40
- package/dist/astro/routes/api/admin/plugins/index.mjs +35 -35
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs +35 -35
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs +40 -40
- package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs +35 -35
- package/dist/astro/routes/api/admin/plugins/updates.mjs +35 -35
- package/dist/astro/routes/api/admin/review-requests/_id_/index.mjs +3 -3
- package/dist/astro/routes/api/admin/review-requests/_id_/resolve.mjs +22 -22
- package/dist/astro/routes/api/admin/review-requests/index.mjs +5 -5
- package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs +35 -35
- package/dist/astro/routes/api/admin/themes/marketplace/index.mjs +35 -35
- package/dist/astro/routes/api/admin/users/_id_/disable.mjs +1 -1
- package/dist/astro/routes/api/admin/users/_id_/index.mjs +3 -3
- package/dist/astro/routes/api/admin/users/_id_/send-recovery.mjs +2 -2
- package/dist/astro/routes/api/admin/users/index.mjs +2 -2
- package/dist/astro/routes/api/auth/dev-bypass.mjs +1 -1
- package/dist/astro/routes/api/auth/invite/complete.mjs +5 -5
- package/dist/astro/routes/api/auth/invite/index.mjs +4 -4
- package/dist/astro/routes/api/auth/invite/register-options.mjs +4 -4
- package/dist/astro/routes/api/auth/magic-link/send.mjs +4 -4
- package/dist/astro/routes/api/auth/me.mjs +5 -5
- package/dist/astro/routes/api/auth/mode.mjs +1 -1
- package/dist/astro/routes/api/auth/passkey/_id_.mjs +2 -2
- package/dist/astro/routes/api/auth/passkey/options.mjs +4 -4
- package/dist/astro/routes/api/auth/passkey/register/options.mjs +4 -4
- package/dist/astro/routes/api/auth/passkey/register/verify.mjs +5 -5
- package/dist/astro/routes/api/auth/passkey/verify.mjs +5 -5
- package/dist/astro/routes/api/auth/setup-token/index.mjs +2 -2
- package/dist/astro/routes/api/auth/signup/complete.mjs +5 -5
- package/dist/astro/routes/api/auth/signup/request.mjs +4 -4
- package/dist/astro/routes/api/comments/_collection_/_contentId_/index.mjs +9 -9
- package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.mjs +6 -5
- package/dist/astro/routes/api/content/_collection_/_id_/duplicate.mjs +3 -3
- package/dist/astro/routes/api/content/_collection_/_id_/permanent.mjs +3 -3
- package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs +4 -4
- package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs +8 -7
- package/dist/astro/routes/api/content/_collection_/_id_/restore.mjs +3 -3
- package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs +11 -9
- package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs +8 -8
- package/dist/astro/routes/api/content/_collection_/_id_/unpublish.mjs +6 -5
- package/dist/astro/routes/api/content/_collection_/_id_.mjs +8 -7
- package/dist/astro/routes/api/content/_collection_/authors.d.mts +7 -0
- package/dist/astro/routes/api/content/_collection_/authors.mjs +16 -0
- package/dist/astro/routes/api/content/_collection_/index.mjs +5 -5
- package/dist/astro/routes/api/content/_collection_/trash.mjs +2 -2
- package/dist/astro/routes/api/dashboard.mjs +6 -6
- package/dist/astro/routes/api/health.mjs +1 -1
- package/dist/astro/routes/api/import/probe.d.mts +2 -2
- package/dist/astro/routes/api/import/probe.mjs +2 -2
- package/dist/astro/routes/api/import/wordpress/analyze.mjs +3 -3
- package/dist/astro/routes/api/import/wordpress/execute.mjs +23 -23
- package/dist/astro/routes/api/import/wordpress/media.mjs +4 -4
- package/dist/astro/routes/api/import/wordpress/prepare.mjs +26 -26
- package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs +24 -24
- package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs +4 -4
- package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs +24 -24
- package/dist/astro/routes/api/manifest.mjs +3 -3
- package/dist/astro/routes/api/mcp.mjs +46 -46
- package/dist/astro/routes/api/media/_id_/confirm.mjs +4 -4
- package/dist/astro/routes/api/media/_id_.mjs +2 -2
- package/dist/astro/routes/api/media/upload-url.mjs +4 -4
- package/dist/astro/routes/api/media.mjs +4 -4
- package/dist/astro/routes/api/menus/_name_/items/_id_.mjs +23 -23
- package/dist/astro/routes/api/menus/_name_/items.mjs +23 -23
- package/dist/astro/routes/api/menus/_name_/reorder.mjs +23 -23
- package/dist/astro/routes/api/menus/_name_/translations.mjs +23 -23
- package/dist/astro/routes/api/menus/_name_.mjs +23 -23
- package/dist/astro/routes/api/menus/index.mjs +23 -23
- package/dist/astro/routes/api/oauth/authorize.mjs +3 -3
- package/dist/astro/routes/api/oauth/device/authorize.mjs +2 -2
- package/dist/astro/routes/api/oauth/device/code.mjs +2 -2
- package/dist/astro/routes/api/oauth/device/token.mjs +2 -2
- package/dist/astro/routes/api/oauth/register.mjs +2 -2
- package/dist/astro/routes/api/oauth/token/refresh.mjs +2 -2
- package/dist/astro/routes/api/oauth/token/revoke.mjs +2 -2
- package/dist/astro/routes/api/oauth/token.mjs +3 -3
- package/dist/astro/routes/api/openapi.json.mjs +16 -2
- package/dist/astro/routes/api/redirects/404s/index.mjs +6 -6
- package/dist/astro/routes/api/redirects/404s/summary.mjs +6 -6
- package/dist/astro/routes/api/redirects/_id_.mjs +24 -24
- package/dist/astro/routes/api/redirects/index.mjs +24 -24
- package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs +36 -36
- package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs +36 -36
- package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs +36 -36
- package/dist/astro/routes/api/schema/collections/_slug_/index.mjs +36 -36
- package/dist/astro/routes/api/schema/collections/index.mjs +36 -36
- package/dist/astro/routes/api/schema/index.mjs +3 -3
- package/dist/astro/routes/api/schema/orphans/_slug_.mjs +35 -35
- package/dist/astro/routes/api/schema/orphans/index.mjs +35 -35
- package/dist/astro/routes/api/search/enable.mjs +6 -6
- package/dist/astro/routes/api/search/index.mjs +6 -6
- package/dist/astro/routes/api/search/rebuild.mjs +6 -6
- package/dist/astro/routes/api/search/stats.mjs +4 -4
- package/dist/astro/routes/api/search/suggest.mjs +6 -6
- package/dist/astro/routes/api/sections/_slug_.mjs +23 -23
- package/dist/astro/routes/api/sections/index.mjs +23 -23
- package/dist/astro/routes/api/settings/email.mjs +1 -1
- package/dist/astro/routes/api/settings.mjs +23 -23
- package/dist/astro/routes/api/setup/admin-verify.mjs +6 -6
- package/dist/astro/routes/api/setup/admin.mjs +4 -4
- package/dist/astro/routes/api/setup/dev-bypass.mjs +17 -17
- package/dist/astro/routes/api/setup/dev-reset.mjs +1 -1
- package/dist/astro/routes/api/setup/index.mjs +20 -20
- package/dist/astro/routes/api/setup/status.mjs +2 -2
- package/dist/astro/routes/api/snapshot.mjs +2 -2
- package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.mjs +25 -25
- package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs +25 -25
- package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs +25 -25
- package/dist/astro/routes/api/taxonomies/index.mjs +25 -25
- package/dist/astro/routes/api/themes/preview.mjs +2 -2
- package/dist/astro/routes/api/typegen.mjs +3 -3
- package/dist/astro/routes/api/well-known/auth.mjs +3 -3
- package/dist/astro/routes/api/well-known/oauth-authorization-server.mjs +1 -1
- package/dist/astro/routes/api/well-known/oauth-protected-resource.mjs +1 -1
- package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs +22 -22
- package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs +23 -23
- package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs +23 -23
- package/dist/astro/routes/api/widget-areas/_name_.mjs +21 -21
- package/dist/astro/routes/api/widget-areas/index.mjs +23 -23
- package/dist/astro/routes/robots.txt.mjs +45 -22
- package/dist/astro/routes/sitemap-_collection_.xml.mjs +6 -6
- package/dist/astro/routes/sitemap.xml.mjs +6 -6
- package/dist/astro/session-driver.d.mts +1 -1
- package/dist/astro/session-driver.mjs +2 -2
- package/dist/astro/types.d.mts +15 -8
- package/dist/{audit-DuRbTm8L.mjs → audit-D1cbG7xH.mjs} +1 -1
- package/dist/{briefing-C4fJSVYW.mjs → briefing-CObXGOGz.mjs} +1 -1
- package/dist/{briefing-BFEWeJtR.mjs → briefing-gKWiGLt1.mjs} +6 -6
- package/dist/{byline-CXQcMsBu.mjs → byline-1ntDwv8c.mjs} +5 -5
- package/dist/{byline-fields-D7TJ_oHF.mjs → byline-fields-B-ZkoVft.mjs} +2 -2
- package/dist/{byline-fields-Cuo-JI3B.d.mts → byline-fields-BX7rWKNU.d.mts} +54 -30
- package/dist/{byline-fields-Dc7L6Yry.mjs → byline-fields-C9_iaPaM.mjs} +1 -1
- package/dist/{byline-registry-CL8BxPPp.mjs → byline-registry-CUSvkasJ.mjs} +2 -2
- package/dist/{bylines-BgriNlW7.mjs → bylines-DtxChhN_.mjs} +38 -4
- package/dist/{bylines-D2vqm1aZ.mjs → bylines-bC15ZqAv.mjs} +2 -2
- package/dist/{cache-GRK71jOU.mjs → cache-DbKyr60Q.mjs} +2 -2
- package/dist/{chunks-DgEw12Bc.mjs → chunks-C5zp2xir.mjs} +1 -1
- package/dist/cli/index.mjs +42 -31
- package/dist/client/external-auth-headers.d.mts +1 -1
- package/dist/client/index.d.mts +1 -1
- package/dist/{comment-ogMaF1gk.mjs → comment-CXDOQ93N.mjs} +1 -1
- package/dist/{comments-CTSOKrZq.mjs → comments-hK-rdzJ9.mjs} +1 -1
- package/dist/{content-BfyjOiMi.mjs → content-QaryevFO.mjs} +103 -40
- package/dist/{context-ZMHhwzkG.mjs → context-CoYb_fvK.mjs} +7 -7
- package/dist/{context-CdsYb1m8.mjs → context-DBL1ib4v.mjs} +2 -2
- package/dist/{context-route-helpers-YLWx2N1j.mjs → context-route-helpers-CYQVmbIm.mjs} +1 -1
- package/dist/{dashboard-D0gWuzNp.mjs → dashboard-DNlqsknJ.mjs} +4 -4
- package/dist/db/index.d.mts +2 -2
- package/dist/db/index.mjs +1 -1
- package/dist/{default-BHauvIdG.mjs → default-B6iaLvP7.mjs} +4 -2
- package/dist/{device-flow-B3_FEoMI.mjs → device-flow-DygsFPGL.mjs} +3 -3
- package/dist/{fts-manager-EHY2Kes9.mjs → fts-manager-CIZlScg5.mjs} +1 -1
- package/dist/{hitl-requests-B1Zqgut6.mjs → hitl-requests-CGQwOEiq.mjs} +2 -2
- package/dist/{hitl-route-helpers-CjpWUMuw.mjs → hitl-route-helpers-GSDLNPpN.mjs} +3 -3
- package/dist/{index-DJVaYiUV.d.mts → index-CwRuZ-u8.d.mts} +1 -1
- package/dist/index.d.mts +10 -10
- package/dist/index.mjs +51 -51
- package/dist/{jsonld-AcPnCEGD.d.mts → jsonld-DZ67souc.d.mts} +1 -1
- package/dist/{load-BdbvtoDb.mjs → load-xE01Jm0V.mjs} +1 -1
- package/dist/{loader-Y0QvC_QO.mjs → loader-tg63WSY2.mjs} +138 -36
- package/dist/media/index.mjs +1 -1
- package/dist/media/local-runtime.d.mts +7 -7
- package/dist/media/local-runtime.mjs +2 -2
- package/dist/{media-DhBwiCYR.mjs → media-DUAjMfvR.mjs} +1 -1
- package/dist/{menus-fqqzXyHd.mjs → menus-DU1eZqw_.mjs} +13 -8
- package/dist/{menus-BzGQpw9d.mjs → menus-WpFRMXjz.mjs} +2 -2
- package/dist/{normalize-O-hi3a27.mjs → normalize-DUnoXAa9.mjs} +1 -1
- package/dist/{oauth-authorization-DsF81vki.mjs → oauth-authorization-D-1p52Je.mjs} +3 -3
- package/dist/{oauth-clients-Du-V0fEm.mjs → oauth-clients-CzeMGyUU.mjs} +1 -1
- package/dist/page/index.d.mts +2 -2
- package/dist/plugin-utils.d.mts +7 -7
- package/dist/plugins/adapt-sandbox-entry.d.mts +7 -7
- package/dist/{plugins-BQ5Joz6v.mjs → plugins-C57YQi4l.mjs} +195 -5
- package/dist/public-url-B5HaoGzj.d.mts +18 -0
- package/dist/{query-CSx0EdSW.mjs → query-BYc3oruA.mjs} +29 -18
- package/dist/{query-BJuUydtD.mjs → query-DKEwzobh.mjs} +3 -3
- package/dist/{redirect-BqFMj67n.mjs → redirect-C2zXRj3c.mjs} +2 -2
- package/dist/{redirects-CJwHl_YG.mjs → redirects-YZo_znWG.mjs} +4 -4
- package/dist/{redirects-q_cToaHv.mjs → redirects-ocRJmQHP.mjs} +23 -3
- package/dist/{registry-Cq3QRBW2.mjs → registry-CTkbIDB9.mjs} +38 -6
- package/dist/{review-requests-GYqjl2jO.mjs → review-requests-C0un5kdV.mjs} +1 -1
- package/dist/{review-requests-tPw8_pAO.mjs → review-requests-gGMyYYhy.mjs} +1 -1
- package/dist/{runner-DTfG5v0G.mjs → runner-B-tbV751.mjs} +233 -193
- package/dist/{runner-Cnz4dl0f.d.mts → runner-D4FL9usy.d.mts} +1 -1
- package/dist/{runtime-Cd-kjPfN.d.mts → runtime-DEWQpZ-4.d.mts} +154 -22
- package/dist/runtime.d.mts +8 -8
- package/dist/runtime.mjs +2 -2
- package/dist/schema-B6zyB-Xn.mjs +8 -0
- package/dist/{search-BAiFLz81.mjs → search-axGQ1KY3.mjs} +3 -3
- package/dist/{secrets-CPoFLJjm.mjs → secrets-062Izo8i.mjs} +1 -1
- package/dist/{sections-DsuIrFDC.mjs → sections-OLKgXL10.mjs} +2 -2
- package/dist/seed/index.d.mts +2 -2
- package/dist/seed/index.mjs +17 -17
- package/dist/seo/index.d.mts +1 -1
- package/dist/{seo-uMFBaR8G.mjs → seo-Cd45Po8L.mjs} +1 -1
- package/dist/{service-CifrxCru.mjs → service-Bwad8s5h.mjs} +1 -1
- package/dist/{settings-BYGdocdj.mjs → settings-lAHjaUit.mjs} +2 -2
- package/dist/{settings-DNRQuX3d.mjs → settings-yLjz_I4T.mjs} +4 -4
- package/dist/{setup-complete-4EiBS1E5.mjs → setup-complete--PradA4R.mjs} +1 -1
- package/dist/{site-activity-6x1JccoR.mjs → site-activity-D7Xyropw.mjs} +1 -1
- package/dist/{site-context-c1ZFa_OF.mjs → site-context-DaN9Z91j.mjs} +13 -13
- package/dist/{site-url-C-cu8Ff2.mjs → site-url-DpGZo9Z6.mjs} +1 -1
- package/dist/{taxonomies-faQVeMgj.mjs → taxonomies-CNOGeC-3.mjs} +9 -7
- package/dist/{taxonomies-CQFmkP5u.mjs → taxonomies-uXVEoQso.mjs} +3 -3
- package/dist/{taxonomy-BnH-6VsX.mjs → taxonomy-CBmkmMuU.mjs} +2 -2
- package/dist/{types-DEAQG87T.d.mts → types-CwawBUTa.d.mts} +1 -1
- package/dist/{types-B7_vSiPD.d.mts → types-DRIKLmJI.d.mts} +14 -2
- package/dist/{types-UGmU5sWx.d.mts → types-DSPGWjxO.d.mts} +1 -1
- package/dist/{types-Ck7-WoUD.mjs → types-DfuD0Afl.mjs} +9 -2
- package/dist/{types-DYKtk8f1.d.mts → types-eu5UDgHN.d.mts} +22 -0
- package/dist/ui/server-runtime.d.mts +58 -10
- package/dist/ui/server-runtime.mjs +97 -15
- package/dist/{user-CqZwN21P.mjs → user-DtNmjNYt.mjs} +15 -1
- package/dist/{validate-CK4a1sIF.mjs → validate-7SYRbz2f.mjs} +5 -2
- package/dist/{validate-BJuG-ISL.d.mts → validate-BMs11tan.d.mts} +10 -2
- package/dist/version-xlzMSXF2.mjs +6 -0
- package/dist/{widgets-CdDvF4fV.mjs → widgets-DR8EHuRO.mjs} +1 -1
- package/dist/{wordpress-slugs-B6Gw9q3Q.mjs → wordpress-slugs-Dvhxh4cl.mjs} +1 -1
- package/dist/{zod-generator-D1ROBNuC.mjs → zod-generator-BS9-umbk.mjs} +3 -2
- package/package.json +5 -5
- package/src/components/DinewayImage.astro +23 -5
- package/src/components/Image.astro +19 -3
- package/dist/schema-DmHMWnSA.mjs +0 -8
- package/dist/version-Cb1tZ6s_.mjs +0 -6
- /package/dist/{allowed-origins-QirBXiDj.mjs → allowed-origins-DhipQNLb.mjs} +0 -0
- /package/dist/{challenge-store-DFxX0_15.mjs → challenge-store-CRSz-Xim.mjs} +0 -0
- /package/dist/{entity-aliases-uOrKvlPg.mjs → entity-aliases-Egjmqc7I.mjs} +0 -0
- /package/dist/{experimental-workflows-CSMffP6q.mjs → experimental-workflows-Dh4DUoD_.mjs} +0 -0
- /package/dist/{mode-CZqCF9dZ.mjs → mode-CpyEz8pe.mjs} +0 -0
- /package/dist/{options-BF11H_FD.mjs → options-BvJoSSJR.mjs} +0 -0
- /package/dist/{patterns-D9iDO3j8.mjs → patterns-r-0n824Y.mjs} +0 -0
- /package/dist/{provider-loader-B5PMjpN7.d.mts → provider-loader-9it4vd6L.d.mts} +0 -0
- /package/dist/{request-cache-w5cj5itT.mjs → request-cache-CYMbwZc6.mjs} +0 -0
- /package/dist/{transaction-D0FOsb3X.mjs → transaction-CShMWIej.mjs} +0 -0
- /package/dist/{transport-DidKKxvW.d.mts → transport-BnsNxh2l.d.mts} +0 -0
- /package/dist/{types-DbZhHtqS.mjs → types-BO8TGjS8.mjs} +0 -0
|
@@ -25,8 +25,8 @@ var __exportAll = (all, no_symbols) => {
|
|
|
25
25
|
//#endregion
|
|
26
26
|
//#region src/database/migrations/001_initial.ts
|
|
27
27
|
var _001_initial_exports = /* @__PURE__ */ __exportAll({
|
|
28
|
-
down: () => down$
|
|
29
|
-
up: () => up$
|
|
28
|
+
down: () => down$48,
|
|
29
|
+
up: () => up$48
|
|
30
30
|
});
|
|
31
31
|
/**
|
|
32
32
|
* Initial schema migration
|
|
@@ -35,7 +35,7 @@ var _001_initial_exports = /* @__PURE__ */ __exportAll({
|
|
|
35
35
|
* by the SchemaRegistry when collections are added via the admin UI.
|
|
36
36
|
* This migration only creates system tables.
|
|
37
37
|
*/
|
|
38
|
-
async function up$
|
|
38
|
+
async function up$48(db) {
|
|
39
39
|
await db.schema.createTable("revisions").ifNotExists().addColumn("id", "text", (col) => col.primaryKey()).addColumn("collection", "text", (col) => col.notNull()).addColumn("entry_id", "text", (col) => col.notNull()).addColumn("data", "text", (col) => col.notNull()).addColumn("author_id", "text").addColumn("created_at", "text", (col) => col.defaultTo(currentTimestamp(db))).execute();
|
|
40
40
|
await db.schema.createIndex("idx_revisions_entry").ifNotExists().on("revisions").columns(["collection", "entry_id"]).execute();
|
|
41
41
|
await db.schema.createTable("taxonomies").ifNotExists().addColumn("id", "text", (col) => col.primaryKey()).addColumn("name", "text", (col) => col.notNull()).addColumn("slug", "text", (col) => col.notNull()).addColumn("label", "text", (col) => col.notNull()).addColumn("parent_id", "text").addColumn("data", "text").addUniqueConstraint("taxonomies_name_slug_unique", ["name", "slug"]).addForeignKeyConstraint("taxonomies_parent_fk", ["parent_id"], "taxonomies", ["id"], (cb) => cb.onDelete("set null")).execute();
|
|
@@ -55,7 +55,7 @@ async function up$47(db) {
|
|
|
55
55
|
await db.schema.createIndex("idx_audit_action").ifNotExists().on("audit_logs").column("action").execute();
|
|
56
56
|
await db.schema.createIndex("idx_audit_timestamp").ifNotExists().on("audit_logs").column("timestamp").execute();
|
|
57
57
|
}
|
|
58
|
-
async function down$
|
|
58
|
+
async function down$48(db) {
|
|
59
59
|
await db.schema.dropTable("audit_logs").execute();
|
|
60
60
|
await db.schema.dropTable("options").execute();
|
|
61
61
|
await db.schema.dropTable("users").execute();
|
|
@@ -68,26 +68,26 @@ async function down$47(db) {
|
|
|
68
68
|
//#endregion
|
|
69
69
|
//#region src/database/migrations/002_media_status.ts
|
|
70
70
|
var _002_media_status_exports = /* @__PURE__ */ __exportAll({
|
|
71
|
-
down: () => down$
|
|
72
|
-
up: () => up$
|
|
71
|
+
down: () => down$47,
|
|
72
|
+
up: () => up$47
|
|
73
73
|
});
|
|
74
74
|
/**
|
|
75
75
|
* Add status column to media table for tracking upload state.
|
|
76
76
|
* Status values: 'pending' | 'ready' | 'failed'
|
|
77
77
|
*/
|
|
78
|
-
async function up$
|
|
78
|
+
async function up$47(db) {
|
|
79
79
|
await db.schema.alterTable("media").addColumn("status", "text", (col) => col.notNull().defaultTo("ready")).execute();
|
|
80
80
|
await db.schema.createIndex("idx_media_status").on("media").column("status").execute();
|
|
81
81
|
}
|
|
82
|
-
async function down$
|
|
82
|
+
async function down$47(db) {
|
|
83
83
|
await db.schema.dropIndex("idx_media_status").execute();
|
|
84
84
|
}
|
|
85
85
|
|
|
86
86
|
//#endregion
|
|
87
87
|
//#region src/database/migrations/003_schema_registry.ts
|
|
88
88
|
var _003_schema_registry_exports = /* @__PURE__ */ __exportAll({
|
|
89
|
-
down: () => down$
|
|
90
|
-
up: () => up$
|
|
89
|
+
down: () => down$46,
|
|
90
|
+
up: () => up$46
|
|
91
91
|
});
|
|
92
92
|
/**
|
|
93
93
|
* Migration: Schema Registry Tables
|
|
@@ -95,14 +95,14 @@ var _003_schema_registry_exports = /* @__PURE__ */ __exportAll({
|
|
|
95
95
|
* Creates the schema registry tables that store collection and field definitions.
|
|
96
96
|
* This enables dynamic schema management where the database is the source of truth.
|
|
97
97
|
*/
|
|
98
|
-
async function up$
|
|
98
|
+
async function up$46(db) {
|
|
99
99
|
await db.schema.createTable("_dineway_collections").addColumn("id", "text", (col) => col.primaryKey()).addColumn("slug", "text", (col) => col.notNull().unique()).addColumn("label", "text", (col) => col.notNull()).addColumn("label_singular", "text").addColumn("description", "text").addColumn("icon", "text").addColumn("supports", "text").addColumn("source", "text").addColumn("created_at", "text", (col) => col.defaultTo(currentTimestamp(db))).addColumn("updated_at", "text", (col) => col.defaultTo(currentTimestamp(db))).execute();
|
|
100
100
|
await db.schema.createTable("_dineway_fields").addColumn("id", "text", (col) => col.primaryKey()).addColumn("collection_id", "text", (col) => col.notNull()).addColumn("slug", "text", (col) => col.notNull()).addColumn("label", "text", (col) => col.notNull()).addColumn("type", "text", (col) => col.notNull()).addColumn("column_type", "text", (col) => col.notNull()).addColumn("required", "integer", (col) => col.defaultTo(0)).addColumn("unique", "integer", (col) => col.defaultTo(0)).addColumn("default_value", "text").addColumn("validation", "text").addColumn("widget", "text").addColumn("options", "text").addColumn("sort_order", "integer", (col) => col.defaultTo(0)).addColumn("created_at", "text", (col) => col.defaultTo(currentTimestamp(db))).addForeignKeyConstraint("fields_collection_fk", ["collection_id"], "_dineway_collections", ["id"], (cb) => cb.onDelete("cascade")).execute();
|
|
101
101
|
await db.schema.createIndex("idx_fields_collection_slug").on("_dineway_fields").columns(["collection_id", "slug"]).unique().execute();
|
|
102
102
|
await db.schema.createIndex("idx_fields_collection").on("_dineway_fields").column("collection_id").execute();
|
|
103
103
|
await db.schema.createIndex("idx_fields_sort").on("_dineway_fields").columns(["collection_id", "sort_order"]).execute();
|
|
104
104
|
}
|
|
105
|
-
async function down$
|
|
105
|
+
async function down$46(db) {
|
|
106
106
|
await db.schema.dropTable("_dineway_fields").execute();
|
|
107
107
|
await db.schema.dropTable("_dineway_collections").execute();
|
|
108
108
|
}
|
|
@@ -110,8 +110,8 @@ async function down$45(db) {
|
|
|
110
110
|
//#endregion
|
|
111
111
|
//#region src/database/migrations/004_plugins.ts
|
|
112
112
|
var _004_plugins_exports = /* @__PURE__ */ __exportAll({
|
|
113
|
-
down: () => down$
|
|
114
|
-
up: () => up$
|
|
113
|
+
down: () => down$45,
|
|
114
|
+
up: () => up$45
|
|
115
115
|
});
|
|
116
116
|
/**
|
|
117
117
|
* Migration: Plugin System Tables
|
|
@@ -121,7 +121,7 @@ var _004_plugins_exports = /* @__PURE__ */ __exportAll({
|
|
|
121
121
|
*
|
|
122
122
|
* @see PLUGIN-SYSTEM.md § Plugin Storage
|
|
123
123
|
*/
|
|
124
|
-
async function up$
|
|
124
|
+
async function up$45(db) {
|
|
125
125
|
await db.schema.createTable("_plugin_storage").addColumn("plugin_id", "text", (col) => col.notNull()).addColumn("collection", "text", (col) => col.notNull()).addColumn("id", "text", (col) => col.notNull()).addColumn("data", "text", (col) => col.notNull()).addColumn("created_at", "text", (col) => col.defaultTo(currentTimestamp(db))).addColumn("updated_at", "text", (col) => col.defaultTo(currentTimestamp(db))).addPrimaryKeyConstraint("pk_plugin_storage", [
|
|
126
126
|
"plugin_id",
|
|
127
127
|
"collection",
|
|
@@ -139,7 +139,7 @@ async function up$44(db) {
|
|
|
139
139
|
"index_name"
|
|
140
140
|
]).execute();
|
|
141
141
|
}
|
|
142
|
-
async function down$
|
|
142
|
+
async function down$45(db) {
|
|
143
143
|
await db.schema.dropTable("_plugin_indexes").execute();
|
|
144
144
|
await db.schema.dropTable("_plugin_state").execute();
|
|
145
145
|
await db.schema.dropTable("_plugin_storage").execute();
|
|
@@ -148,8 +148,8 @@ async function down$44(db) {
|
|
|
148
148
|
//#endregion
|
|
149
149
|
//#region src/database/migrations/005_menus.ts
|
|
150
150
|
var _005_menus_exports = /* @__PURE__ */ __exportAll({
|
|
151
|
-
down: () => down$
|
|
152
|
-
up: () => up$
|
|
151
|
+
down: () => down$44,
|
|
152
|
+
up: () => up$44
|
|
153
153
|
});
|
|
154
154
|
/**
|
|
155
155
|
* Navigation Menus migration
|
|
@@ -157,13 +157,13 @@ var _005_menus_exports = /* @__PURE__ */ __exportAll({
|
|
|
157
157
|
* Creates tables for admin-editable navigation menus.
|
|
158
158
|
* Menu items can reference content entries, taxonomy terms, or custom URLs.
|
|
159
159
|
*/
|
|
160
|
-
async function up$
|
|
160
|
+
async function up$44(db) {
|
|
161
161
|
await db.schema.createTable("_dineway_menus").addColumn("id", "text", (col) => col.primaryKey()).addColumn("name", "text", (col) => col.notNull().unique()).addColumn("label", "text", (col) => col.notNull()).addColumn("created_at", "text", (col) => col.defaultTo(currentTimestamp(db))).addColumn("updated_at", "text", (col) => col.defaultTo(currentTimestamp(db))).execute();
|
|
162
162
|
await db.schema.createTable("_dineway_menu_items").addColumn("id", "text", (col) => col.primaryKey()).addColumn("menu_id", "text", (col) => col.notNull()).addColumn("parent_id", "text").addColumn("sort_order", "integer", (col) => col.notNull().defaultTo(0)).addColumn("type", "text", (col) => col.notNull()).addColumn("reference_collection", "text").addColumn("reference_id", "text").addColumn("custom_url", "text").addColumn("label", "text", (col) => col.notNull()).addColumn("title_attr", "text").addColumn("target", "text").addColumn("css_classes", "text").addColumn("created_at", "text", (col) => col.defaultTo(currentTimestamp(db))).addForeignKeyConstraint("menu_items_menu_fk", ["menu_id"], "_dineway_menus", ["id"], (cb) => cb.onDelete("cascade")).addForeignKeyConstraint("menu_items_parent_fk", ["parent_id"], "_dineway_menu_items", ["id"], (cb) => cb.onDelete("cascade")).execute();
|
|
163
163
|
await db.schema.createIndex("idx_menu_items_menu").on("_dineway_menu_items").columns(["menu_id", "sort_order"]).execute();
|
|
164
164
|
await db.schema.createIndex("idx_menu_items_parent").on("_dineway_menu_items").column("parent_id").execute();
|
|
165
165
|
}
|
|
166
|
-
async function down$
|
|
166
|
+
async function down$44(db) {
|
|
167
167
|
await db.schema.dropTable("_dineway_menu_items").execute();
|
|
168
168
|
await db.schema.dropTable("_dineway_menus").execute();
|
|
169
169
|
}
|
|
@@ -171,8 +171,8 @@ async function down$43(db) {
|
|
|
171
171
|
//#endregion
|
|
172
172
|
//#region src/database/migrations/006_taxonomy_defs.ts
|
|
173
173
|
var _006_taxonomy_defs_exports = /* @__PURE__ */ __exportAll({
|
|
174
|
-
down: () => down$
|
|
175
|
-
up: () => up$
|
|
174
|
+
down: () => down$43,
|
|
175
|
+
up: () => up$43
|
|
176
176
|
});
|
|
177
177
|
/**
|
|
178
178
|
* Taxonomy definitions migration
|
|
@@ -180,7 +180,7 @@ var _006_taxonomy_defs_exports = /* @__PURE__ */ __exportAll({
|
|
|
180
180
|
* Adds _dineway_taxonomy_defs table to store taxonomy definitions (category, tag, custom)
|
|
181
181
|
* and seeds default category and tag taxonomies.
|
|
182
182
|
*/
|
|
183
|
-
async function up$
|
|
183
|
+
async function up$43(db) {
|
|
184
184
|
await db.schema.createTable("_dineway_taxonomy_defs").addColumn("id", "text", (col) => col.primaryKey()).addColumn("name", "text", (col) => col.notNull().unique()).addColumn("label", "text", (col) => col.notNull()).addColumn("label_singular", "text").addColumn("hierarchical", "integer", (col) => col.defaultTo(0)).addColumn("collections", "text").addColumn("created_at", "text", (col) => col.defaultTo(currentTimestamp(db))).execute();
|
|
185
185
|
await db.insertInto("_dineway_taxonomy_defs").values([{
|
|
186
186
|
id: "taxdef_category",
|
|
@@ -198,22 +198,22 @@ async function up$42(db) {
|
|
|
198
198
|
collections: JSON.stringify(["posts"])
|
|
199
199
|
}]).execute();
|
|
200
200
|
}
|
|
201
|
-
async function down$
|
|
201
|
+
async function down$43(db) {
|
|
202
202
|
await db.schema.dropTable("_dineway_taxonomy_defs").execute();
|
|
203
203
|
}
|
|
204
204
|
|
|
205
205
|
//#endregion
|
|
206
206
|
//#region src/database/migrations/007_widgets.ts
|
|
207
207
|
var _007_widgets_exports = /* @__PURE__ */ __exportAll({
|
|
208
|
-
down: () => down$
|
|
209
|
-
up: () => up$
|
|
208
|
+
down: () => down$42,
|
|
209
|
+
up: () => up$42
|
|
210
210
|
});
|
|
211
|
-
async function up$
|
|
211
|
+
async function up$42(db) {
|
|
212
212
|
await db.schema.createTable("_dineway_widget_areas").addColumn("id", "text", (col) => col.primaryKey()).addColumn("name", "text", (col) => col.notNull().unique()).addColumn("label", "text", (col) => col.notNull()).addColumn("description", "text").addColumn("created_at", "text", (col) => col.defaultTo(sql`CURRENT_TIMESTAMP`)).execute();
|
|
213
213
|
await db.schema.createTable("_dineway_widgets").addColumn("id", "text", (col) => col.primaryKey()).addColumn("area_id", "text", (col) => col.notNull().references("_dineway_widget_areas.id").onDelete("cascade")).addColumn("sort_order", "integer", (col) => col.notNull().defaultTo(0)).addColumn("type", "text", (col) => col.notNull()).addColumn("title", "text").addColumn("content", "text").addColumn("menu_name", "text").addColumn("component_id", "text").addColumn("component_props", "text").addColumn("created_at", "text", (col) => col.defaultTo(sql`CURRENT_TIMESTAMP`)).execute();
|
|
214
214
|
await db.schema.createIndex("idx_widgets_area").on("_dineway_widgets").columns(["area_id", "sort_order"]).execute();
|
|
215
215
|
}
|
|
216
|
-
async function down$
|
|
216
|
+
async function down$42(db) {
|
|
217
217
|
await db.schema.dropTable("_dineway_widgets").execute();
|
|
218
218
|
await db.schema.dropTable("_dineway_widget_areas").execute();
|
|
219
219
|
}
|
|
@@ -221,8 +221,8 @@ async function down$41(db) {
|
|
|
221
221
|
//#endregion
|
|
222
222
|
//#region src/database/migrations/008_auth.ts
|
|
223
223
|
var _008_auth_exports = /* @__PURE__ */ __exportAll({
|
|
224
|
-
down: () => down$
|
|
225
|
-
up: () => up$
|
|
224
|
+
down: () => down$41,
|
|
225
|
+
up: () => up$41
|
|
226
226
|
});
|
|
227
227
|
/**
|
|
228
228
|
* Auth migration - passkey-first authentication
|
|
@@ -236,7 +236,7 @@ var _008_auth_exports = /* @__PURE__ */ __exportAll({
|
|
|
236
236
|
* - Creates oauth_accounts table (external provider links)
|
|
237
237
|
* - Creates allowed_domains table (self-signup)
|
|
238
238
|
*/
|
|
239
|
-
async function up$
|
|
239
|
+
async function up$41(db) {
|
|
240
240
|
await db.schema.createTable("users_new").addColumn("id", "text", (col) => col.primaryKey()).addColumn("email", "text", (col) => col.notNull().unique()).addColumn("name", "text").addColumn("avatar_url", "text").addColumn("role", "integer", (col) => col.notNull().defaultTo(10)).addColumn("email_verified", "integer", (col) => col.notNull().defaultTo(0)).addColumn("data", "text").addColumn("created_at", "text", (col) => col.defaultTo(currentTimestamp(db))).addColumn("updated_at", "text", (col) => col.defaultTo(currentTimestamp(db))).execute();
|
|
241
241
|
await sql`
|
|
242
242
|
INSERT INTO users_new (id, email, name, role, data, created_at, updated_at)
|
|
@@ -269,7 +269,7 @@ async function up$40(db) {
|
|
|
269
269
|
await db.schema.createTable("auth_challenges").addColumn("challenge", "text", (col) => col.primaryKey()).addColumn("type", "text", (col) => col.notNull()).addColumn("user_id", "text").addColumn("data", "text").addColumn("expires_at", "text", (col) => col.notNull()).addColumn("created_at", "text", (col) => col.defaultTo(currentTimestamp(db))).execute();
|
|
270
270
|
await db.schema.createIndex("idx_auth_challenges_expires").on("auth_challenges").column("expires_at").execute();
|
|
271
271
|
}
|
|
272
|
-
async function down$
|
|
272
|
+
async function down$41(db) {
|
|
273
273
|
await db.schema.dropTable("auth_challenges").execute();
|
|
274
274
|
await db.schema.dropTable("allowed_domains").execute();
|
|
275
275
|
await db.schema.dropTable("oauth_accounts").execute();
|
|
@@ -302,8 +302,8 @@ async function down$40(db) {
|
|
|
302
302
|
//#endregion
|
|
303
303
|
//#region src/database/migrations/009_user_disabled.ts
|
|
304
304
|
var _009_user_disabled_exports = /* @__PURE__ */ __exportAll({
|
|
305
|
-
down: () => down$
|
|
306
|
-
up: () => up$
|
|
305
|
+
down: () => down$40,
|
|
306
|
+
up: () => up$40
|
|
307
307
|
});
|
|
308
308
|
/**
|
|
309
309
|
* User disabled column - for soft-disabling users
|
|
@@ -312,19 +312,19 @@ var _009_user_disabled_exports = /* @__PURE__ */ __exportAll({
|
|
|
312
312
|
* - Adds disabled column to users table (INTEGER, default 0)
|
|
313
313
|
* - Disabled users cannot log in
|
|
314
314
|
*/
|
|
315
|
-
async function up$
|
|
315
|
+
async function up$40(db) {
|
|
316
316
|
await sql`ALTER TABLE users ADD COLUMN disabled INTEGER NOT NULL DEFAULT 0`.execute(db);
|
|
317
317
|
await db.schema.createIndex("idx_users_disabled").on("users").column("disabled").execute();
|
|
318
318
|
}
|
|
319
|
-
async function down$
|
|
319
|
+
async function down$40(db) {
|
|
320
320
|
await db.schema.dropIndex("idx_users_disabled").execute();
|
|
321
321
|
}
|
|
322
322
|
|
|
323
323
|
//#endregion
|
|
324
324
|
//#region src/database/migrations/011_sections.ts
|
|
325
325
|
var _011_sections_exports = /* @__PURE__ */ __exportAll({
|
|
326
|
-
down: () => down$
|
|
327
|
-
up: () => up$
|
|
326
|
+
down: () => down$39,
|
|
327
|
+
up: () => up$39
|
|
328
328
|
});
|
|
329
329
|
/**
|
|
330
330
|
* Migration: Add sections tables and performance indexes
|
|
@@ -333,13 +333,13 @@ var _011_sections_exports = /* @__PURE__ */ __exportAll({
|
|
|
333
333
|
* They provide a library of pre-built page sections (heroes, CTAs, testimonials, etc.)
|
|
334
334
|
* that content authors can browse and insert with a single click.
|
|
335
335
|
*/
|
|
336
|
-
async function up$
|
|
336
|
+
async function up$39(db) {
|
|
337
337
|
await db.schema.createTable("_dineway_section_categories").addColumn("id", "text", (col) => col.primaryKey()).addColumn("slug", "text", (col) => col.notNull().unique()).addColumn("label", "text", (col) => col.notNull()).addColumn("sort_order", "integer", (col) => col.defaultTo(0)).addColumn("created_at", "text", (col) => col.defaultTo(sql`CURRENT_TIMESTAMP`)).execute();
|
|
338
338
|
await db.schema.createTable("_dineway_sections").addColumn("id", "text", (col) => col.primaryKey()).addColumn("slug", "text", (col) => col.notNull().unique()).addColumn("title", "text", (col) => col.notNull()).addColumn("description", "text").addColumn("category_id", "text", (col) => col.references("_dineway_section_categories.id").onDelete("set null")).addColumn("keywords", "text").addColumn("content", "text", (col) => col.notNull()).addColumn("preview_media_id", "text").addColumn("source", "text", (col) => col.notNull().defaultTo("user")).addColumn("theme_id", "text").addColumn("created_at", "text", (col) => col.defaultTo(sql`CURRENT_TIMESTAMP`)).addColumn("updated_at", "text", (col) => col.defaultTo(sql`CURRENT_TIMESTAMP`)).execute();
|
|
339
339
|
await db.schema.createIndex("idx_sections_category").on("_dineway_sections").columns(["category_id"]).execute();
|
|
340
340
|
await db.schema.createIndex("idx_sections_source").on("_dineway_sections").columns(["source"]).execute();
|
|
341
341
|
}
|
|
342
|
-
async function down$
|
|
342
|
+
async function down$39(db) {
|
|
343
343
|
await db.schema.dropIndex("idx_sections_source").execute();
|
|
344
344
|
await db.schema.dropIndex("idx_sections_category").execute();
|
|
345
345
|
await db.schema.dropTable("_dineway_sections").execute();
|
|
@@ -349,8 +349,8 @@ async function down$38(db) {
|
|
|
349
349
|
//#endregion
|
|
350
350
|
//#region src/database/migrations/012_search.ts
|
|
351
351
|
var _012_search_exports = /* @__PURE__ */ __exportAll({
|
|
352
|
-
down: () => down$
|
|
353
|
-
up: () => up$
|
|
352
|
+
down: () => down$38,
|
|
353
|
+
up: () => up$38
|
|
354
354
|
});
|
|
355
355
|
/**
|
|
356
356
|
* Migration: Search Support
|
|
@@ -358,11 +358,11 @@ var _012_search_exports = /* @__PURE__ */ __exportAll({
|
|
|
358
358
|
* Adds search configuration to collections and searchable flag to fields.
|
|
359
359
|
* FTS5 tables are created dynamically when search is enabled for a collection.
|
|
360
360
|
*/
|
|
361
|
-
async function up$
|
|
361
|
+
async function up$38(db) {
|
|
362
362
|
await db.schema.alterTable("_dineway_collections").addColumn("search_config", "text").execute();
|
|
363
363
|
await db.schema.alterTable("_dineway_fields").addColumn("searchable", "integer", (col) => col.defaultTo(0)).execute();
|
|
364
364
|
}
|
|
365
|
-
async function down$
|
|
365
|
+
async function down$38(db) {
|
|
366
366
|
await db.schema.alterTable("_dineway_fields").dropColumn("searchable").execute();
|
|
367
367
|
await db.schema.alterTable("_dineway_collections").dropColumn("search_config").execute();
|
|
368
368
|
}
|
|
@@ -370,8 +370,8 @@ async function down$37(db) {
|
|
|
370
370
|
//#endregion
|
|
371
371
|
//#region src/database/migrations/013_scheduled_publishing.ts
|
|
372
372
|
var _013_scheduled_publishing_exports = /* @__PURE__ */ __exportAll({
|
|
373
|
-
down: () => down$
|
|
374
|
-
up: () => up$
|
|
373
|
+
down: () => down$37,
|
|
374
|
+
up: () => up$37
|
|
375
375
|
});
|
|
376
376
|
/**
|
|
377
377
|
* Migration: Add scheduled publishing support
|
|
@@ -380,7 +380,7 @@ var _013_scheduled_publishing_exports = /* @__PURE__ */ __exportAll({
|
|
|
380
380
|
* When scheduled_at is set and status is 'scheduled', the content
|
|
381
381
|
* will be auto-published when the scheduled time is reached.
|
|
382
382
|
*/
|
|
383
|
-
async function up$
|
|
383
|
+
async function up$37(db) {
|
|
384
384
|
const tableNames = await listTablesLike(db, "ec_%");
|
|
385
385
|
for (const tableName of tableNames) {
|
|
386
386
|
const table = { name: tableName };
|
|
@@ -395,7 +395,7 @@ async function up$36(db) {
|
|
|
395
395
|
`.execute(db);
|
|
396
396
|
}
|
|
397
397
|
}
|
|
398
|
-
async function down$
|
|
398
|
+
async function down$37(db) {
|
|
399
399
|
const tableNames = await listTablesLike(db, "ec_%");
|
|
400
400
|
for (const tableName of tableNames) {
|
|
401
401
|
const table = { name: tableName };
|
|
@@ -412,10 +412,10 @@ async function down$36(db) {
|
|
|
412
412
|
//#endregion
|
|
413
413
|
//#region src/database/migrations/014_draft_revisions.ts
|
|
414
414
|
var _014_draft_revisions_exports = /* @__PURE__ */ __exportAll({
|
|
415
|
-
down: () => down$
|
|
416
|
-
up: () => up$
|
|
415
|
+
down: () => down$36,
|
|
416
|
+
up: () => up$36
|
|
417
417
|
});
|
|
418
|
-
async function up$
|
|
418
|
+
async function up$36(db) {
|
|
419
419
|
const tables = await db.selectFrom("_dineway_collections").select("slug").execute();
|
|
420
420
|
for (const row of tables) {
|
|
421
421
|
const tableName = `ec_${row.slug}`;
|
|
@@ -437,7 +437,7 @@ async function up$35(db) {
|
|
|
437
437
|
`.execute(db);
|
|
438
438
|
}
|
|
439
439
|
}
|
|
440
|
-
async function down$
|
|
440
|
+
async function down$36(db) {
|
|
441
441
|
const tables = await db.selectFrom("_dineway_collections").select("slug").execute();
|
|
442
442
|
for (const row of tables) {
|
|
443
443
|
const tableName = `ec_${row.slug}`;
|
|
@@ -461,8 +461,8 @@ async function down$35(db) {
|
|
|
461
461
|
//#endregion
|
|
462
462
|
//#region src/database/migrations/015_indexes.ts
|
|
463
463
|
var _015_indexes_exports = /* @__PURE__ */ __exportAll({
|
|
464
|
-
down: () => down$
|
|
465
|
-
up: () => up$
|
|
464
|
+
down: () => down$35,
|
|
465
|
+
up: () => up$35
|
|
466
466
|
});
|
|
467
467
|
/**
|
|
468
468
|
* Add performance indexes for common query patterns.
|
|
@@ -475,7 +475,7 @@ var _015_indexes_exports = /* @__PURE__ */ __exportAll({
|
|
|
475
475
|
* 5. Retroactive author_id + updated_at on existing ec_* content tables
|
|
476
476
|
* (new tables get these from createContentTable() in registry.ts)
|
|
477
477
|
*/
|
|
478
|
-
async function up$
|
|
478
|
+
async function up$35(db) {
|
|
479
479
|
await db.schema.createIndex("idx_media_mime_type").on("media").column("mime_type").execute();
|
|
480
480
|
await db.schema.createIndex("idx_media_filename").on("media").column("filename").execute();
|
|
481
481
|
await db.schema.createIndex("idx_media_created_at").on("media").column("created_at").execute();
|
|
@@ -495,7 +495,7 @@ async function up$34(db) {
|
|
|
495
495
|
`.execute(db);
|
|
496
496
|
}
|
|
497
497
|
}
|
|
498
|
-
async function down$
|
|
498
|
+
async function down$35(db) {
|
|
499
499
|
const tableNames = await listTablesLike(db, "ec_%");
|
|
500
500
|
for (const tableName of tableNames) {
|
|
501
501
|
const table = { name: tableName };
|
|
@@ -513,8 +513,8 @@ async function down$34(db) {
|
|
|
513
513
|
//#endregion
|
|
514
514
|
//#region src/database/migrations/016_api_tokens.ts
|
|
515
515
|
var _016_api_tokens_exports = /* @__PURE__ */ __exportAll({
|
|
516
|
-
down: () => down$
|
|
517
|
-
up: () => up$
|
|
516
|
+
down: () => down$34,
|
|
517
|
+
up: () => up$34
|
|
518
518
|
});
|
|
519
519
|
/**
|
|
520
520
|
* API token tables for programmatic access.
|
|
@@ -528,7 +528,7 @@ var _016_api_tokens_exports = /* @__PURE__ */ __exportAll({
|
|
|
528
528
|
* created only part of the schema before failing and never recorded the
|
|
529
529
|
* migration as applied.
|
|
530
530
|
*/
|
|
531
|
-
async function up$
|
|
531
|
+
async function up$34(db) {
|
|
532
532
|
await db.schema.createTable("_dineway_api_tokens").ifNotExists().addColumn("id", "text", (col) => col.primaryKey()).addColumn("name", "text", (col) => col.notNull()).addColumn("token_hash", "text", (col) => col.notNull().unique()).addColumn("prefix", "text", (col) => col.notNull()).addColumn("user_id", "text", (col) => col.notNull()).addColumn("scopes", "text", (col) => col.notNull()).addColumn("expires_at", "text").addColumn("last_used_at", "text").addColumn("created_at", "text", (col) => col.defaultTo(currentTimestamp(db))).addForeignKeyConstraint("api_tokens_user_fk", ["user_id"], "users", ["id"], (cb) => cb.onDelete("cascade")).execute();
|
|
533
533
|
await db.schema.createIndex("idx_api_tokens_token_hash").ifNotExists().on("_dineway_api_tokens").column("token_hash").execute();
|
|
534
534
|
await db.schema.createIndex("idx_api_tokens_user_id").ifNotExists().on("_dineway_api_tokens").column("user_id").execute();
|
|
@@ -537,7 +537,7 @@ async function up$33(db) {
|
|
|
537
537
|
await db.schema.createIndex("idx_oauth_tokens_expires").ifNotExists().on("_dineway_oauth_tokens").column("expires_at").execute();
|
|
538
538
|
await db.schema.createTable("_dineway_device_codes").ifNotExists().addColumn("device_code", "text", (col) => col.primaryKey()).addColumn("user_code", "text", (col) => col.notNull().unique()).addColumn("scopes", "text", (col) => col.notNull()).addColumn("user_id", "text").addColumn("status", "text", (col) => col.notNull().defaultTo("pending")).addColumn("expires_at", "text", (col) => col.notNull()).addColumn("interval", "integer", (col) => col.notNull().defaultTo(5)).addColumn("created_at", "text", (col) => col.defaultTo(currentTimestamp(db))).execute();
|
|
539
539
|
}
|
|
540
|
-
async function down$
|
|
540
|
+
async function down$34(db) {
|
|
541
541
|
await db.schema.dropTable("_dineway_device_codes").ifExists().execute();
|
|
542
542
|
await db.schema.dropTable("_dineway_oauth_tokens").ifExists().execute();
|
|
543
543
|
await db.schema.dropTable("_dineway_api_tokens").ifExists().execute();
|
|
@@ -546,8 +546,8 @@ async function down$33(db) {
|
|
|
546
546
|
//#endregion
|
|
547
547
|
//#region src/database/migrations/017_authorization_codes.ts
|
|
548
548
|
var _017_authorization_codes_exports = /* @__PURE__ */ __exportAll({
|
|
549
|
-
down: () => down$
|
|
550
|
-
up: () => up$
|
|
549
|
+
down: () => down$33,
|
|
550
|
+
up: () => up$33
|
|
551
551
|
});
|
|
552
552
|
/**
|
|
553
553
|
* Authorization codes for OAuth 2.1 Authorization Code + PKCE flow.
|
|
@@ -557,20 +557,20 @@ var _017_authorization_codes_exports = /* @__PURE__ */ __exportAll({
|
|
|
557
557
|
*
|
|
558
558
|
* Also adds client_id tracking to oauth_tokens for per-client revocation.
|
|
559
559
|
*/
|
|
560
|
-
async function up$
|
|
560
|
+
async function up$33(db) {
|
|
561
561
|
await db.schema.createTable("_dineway_authorization_codes").addColumn("code_hash", "text", (col) => col.primaryKey()).addColumn("client_id", "text", (col) => col.notNull()).addColumn("redirect_uri", "text", (col) => col.notNull()).addColumn("user_id", "text", (col) => col.notNull()).addColumn("scopes", "text", (col) => col.notNull()).addColumn("code_challenge", "text", (col) => col.notNull()).addColumn("code_challenge_method", "text", (col) => col.notNull().defaultTo("S256")).addColumn("resource", "text").addColumn("expires_at", "text", (col) => col.notNull()).addColumn("created_at", "text", (col) => col.defaultTo(currentTimestamp(db))).addForeignKeyConstraint("auth_codes_user_fk", ["user_id"], "users", ["id"], (cb) => cb.onDelete("cascade")).execute();
|
|
562
562
|
await db.schema.createIndex("idx_auth_codes_expires").on("_dineway_authorization_codes").column("expires_at").execute();
|
|
563
563
|
await sql`ALTER TABLE _dineway_oauth_tokens ADD COLUMN client_id TEXT`.execute(db);
|
|
564
564
|
}
|
|
565
|
-
async function down$
|
|
565
|
+
async function down$33(db) {
|
|
566
566
|
await db.schema.dropTable("_dineway_authorization_codes").execute();
|
|
567
567
|
}
|
|
568
568
|
|
|
569
569
|
//#endregion
|
|
570
570
|
//#region src/database/migrations/018_seo.ts
|
|
571
571
|
var _018_seo_exports = /* @__PURE__ */ __exportAll({
|
|
572
|
-
down: () => down$
|
|
573
|
-
up: () => up$
|
|
572
|
+
down: () => down$32,
|
|
573
|
+
up: () => up$32
|
|
574
574
|
});
|
|
575
575
|
/**
|
|
576
576
|
* Migration: SEO support
|
|
@@ -583,7 +583,7 @@ var _018_seo_exports = /* @__PURE__ */ __exportAll({
|
|
|
583
583
|
* need it. The `has_seo` flag controls whether the admin shows SEO fields
|
|
584
584
|
* and whether the collection's content appears in sitemaps.
|
|
585
585
|
*/
|
|
586
|
-
async function up$
|
|
586
|
+
async function up$32(db) {
|
|
587
587
|
await db.schema.createTable("_dineway_seo").addColumn("collection", "text", (col) => col.notNull()).addColumn("content_id", "text", (col) => col.notNull()).addColumn("seo_title", "text").addColumn("seo_description", "text").addColumn("seo_image", "text").addColumn("seo_canonical", "text").addColumn("seo_no_index", "integer", (col) => col.notNull().defaultTo(0)).addColumn("created_at", "text", (col) => col.notNull().defaultTo(currentTimestamp(db))).addColumn("updated_at", "text", (col) => col.notNull().defaultTo(currentTimestamp(db))).addPrimaryKeyConstraint("_dineway_seo_pk", ["collection", "content_id"]).execute();
|
|
588
588
|
await sql`
|
|
589
589
|
CREATE INDEX idx_dineway_seo_collection
|
|
@@ -594,7 +594,7 @@ async function up$31(db) {
|
|
|
594
594
|
ADD COLUMN has_seo INTEGER NOT NULL DEFAULT 0
|
|
595
595
|
`.execute(db);
|
|
596
596
|
}
|
|
597
|
-
async function down$
|
|
597
|
+
async function down$32(db) {
|
|
598
598
|
await sql`DROP TABLE IF EXISTS _dineway_seo`.execute(db);
|
|
599
599
|
await sql`
|
|
600
600
|
ALTER TABLE _dineway_collections
|
|
@@ -605,8 +605,8 @@ async function down$31(db) {
|
|
|
605
605
|
//#endregion
|
|
606
606
|
//#region src/database/migrations/019_i18n.ts
|
|
607
607
|
var _019_i18n_exports = /* @__PURE__ */ __exportAll({
|
|
608
|
-
down: () => down$
|
|
609
|
-
up: () => up$
|
|
608
|
+
down: () => down$31,
|
|
609
|
+
up: () => up$31
|
|
610
610
|
});
|
|
611
611
|
/**
|
|
612
612
|
* Quote an identifier for use in raw SQL. Escapes embedded double-quotes
|
|
@@ -719,7 +719,7 @@ async function upPostgres(db) {
|
|
|
719
719
|
ADD COLUMN translatable INTEGER NOT NULL DEFAULT 1
|
|
720
720
|
`.execute(db);
|
|
721
721
|
}
|
|
722
|
-
async function up$
|
|
722
|
+
async function up$31(db) {
|
|
723
723
|
if (!isSqlite(db)) return upPostgres(db);
|
|
724
724
|
const orphanedTmps = await listTablesLike(db, "ec_%_i18n_tmp");
|
|
725
725
|
for (const tmpName of orphanedTmps) {
|
|
@@ -836,7 +836,7 @@ async function downPostgres(db) {
|
|
|
836
836
|
await sql`ALTER TABLE ${sql.ref(t)} DROP COLUMN translation_group`.execute(db);
|
|
837
837
|
}
|
|
838
838
|
}
|
|
839
|
-
async function down$
|
|
839
|
+
async function down$31(db) {
|
|
840
840
|
if (!isSqlite(db)) return downPostgres(db);
|
|
841
841
|
await sql`
|
|
842
842
|
ALTER TABLE _dineway_fields
|
|
@@ -943,8 +943,8 @@ async function down$30(db) {
|
|
|
943
943
|
//#endregion
|
|
944
944
|
//#region src/database/migrations/020_collection_url_pattern.ts
|
|
945
945
|
var _020_collection_url_pattern_exports = /* @__PURE__ */ __exportAll({
|
|
946
|
-
down: () => down$
|
|
947
|
-
up: () => up$
|
|
946
|
+
down: () => down$30,
|
|
947
|
+
up: () => up$30
|
|
948
948
|
});
|
|
949
949
|
/**
|
|
950
950
|
* Migration: URL pattern for collections
|
|
@@ -953,13 +953,13 @@ var _020_collection_url_pattern_exports = /* @__PURE__ */ __exportAll({
|
|
|
953
953
|
* can declare its own URL structure (e.g. "/{slug}" for pages, "/blog/{slug}"
|
|
954
954
|
* for posts). Used for menu URL resolution, sitemaps, and path-based lookups.
|
|
955
955
|
*/
|
|
956
|
-
async function up$
|
|
956
|
+
async function up$30(db) {
|
|
957
957
|
await sql`
|
|
958
958
|
ALTER TABLE _dineway_collections
|
|
959
959
|
ADD COLUMN url_pattern TEXT
|
|
960
960
|
`.execute(db);
|
|
961
961
|
}
|
|
962
|
-
async function down$
|
|
962
|
+
async function down$30(db) {
|
|
963
963
|
await sql`
|
|
964
964
|
ALTER TABLE _dineway_collections
|
|
965
965
|
DROP COLUMN url_pattern
|
|
@@ -969,8 +969,8 @@ async function down$29(db) {
|
|
|
969
969
|
//#endregion
|
|
970
970
|
//#region src/database/migrations/021_remove_section_categories.ts
|
|
971
971
|
var _021_remove_section_categories_exports = /* @__PURE__ */ __exportAll({
|
|
972
|
-
down: () => down$
|
|
973
|
-
up: () => up$
|
|
972
|
+
down: () => down$29,
|
|
973
|
+
up: () => up$29
|
|
974
974
|
});
|
|
975
975
|
/**
|
|
976
976
|
* Migration: Remove section categories
|
|
@@ -979,12 +979,12 @@ var _021_remove_section_categories_exports = /* @__PURE__ */ __exportAll({
|
|
|
979
979
|
* Rather than building the missing UI for a feature with very little need at this stage,
|
|
980
980
|
* we're removing the feature entirely.
|
|
981
981
|
*/
|
|
982
|
-
async function up$
|
|
982
|
+
async function up$29(db) {
|
|
983
983
|
await db.schema.dropIndex("idx_sections_category").ifExists().execute();
|
|
984
984
|
await db.schema.alterTable("_dineway_sections").dropColumn("category_id").execute();
|
|
985
985
|
await db.schema.dropTable("_dineway_section_categories").execute();
|
|
986
986
|
}
|
|
987
|
-
async function down$
|
|
987
|
+
async function down$29(db) {
|
|
988
988
|
await db.schema.createTable("_dineway_section_categories").addColumn("id", "text", (col) => col.primaryKey()).addColumn("slug", "text", (col) => col.notNull().unique()).addColumn("label", "text", (col) => col.notNull()).addColumn("sort_order", "integer", (col) => col.defaultTo(0)).addColumn("created_at", "text", (col) => col.defaultTo(sql`CURRENT_TIMESTAMP`)).execute();
|
|
989
989
|
await db.schema.alterTable("_dineway_sections").addColumn("category_id", "text", (col) => col.references("_dineway_section_categories.id").onDelete("set null")).execute();
|
|
990
990
|
await db.schema.createIndex("idx_sections_category").on("_dineway_sections").columns(["category_id"]).execute();
|
|
@@ -993,8 +993,8 @@ async function down$28(db) {
|
|
|
993
993
|
//#endregion
|
|
994
994
|
//#region src/database/migrations/022_marketplace_plugin_state.ts
|
|
995
995
|
var _022_marketplace_plugin_state_exports = /* @__PURE__ */ __exportAll({
|
|
996
|
-
down: () => down$
|
|
997
|
-
up: () => up$
|
|
996
|
+
down: () => down$28,
|
|
997
|
+
up: () => up$28
|
|
998
998
|
});
|
|
999
999
|
/**
|
|
1000
1000
|
* Migration: Add marketplace fields to _plugin_state
|
|
@@ -1003,7 +1003,7 @@ var _022_marketplace_plugin_state_exports = /* @__PURE__ */ __exportAll({
|
|
|
1003
1003
|
* whether a plugin was installed from config or marketplace,
|
|
1004
1004
|
* and which marketplace version is installed.
|
|
1005
1005
|
*/
|
|
1006
|
-
async function up$
|
|
1006
|
+
async function up$28(db) {
|
|
1007
1007
|
await sql`
|
|
1008
1008
|
ALTER TABLE _plugin_state
|
|
1009
1009
|
ADD COLUMN source TEXT NOT NULL DEFAULT 'config'
|
|
@@ -1018,7 +1018,7 @@ async function up$27(db) {
|
|
|
1018
1018
|
WHERE source = 'marketplace'
|
|
1019
1019
|
`.execute(db);
|
|
1020
1020
|
}
|
|
1021
|
-
async function down$
|
|
1021
|
+
async function down$28(db) {
|
|
1022
1022
|
await sql`
|
|
1023
1023
|
DROP INDEX IF EXISTS idx_plugin_state_source
|
|
1024
1024
|
`.execute(db);
|
|
@@ -1035,8 +1035,8 @@ async function down$27(db) {
|
|
|
1035
1035
|
//#endregion
|
|
1036
1036
|
//#region src/database/migrations/023_plugin_metadata.ts
|
|
1037
1037
|
var _023_plugin_metadata_exports = /* @__PURE__ */ __exportAll({
|
|
1038
|
-
down: () => down$
|
|
1039
|
-
up: () => up$
|
|
1038
|
+
down: () => down$27,
|
|
1039
|
+
up: () => up$27
|
|
1040
1040
|
});
|
|
1041
1041
|
/**
|
|
1042
1042
|
* Migration: Add display metadata to _plugin_state
|
|
@@ -1045,7 +1045,7 @@ var _023_plugin_metadata_exports = /* @__PURE__ */ __exportAll({
|
|
|
1045
1045
|
* so the admin UI can show meaningful info without re-fetching
|
|
1046
1046
|
* from the marketplace on every page load.
|
|
1047
1047
|
*/
|
|
1048
|
-
async function up$
|
|
1048
|
+
async function up$27(db) {
|
|
1049
1049
|
await sql`
|
|
1050
1050
|
ALTER TABLE _plugin_state
|
|
1051
1051
|
ADD COLUMN display_name TEXT
|
|
@@ -1055,7 +1055,7 @@ async function up$26(db) {
|
|
|
1055
1055
|
ADD COLUMN description TEXT
|
|
1056
1056
|
`.execute(db);
|
|
1057
1057
|
}
|
|
1058
|
-
async function down$
|
|
1058
|
+
async function down$27(db) {
|
|
1059
1059
|
await sql`
|
|
1060
1060
|
ALTER TABLE _plugin_state
|
|
1061
1061
|
DROP COLUMN description
|
|
@@ -1069,8 +1069,8 @@ async function down$26(db) {
|
|
|
1069
1069
|
//#endregion
|
|
1070
1070
|
//#region src/database/migrations/024_media_placeholders.ts
|
|
1071
1071
|
var _024_media_placeholders_exports = /* @__PURE__ */ __exportAll({
|
|
1072
|
-
down: () => down$
|
|
1073
|
-
up: () => up$
|
|
1072
|
+
down: () => down$26,
|
|
1073
|
+
up: () => up$26
|
|
1074
1074
|
});
|
|
1075
1075
|
/**
|
|
1076
1076
|
* Migration: Add placeholder columns to media table
|
|
@@ -1078,7 +1078,7 @@ var _024_media_placeholders_exports = /* @__PURE__ */ __exportAll({
|
|
|
1078
1078
|
* Stores blurhash and dominant_color for LQIP (Low Quality Image Placeholder)
|
|
1079
1079
|
* support. Generated at upload time from image pixel data.
|
|
1080
1080
|
*/
|
|
1081
|
-
async function up$
|
|
1081
|
+
async function up$26(db) {
|
|
1082
1082
|
await sql`
|
|
1083
1083
|
ALTER TABLE media
|
|
1084
1084
|
ADD COLUMN blurhash TEXT
|
|
@@ -1088,7 +1088,7 @@ async function up$25(db) {
|
|
|
1088
1088
|
ADD COLUMN dominant_color TEXT
|
|
1089
1089
|
`.execute(db);
|
|
1090
1090
|
}
|
|
1091
|
-
async function down$
|
|
1091
|
+
async function down$26(db) {
|
|
1092
1092
|
await sql`
|
|
1093
1093
|
ALTER TABLE media
|
|
1094
1094
|
DROP COLUMN dominant_color
|
|
@@ -1102,8 +1102,8 @@ async function down$25(db) {
|
|
|
1102
1102
|
//#endregion
|
|
1103
1103
|
//#region src/database/migrations/025_oauth_clients.ts
|
|
1104
1104
|
var _025_oauth_clients_exports = /* @__PURE__ */ __exportAll({
|
|
1105
|
-
down: () => down$
|
|
1106
|
-
up: () => up$
|
|
1105
|
+
down: () => down$25,
|
|
1106
|
+
up: () => up$25
|
|
1107
1107
|
});
|
|
1108
1108
|
/**
|
|
1109
1109
|
* Migration: Create OAuth clients table
|
|
@@ -1114,18 +1114,18 @@ var _025_oauth_clients_exports = /* @__PURE__ */ __exportAll({
|
|
|
1114
1114
|
* Each client has a set of pre-registered redirect URIs (JSON array).
|
|
1115
1115
|
* The authorize endpoint rejects any redirect_uri not in the client's list.
|
|
1116
1116
|
*/
|
|
1117
|
-
async function up$
|
|
1117
|
+
async function up$25(db) {
|
|
1118
1118
|
await db.schema.createTable("_dineway_oauth_clients").addColumn("id", "text", (col) => col.primaryKey()).addColumn("name", "text", (col) => col.notNull()).addColumn("redirect_uris", "text", (col) => col.notNull()).addColumn("scopes", "text").addColumn("created_at", "text", (col) => col.defaultTo(currentTimestamp(db))).addColumn("updated_at", "text", (col) => col.defaultTo(currentTimestamp(db))).execute();
|
|
1119
1119
|
}
|
|
1120
|
-
async function down$
|
|
1120
|
+
async function down$25(db) {
|
|
1121
1121
|
await db.schema.dropTable("_dineway_oauth_clients").execute();
|
|
1122
1122
|
}
|
|
1123
1123
|
|
|
1124
1124
|
//#endregion
|
|
1125
1125
|
//#region src/database/migrations/026_cron_tasks.ts
|
|
1126
1126
|
var _026_cron_tasks_exports = /* @__PURE__ */ __exportAll({
|
|
1127
|
-
down: () => down$
|
|
1128
|
-
up: () => up$
|
|
1127
|
+
down: () => down$24,
|
|
1128
|
+
up: () => up$24
|
|
1129
1129
|
});
|
|
1130
1130
|
/**
|
|
1131
1131
|
* Migration: Create cron tasks table for plugin scheduled tasks.
|
|
@@ -1136,7 +1136,7 @@ var _026_cron_tasks_exports = /* @__PURE__ */ __exportAll({
|
|
|
1136
1136
|
* The `next_run_at` + `status` + `enabled` index drives the "find overdue
|
|
1137
1137
|
* tasks" query used by CronExecutor.tick().
|
|
1138
1138
|
*/
|
|
1139
|
-
async function up$
|
|
1139
|
+
async function up$24(db) {
|
|
1140
1140
|
await db.schema.createTable("_dineway_cron_tasks").addColumn("id", "text", (col) => col.primaryKey()).addColumn("plugin_id", "text", (col) => col.notNull()).addColumn("task_name", "text", (col) => col.notNull()).addColumn("schedule", "text", (col) => col.notNull()).addColumn("is_oneshot", "integer", (col) => col.notNull().defaultTo(0)).addColumn("data", "text").addColumn("next_run_at", "text", (col) => col.notNull()).addColumn("last_run_at", "text").addColumn("status", "text", (col) => col.notNull().defaultTo("idle")).addColumn("locked_at", "text").addColumn("enabled", "integer", (col) => col.notNull().defaultTo(1)).addColumn("created_at", "text", (col) => col.defaultTo(currentTimestamp(db))).addUniqueConstraint("uq_cron_tasks_plugin_task", ["plugin_id", "task_name"]).execute();
|
|
1141
1141
|
await db.schema.createIndex("idx_cron_tasks_due").on("_dineway_cron_tasks").columns([
|
|
1142
1142
|
"enabled",
|
|
@@ -1145,17 +1145,17 @@ async function up$23(db) {
|
|
|
1145
1145
|
]).execute();
|
|
1146
1146
|
await db.schema.createIndex("idx_cron_tasks_plugin").on("_dineway_cron_tasks").column("plugin_id").execute();
|
|
1147
1147
|
}
|
|
1148
|
-
async function down$
|
|
1148
|
+
async function down$24(db) {
|
|
1149
1149
|
await db.schema.dropTable("_dineway_cron_tasks").execute();
|
|
1150
1150
|
}
|
|
1151
1151
|
|
|
1152
1152
|
//#endregion
|
|
1153
1153
|
//#region src/database/migrations/027_comments.ts
|
|
1154
1154
|
var _027_comments_exports = /* @__PURE__ */ __exportAll({
|
|
1155
|
-
down: () => down$
|
|
1156
|
-
up: () => up$
|
|
1155
|
+
down: () => down$23,
|
|
1156
|
+
up: () => up$23
|
|
1157
1157
|
});
|
|
1158
|
-
async function up$
|
|
1158
|
+
async function up$23(db) {
|
|
1159
1159
|
await db.schema.createTable("_dineway_comments").addColumn("id", "text", (col) => col.primaryKey()).addColumn("collection", "text", (col) => col.notNull()).addColumn("content_id", "text", (col) => col.notNull()).addColumn("parent_id", "text", (col) => col.references("_dineway_comments.id").onDelete("cascade")).addColumn("author_name", "text", (col) => col.notNull()).addColumn("author_email", "text", (col) => col.notNull()).addColumn("author_url", "text").addColumn("author_user_id", "text", (col) => col.references("users.id").onDelete("set null")).addColumn("body", "text", (col) => col.notNull()).addColumn("status", "text", (col) => col.notNull().defaultTo("pending")).addColumn("ip_hash", "text").addColumn("user_agent", "text").addColumn("moderation_metadata", "text").addColumn("created_at", "text", (col) => col.defaultTo(currentTimestamp(db))).addColumn("updated_at", "text", (col) => col.defaultTo(currentTimestamp(db))).execute();
|
|
1160
1160
|
await db.schema.createIndex("idx_comments_content").on("_dineway_comments").columns([
|
|
1161
1161
|
"collection",
|
|
@@ -1171,30 +1171,30 @@ async function up$22(db) {
|
|
|
1171
1171
|
await db.schema.alterTable("_dineway_collections").addColumn("comments_closed_after_days", "integer", (col) => col.defaultTo(90)).execute();
|
|
1172
1172
|
await db.schema.alterTable("_dineway_collections").addColumn("comments_auto_approve_users", "integer", (col) => col.defaultTo(1)).execute();
|
|
1173
1173
|
}
|
|
1174
|
-
async function down$
|
|
1174
|
+
async function down$23(db) {
|
|
1175
1175
|
await db.schema.dropTable("_dineway_comments").execute();
|
|
1176
1176
|
}
|
|
1177
1177
|
|
|
1178
1178
|
//#endregion
|
|
1179
1179
|
//#region src/database/migrations/028_drop_author_url.ts
|
|
1180
1180
|
var _028_drop_author_url_exports = /* @__PURE__ */ __exportAll({
|
|
1181
|
-
down: () => down$
|
|
1182
|
-
up: () => up$
|
|
1181
|
+
down: () => down$22,
|
|
1182
|
+
up: () => up$22
|
|
1183
1183
|
});
|
|
1184
|
-
async function up$
|
|
1184
|
+
async function up$22(db) {
|
|
1185
1185
|
await sql`ALTER TABLE _dineway_comments DROP COLUMN author_url`.execute(db);
|
|
1186
1186
|
}
|
|
1187
|
-
async function down$
|
|
1187
|
+
async function down$22(db) {
|
|
1188
1188
|
await db.schema.alterTable("_dineway_comments").addColumn("author_url", "text").execute();
|
|
1189
1189
|
}
|
|
1190
1190
|
|
|
1191
1191
|
//#endregion
|
|
1192
1192
|
//#region src/database/migrations/029_redirects.ts
|
|
1193
1193
|
var _029_redirects_exports = /* @__PURE__ */ __exportAll({
|
|
1194
|
-
down: () => down$
|
|
1195
|
-
up: () => up$
|
|
1194
|
+
down: () => down$21,
|
|
1195
|
+
up: () => up$21
|
|
1196
1196
|
});
|
|
1197
|
-
async function up$
|
|
1197
|
+
async function up$21(db) {
|
|
1198
1198
|
await db.schema.createTable("_dineway_redirects").addColumn("id", "text", (col) => col.primaryKey()).addColumn("source", "text", (col) => col.notNull()).addColumn("destination", "text", (col) => col.notNull()).addColumn("type", "integer", (col) => col.notNull().defaultTo(301)).addColumn("is_pattern", "integer", (col) => col.notNull().defaultTo(0)).addColumn("enabled", "integer", (col) => col.notNull().defaultTo(1)).addColumn("hits", "integer", (col) => col.notNull().defaultTo(0)).addColumn("last_hit_at", "text").addColumn("group_name", "text").addColumn("auto", "integer", (col) => col.notNull().defaultTo(0)).addColumn("created_at", "text", (col) => col.defaultTo(currentTimestamp(db))).addColumn("updated_at", "text", (col) => col.defaultTo(currentTimestamp(db))).execute();
|
|
1199
1199
|
await db.schema.createIndex("idx_redirects_source").on("_dineway_redirects").column("source").execute();
|
|
1200
1200
|
await db.schema.createIndex("idx_redirects_enabled").on("_dineway_redirects").column("enabled").execute();
|
|
@@ -1203,7 +1203,7 @@ async function up$20(db) {
|
|
|
1203
1203
|
await db.schema.createIndex("idx_404_log_path").on("_dineway_404_log").column("path").execute();
|
|
1204
1204
|
await db.schema.createIndex("idx_404_log_created").on("_dineway_404_log").column("created_at").execute();
|
|
1205
1205
|
}
|
|
1206
|
-
async function down$
|
|
1206
|
+
async function down$21(db) {
|
|
1207
1207
|
await db.schema.dropTable("_dineway_404_log").execute();
|
|
1208
1208
|
await db.schema.dropTable("_dineway_redirects").execute();
|
|
1209
1209
|
}
|
|
@@ -1211,8 +1211,8 @@ async function down$20(db) {
|
|
|
1211
1211
|
//#endregion
|
|
1212
1212
|
//#region src/database/migrations/030_widen_scheduled_index.ts
|
|
1213
1213
|
var _030_widen_scheduled_index_exports = /* @__PURE__ */ __exportAll({
|
|
1214
|
-
down: () => down$
|
|
1215
|
-
up: () => up$
|
|
1214
|
+
down: () => down$20,
|
|
1215
|
+
up: () => up$20
|
|
1216
1216
|
});
|
|
1217
1217
|
/**
|
|
1218
1218
|
* Migration: Widen scheduled publishing index
|
|
@@ -1221,7 +1221,7 @@ var _030_widen_scheduled_index_exports = /* @__PURE__ */ __exportAll({
|
|
|
1221
1221
|
* Published posts can now have scheduled draft changes, so widen the
|
|
1222
1222
|
* index to cover all rows where scheduled_at IS NOT NULL.
|
|
1223
1223
|
*/
|
|
1224
|
-
async function up$
|
|
1224
|
+
async function up$20(db) {
|
|
1225
1225
|
const tableNames = await listTablesLike(db, "ec_%");
|
|
1226
1226
|
for (const tableName of tableNames) {
|
|
1227
1227
|
const table = { name: tableName };
|
|
@@ -1235,7 +1235,7 @@ async function up$19(db) {
|
|
|
1235
1235
|
`.execute(db);
|
|
1236
1236
|
}
|
|
1237
1237
|
}
|
|
1238
|
-
async function down$
|
|
1238
|
+
async function down$20(db) {
|
|
1239
1239
|
const tableNames = await listTablesLike(db, "ec_%");
|
|
1240
1240
|
for (const tableName of tableNames) {
|
|
1241
1241
|
const table = { name: tableName };
|
|
@@ -1253,10 +1253,10 @@ async function down$19(db) {
|
|
|
1253
1253
|
//#endregion
|
|
1254
1254
|
//#region src/database/migrations/031_bylines.ts
|
|
1255
1255
|
var _031_bylines_exports = /* @__PURE__ */ __exportAll({
|
|
1256
|
-
down: () => down$
|
|
1257
|
-
up: () => up$
|
|
1256
|
+
down: () => down$19,
|
|
1257
|
+
up: () => up$19
|
|
1258
1258
|
});
|
|
1259
|
-
async function up$
|
|
1259
|
+
async function up$19(db) {
|
|
1260
1260
|
await db.schema.createTable("_dineway_bylines").addColumn("id", "text", (col) => col.primaryKey()).addColumn("slug", "text", (col) => col.notNull().unique()).addColumn("display_name", "text", (col) => col.notNull()).addColumn("bio", "text").addColumn("avatar_media_id", "text", (col) => col.references("media.id").onDelete("set null")).addColumn("website_url", "text").addColumn("user_id", "text", (col) => col.references("users.id").onDelete("set null")).addColumn("is_guest", "integer", (col) => col.notNull().defaultTo(0)).addColumn("created_at", "text", (col) => col.defaultTo(currentTimestamp(db))).addColumn("updated_at", "text", (col) => col.defaultTo(currentTimestamp(db))).execute();
|
|
1261
1261
|
await sql`
|
|
1262
1262
|
CREATE UNIQUE INDEX ${sql.ref("idx_bylines_user_id_unique")}
|
|
@@ -1288,7 +1288,7 @@ async function up$18(db) {
|
|
|
1288
1288
|
`.execute(db);
|
|
1289
1289
|
}
|
|
1290
1290
|
}
|
|
1291
|
-
async function down$
|
|
1291
|
+
async function down$19(db) {
|
|
1292
1292
|
const tableNames = await listTablesLike(db, "ec_%");
|
|
1293
1293
|
for (const tableName of tableNames) {
|
|
1294
1294
|
await sql`
|
|
@@ -1306,8 +1306,8 @@ async function down$18(db) {
|
|
|
1306
1306
|
//#endregion
|
|
1307
1307
|
//#region src/database/migrations/032_rate_limits.ts
|
|
1308
1308
|
var _032_rate_limits_exports = /* @__PURE__ */ __exportAll({
|
|
1309
|
-
down: () => down$
|
|
1310
|
-
up: () => up$
|
|
1309
|
+
down: () => down$18,
|
|
1310
|
+
up: () => up$18
|
|
1311
1311
|
});
|
|
1312
1312
|
/**
|
|
1313
1313
|
* Migration: Rate limits table + device code polling tracking.
|
|
@@ -1318,12 +1318,12 @@ var _032_rate_limits_exports = /* @__PURE__ */ __exportAll({
|
|
|
1318
1318
|
* 2. Add last_polled_at column to _dineway_device_codes for
|
|
1319
1319
|
* RFC 8628 slow_down enforcement.
|
|
1320
1320
|
*/
|
|
1321
|
-
async function up$
|
|
1321
|
+
async function up$18(db) {
|
|
1322
1322
|
await db.schema.createTable("_dineway_rate_limits").addColumn("key", "text", (col) => col.notNull()).addColumn("window", "text", (col) => col.notNull()).addColumn("count", "integer", (col) => col.notNull().defaultTo(1)).addPrimaryKeyConstraint("pk_rate_limits", ["key", "window"]).execute();
|
|
1323
1323
|
await db.schema.createIndex("idx_rate_limits_window").on("_dineway_rate_limits").column("window").execute();
|
|
1324
1324
|
await db.schema.alterTable("_dineway_device_codes").addColumn("last_polled_at", "text").execute();
|
|
1325
1325
|
}
|
|
1326
|
-
async function down$
|
|
1326
|
+
async function down$18(db) {
|
|
1327
1327
|
await db.schema.dropTable("_dineway_rate_limits").execute();
|
|
1328
1328
|
await db.schema.alterTable("_dineway_device_codes").dropColumn("last_polled_at").execute();
|
|
1329
1329
|
}
|
|
@@ -1331,8 +1331,8 @@ async function down$17(db) {
|
|
|
1331
1331
|
//#endregion
|
|
1332
1332
|
//#region src/database/migrations/033_optimize_content_indexes.ts
|
|
1333
1333
|
var _033_optimize_content_indexes_exports = /* @__PURE__ */ __exportAll({
|
|
1334
|
-
down: () => down$
|
|
1335
|
-
up: () => up$
|
|
1334
|
+
down: () => down$17,
|
|
1335
|
+
up: () => up$17
|
|
1336
1336
|
});
|
|
1337
1337
|
/**
|
|
1338
1338
|
* Migration: Optimize content table indexes for SQLite-compatible performance
|
|
@@ -1345,7 +1345,7 @@ var _033_optimize_content_indexes_exports = /* @__PURE__ */ __exportAll({
|
|
|
1345
1345
|
*
|
|
1346
1346
|
* Impact: Reduces row reads by 90%+ for admin panel operations on SQLite-compatible adapters.
|
|
1347
1347
|
*/
|
|
1348
|
-
async function up$
|
|
1348
|
+
async function up$17(db) {
|
|
1349
1349
|
const tableNames = await listTablesLike(db, "ec_%");
|
|
1350
1350
|
for (const tableName of tableNames) {
|
|
1351
1351
|
const table = { name: tableName };
|
|
@@ -1387,7 +1387,7 @@ async function up$16(db) {
|
|
|
1387
1387
|
WHERE status = 'trash'
|
|
1388
1388
|
`.execute(db);
|
|
1389
1389
|
}
|
|
1390
|
-
async function down$
|
|
1390
|
+
async function down$17(db) {
|
|
1391
1391
|
const tableNames = await listTablesLike(db, "ec_%");
|
|
1392
1392
|
for (const tableName of tableNames) {
|
|
1393
1393
|
const table = { name: tableName };
|
|
@@ -1420,10 +1420,10 @@ async function down$16(db) {
|
|
|
1420
1420
|
//#endregion
|
|
1421
1421
|
//#region src/database/migrations/034_published_at_index.ts
|
|
1422
1422
|
var _034_published_at_index_exports = /* @__PURE__ */ __exportAll({
|
|
1423
|
-
down: () => down$
|
|
1424
|
-
up: () => up$
|
|
1423
|
+
down: () => down$16,
|
|
1424
|
+
up: () => up$16
|
|
1425
1425
|
});
|
|
1426
|
-
async function up$
|
|
1426
|
+
async function up$16(db) {
|
|
1427
1427
|
const tableNames = await listTablesLike(db, "ec_%");
|
|
1428
1428
|
for (const tableName of tableNames) {
|
|
1429
1429
|
const table = { name: tableName };
|
|
@@ -1433,7 +1433,7 @@ async function up$15(db) {
|
|
|
1433
1433
|
`.execute(db);
|
|
1434
1434
|
}
|
|
1435
1435
|
}
|
|
1436
|
-
async function down$
|
|
1436
|
+
async function down$16(db) {
|
|
1437
1437
|
const tableNames = await listTablesLike(db, "ec_%");
|
|
1438
1438
|
for (const tableName of tableNames) {
|
|
1439
1439
|
const table = { name: tableName };
|
|
@@ -1444,15 +1444,15 @@ async function down$15(db) {
|
|
|
1444
1444
|
//#endregion
|
|
1445
1445
|
//#region src/database/migrations/035_backfill_url_patterns.ts
|
|
1446
1446
|
var _035_backfill_url_patterns_exports = /* @__PURE__ */ __exportAll({
|
|
1447
|
-
down: () => down$
|
|
1448
|
-
up: () => up$
|
|
1447
|
+
down: () => down$15,
|
|
1448
|
+
up: () => up$15
|
|
1449
1449
|
});
|
|
1450
1450
|
/**
|
|
1451
1451
|
* Backfill default URL patterns for the built-in posts and pages collections.
|
|
1452
1452
|
*
|
|
1453
1453
|
* Existing rows keep custom patterns; only missing defaults are filled.
|
|
1454
1454
|
*/
|
|
1455
|
-
async function up$
|
|
1455
|
+
async function up$15(db) {
|
|
1456
1456
|
await sql`
|
|
1457
1457
|
UPDATE _dineway_collections
|
|
1458
1458
|
SET url_pattern = '/posts/{slug}'
|
|
@@ -1464,7 +1464,7 @@ async function up$14(db) {
|
|
|
1464
1464
|
WHERE slug = 'pages' AND url_pattern IS NULL
|
|
1465
1465
|
`.execute(db);
|
|
1466
1466
|
}
|
|
1467
|
-
async function down$
|
|
1467
|
+
async function down$15(db) {
|
|
1468
1468
|
await sql`
|
|
1469
1469
|
UPDATE _dineway_collections
|
|
1470
1470
|
SET url_pattern = NULL
|
|
@@ -1480,8 +1480,8 @@ async function down$14(db) {
|
|
|
1480
1480
|
//#endregion
|
|
1481
1481
|
//#region src/database/migrations/036_activity_log.ts
|
|
1482
1482
|
var _036_activity_log_exports = /* @__PURE__ */ __exportAll({
|
|
1483
|
-
down: () => down$
|
|
1484
|
-
up: () => up$
|
|
1483
|
+
down: () => down$14,
|
|
1484
|
+
up: () => up$14
|
|
1485
1485
|
});
|
|
1486
1486
|
/**
|
|
1487
1487
|
* Site Context Engine activity foundation.
|
|
@@ -1490,7 +1490,7 @@ var _036_activity_log_exports = /* @__PURE__ */ __exportAll({
|
|
|
1490
1490
|
* not a request log. Actor IDs intentionally have no foreign key because the
|
|
1491
1491
|
* actor source can be users, API tokens, or a stable system actor.
|
|
1492
1492
|
*/
|
|
1493
|
-
async function up$
|
|
1493
|
+
async function up$14(db) {
|
|
1494
1494
|
await db.schema.createTable("_dineway_activity_log").addColumn("id", "text", (col) => col.primaryKey()).addColumn("actor_type", "text", (col) => col.notNull().check(sql`actor_type in ('user', 'api_token', 'system')`)).addColumn("actor_id", "text", (col) => col.notNull()).addColumn("auth_metadata", "text").addColumn("action_type", "text", (col) => col.notNull()).addColumn("subject_type", "text", (col) => col.notNull()).addColumn("subject_id", "text").addColumn("related_subject_type", "text").addColumn("related_subject_id", "text").addColumn("source_type", "text", (col) => col.check(sql`source_type is null or source_type in ('api_route', 'mcp_tool', 'system', 'plugin', 'unknown')`)).addColumn("source_name", "text").addColumn("result_status", "text", (col) => col.notNull().defaultTo("succeeded").check(sql`result_status in ('succeeded', 'pending', 'failed', 'blocked')`)).addColumn("scope", "text", (col) => col.notNull()).addColumn("summary", "text", (col) => col.notNull()).addColumn("detail", "text").addColumn("created_at", "text", (col) => col.notNull().defaultTo(currentTimestamp(db))).execute();
|
|
1495
1495
|
await db.schema.createIndex("idx_dineway_activity_actor").on("_dineway_activity_log").columns([
|
|
1496
1496
|
"actor_type",
|
|
@@ -1517,15 +1517,15 @@ async function up$13(db) {
|
|
|
1517
1517
|
await db.schema.createIndex("idx_dineway_activity_result_status").on("_dineway_activity_log").columns(["result_status", "created_at"]).execute();
|
|
1518
1518
|
await db.schema.createIndex("idx_dineway_activity_created_at").on("_dineway_activity_log").column("created_at").execute();
|
|
1519
1519
|
}
|
|
1520
|
-
async function down$
|
|
1520
|
+
async function down$14(db) {
|
|
1521
1521
|
await db.schema.dropTable("_dineway_activity_log").execute();
|
|
1522
1522
|
}
|
|
1523
1523
|
|
|
1524
1524
|
//#endregion
|
|
1525
1525
|
//#region src/database/migrations/037_context_entries.ts
|
|
1526
1526
|
var _037_context_entries_exports = /* @__PURE__ */ __exportAll({
|
|
1527
|
-
down: () => down$
|
|
1528
|
-
up: () => up$
|
|
1527
|
+
down: () => down$13,
|
|
1528
|
+
up: () => up$13
|
|
1529
1529
|
});
|
|
1530
1530
|
const CONTEXT_TYPE_SQL = [
|
|
1531
1531
|
"brand_voice",
|
|
@@ -1550,7 +1550,7 @@ const CONTEXT_TYPE_SQL = [
|
|
|
1550
1550
|
* marking old entries non-current and linking replacements through
|
|
1551
1551
|
* `supersedes_id`.
|
|
1552
1552
|
*/
|
|
1553
|
-
async function up$
|
|
1553
|
+
async function up$13(db) {
|
|
1554
1554
|
await db.schema.createTable("_dineway_context_entries").addColumn("id", "text", (col) => col.primaryKey()).addColumn("scope", "text", (col) => col.notNull()).addColumn("context_type", "text", (col) => col.notNull().check(sql`context_type in (${sql.raw(CONTEXT_TYPE_SQL)})`)).addColumn("title", "text", (col) => col.notNull()).addColumn("body", "text", (col) => col.notNull()).addColumn("policy_key", "text").addColumn("source_activity_id", "text").addColumn("created_by_actor_type", "text", (col) => col.notNull().check(sql`created_by_actor_type in ('user', 'api_token', 'system')`)).addColumn("created_by_actor_id", "text", (col) => col.notNull()).addColumn("created_auth_metadata", "text").addColumn("supersedes_id", "text").addColumn("version", "integer", (col) => col.notNull().defaultTo(1)).addColumn("is_current", "integer", (col) => col.notNull().defaultTo(1).check(sql`is_current in (0, 1)`)).addColumn("valid_until", "text").addColumn("reviewed_at", "text").addColumn("reviewed_by_actor_type", "text", (col) => col.check(sql`reviewed_by_actor_type is null or reviewed_by_actor_type in ('user', 'api_token', 'system')`)).addColumn("reviewed_by_actor_id", "text").addColumn("review_note", "text").addColumn("created_at", "text", (col) => col.notNull().defaultTo(currentTimestamp(db))).addColumn("updated_at", "text", (col) => col.notNull().defaultTo(currentTimestamp(db))).addForeignKeyConstraint("fk_dineway_context_source_activity", ["source_activity_id"], "_dineway_activity_log", ["id"], (cb) => cb.onDelete("set null")).addForeignKeyConstraint("fk_dineway_context_supersedes", ["supersedes_id"], "_dineway_context_entries", ["id"], (cb) => cb.onDelete("set null")).execute();
|
|
1555
1555
|
await db.schema.createTable("_dineway_context_tags").addColumn("context_entry_id", "text", (col) => col.notNull()).addColumn("tag", "text", (col) => col.notNull()).addPrimaryKeyConstraint("pk_dineway_context_tags", ["context_entry_id", "tag"]).addForeignKeyConstraint("fk_dineway_context_tags_entry", ["context_entry_id"], "_dineway_context_entries", ["id"], (cb) => cb.onDelete("cascade")).execute();
|
|
1556
1556
|
await db.schema.createIndex("idx_dineway_context_scope_current").on("_dineway_context_entries").columns([
|
|
@@ -1575,7 +1575,7 @@ async function up$12(db) {
|
|
|
1575
1575
|
await db.schema.createIndex("idx_dineway_context_created_at").on("_dineway_context_entries").column("created_at").execute();
|
|
1576
1576
|
await db.schema.createIndex("idx_dineway_context_tags_tag").on("_dineway_context_tags").columns(["tag", "context_entry_id"]).execute();
|
|
1577
1577
|
}
|
|
1578
|
-
async function down$
|
|
1578
|
+
async function down$13(db) {
|
|
1579
1579
|
await db.schema.dropTable("_dineway_context_tags").execute();
|
|
1580
1580
|
await db.schema.dropTable("_dineway_context_entries").execute();
|
|
1581
1581
|
}
|
|
@@ -1583,8 +1583,8 @@ async function down$12(db) {
|
|
|
1583
1583
|
//#endregion
|
|
1584
1584
|
//#region src/database/migrations/038_review_requests.ts
|
|
1585
1585
|
var _038_review_requests_exports = /* @__PURE__ */ __exportAll({
|
|
1586
|
-
down: () => down$
|
|
1587
|
-
up: () => up$
|
|
1586
|
+
down: () => down$12,
|
|
1587
|
+
up: () => up$12
|
|
1588
1588
|
});
|
|
1589
1589
|
/**
|
|
1590
1590
|
* Lightweight content review requests for Phase 5a.
|
|
@@ -1592,7 +1592,7 @@ var _038_review_requests_exports = /* @__PURE__ */ __exportAll({
|
|
|
1592
1592
|
* Review requests bind human approval to immutable content revision/action
|
|
1593
1593
|
* identifiers so an approval cannot be reused after the draft or action changes.
|
|
1594
1594
|
*/
|
|
1595
|
-
async function up$
|
|
1595
|
+
async function up$12(db) {
|
|
1596
1596
|
await db.schema.createTable("_dineway_review_requests").addColumn("id", "text", (col) => col.primaryKey()).addColumn("status", "text", (col) => col.notNull().defaultTo("pending").check(sql`status in ('pending', 'approved', 'rejected')`)).addColumn("collection", "text", (col) => col.notNull()).addColumn("entry_id", "text", (col) => col.notNull()).addColumn("scope", "text", (col) => col.notNull()).addColumn("live_revision_id", "text").addColumn("draft_revision_id", "text").addColumn("reviewed_rev", "text", (col) => col.notNull()).addColumn("action_type", "text", (col) => col.notNull()).addColumn("action_hash", "text", (col) => col.notNull()).addColumn("risk_reason", "text").addColumn("review_payload", "text", (col) => col.notNull()).addColumn("requested_by_actor_type", "text", (col) => col.notNull().check(sql`requested_by_actor_type in ('user', 'api_token', 'system')`)).addColumn("requested_by_actor_id", "text", (col) => col.notNull()).addColumn("requested_auth_metadata", "text").addColumn("resolved_by_actor_type", "text", (col) => col.check(sql`resolved_by_actor_type is null or resolved_by_actor_type in ('user', 'api_token', 'system')`)).addColumn("resolved_by_actor_id", "text").addColumn("resolved_auth_metadata", "text").addColumn("review_note", "text").addColumn("created_at", "text", (col) => col.notNull().defaultTo(currentTimestamp(db))).addColumn("updated_at", "text", (col) => col.notNull().defaultTo(currentTimestamp(db))).addColumn("resolved_at", "text").execute();
|
|
1597
1597
|
await db.schema.createIndex("idx_dineway_review_status_created").on("_dineway_review_requests").columns(["status", "created_at"]).execute();
|
|
1598
1598
|
await db.schema.createIndex("idx_dineway_review_target").on("_dineway_review_requests").columns([
|
|
@@ -1613,15 +1613,15 @@ async function up$11(db) {
|
|
|
1613
1613
|
]).execute();
|
|
1614
1614
|
await db.schema.createIndex("idx_dineway_review_resolved_at").on("_dineway_review_requests").column("resolved_at").execute();
|
|
1615
1615
|
}
|
|
1616
|
-
async function down$
|
|
1616
|
+
async function down$12(db) {
|
|
1617
1617
|
await db.schema.dropTable("_dineway_review_requests").execute();
|
|
1618
1618
|
}
|
|
1619
1619
|
|
|
1620
1620
|
//#endregion
|
|
1621
1621
|
//#region src/database/migrations/039_entity_aliases.ts
|
|
1622
1622
|
var _039_entity_aliases_exports = /* @__PURE__ */ __exportAll({
|
|
1623
|
-
down: () => down$
|
|
1624
|
-
up: () => up$
|
|
1623
|
+
down: () => down$11,
|
|
1624
|
+
up: () => up$11
|
|
1625
1625
|
});
|
|
1626
1626
|
const ENTITY_ALIAS_TYPES = [
|
|
1627
1627
|
"content",
|
|
@@ -1636,7 +1636,7 @@ const ENTITY_ALIAS_TYPES = [
|
|
|
1636
1636
|
* This replaces CRMy's PostgreSQL-specific alias arrays with a normalized
|
|
1637
1637
|
* mapping table that works across SQLite/libSQL and PostgreSQL.
|
|
1638
1638
|
*/
|
|
1639
|
-
async function up$
|
|
1639
|
+
async function up$11(db) {
|
|
1640
1640
|
const entityTypesSql = sql.join(ENTITY_ALIAS_TYPES.map((value) => sql.lit(value)), sql`, `);
|
|
1641
1641
|
await db.schema.createTable("_dineway_entity_aliases").addColumn("id", "text", (col) => col.primaryKey()).addColumn("entity_type", "text", (col) => col.notNull().check(sql`entity_type in (${entityTypesSql})`)).addColumn("collection_slug", "text").addColumn("entity_id", "text", (col) => col.notNull()).addColumn("alias", "text", (col) => col.notNull()).addColumn("normalized_alias", "text", (col) => col.notNull()).addColumn("created_at", "text", (col) => col.notNull().defaultTo(currentTimestamp(db))).execute();
|
|
1642
1642
|
await db.schema.createIndex("idx_dineway_entity_alias_lookup").on("_dineway_entity_aliases").columns(["entity_type", "normalized_alias"]).execute();
|
|
@@ -1653,15 +1653,15 @@ async function up$10(db) {
|
|
|
1653
1653
|
"normalized_alias"
|
|
1654
1654
|
]).unique().execute();
|
|
1655
1655
|
}
|
|
1656
|
-
async function down$
|
|
1656
|
+
async function down$11(db) {
|
|
1657
1657
|
await db.schema.dropTable("_dineway_entity_aliases").execute();
|
|
1658
1658
|
}
|
|
1659
1659
|
|
|
1660
1660
|
//#endregion
|
|
1661
1661
|
//#region src/database/migrations/040_handoff_snapshots.ts
|
|
1662
1662
|
var _040_handoff_snapshots_exports = /* @__PURE__ */ __exportAll({
|
|
1663
|
-
down: () => down$
|
|
1664
|
-
up: () => up$
|
|
1663
|
+
down: () => down$10,
|
|
1664
|
+
up: () => up$10
|
|
1665
1665
|
});
|
|
1666
1666
|
const ACTOR_TYPES$2 = [
|
|
1667
1667
|
"user",
|
|
@@ -1674,7 +1674,7 @@ const HANDOFF_KINDS = [
|
|
|
1674
1674
|
"assignment"
|
|
1675
1675
|
];
|
|
1676
1676
|
const REFERENCE_TYPES = ["review_request", "assignment"];
|
|
1677
|
-
async function up$
|
|
1677
|
+
async function up$10(db) {
|
|
1678
1678
|
const actorTypesSql = sql.join(ACTOR_TYPES$2.map((value) => sql.lit(value)), sql`, `);
|
|
1679
1679
|
const handoffKindsSql = sql.join(HANDOFF_KINDS.map((value) => sql.lit(value)), sql`, `);
|
|
1680
1680
|
const referenceTypesSql = sql.join(REFERENCE_TYPES.map((value) => sql.lit(value)), sql`, `);
|
|
@@ -1688,15 +1688,15 @@ async function up$9(db) {
|
|
|
1688
1688
|
await db.schema.createIndex("idx_dineway_handoff_kind_created").on("_dineway_handoff_snapshots").columns(["handoff_kind", "created_at"]).execute();
|
|
1689
1689
|
await db.schema.createIndex("idx_dineway_handoff_reference").on("_dineway_handoff_snapshots").columns(["reference_type", "reference_id"]).execute();
|
|
1690
1690
|
}
|
|
1691
|
-
async function down$
|
|
1691
|
+
async function down$10(db) {
|
|
1692
1692
|
await db.schema.dropTable("_dineway_handoff_snapshots").execute();
|
|
1693
1693
|
}
|
|
1694
1694
|
|
|
1695
1695
|
//#endregion
|
|
1696
1696
|
//#region src/database/migrations/041_assignments.ts
|
|
1697
1697
|
var _041_assignments_exports = /* @__PURE__ */ __exportAll({
|
|
1698
|
-
down: () => down$
|
|
1699
|
-
up: () => up$
|
|
1698
|
+
down: () => down$9,
|
|
1699
|
+
up: () => up$9
|
|
1700
1700
|
});
|
|
1701
1701
|
const ACTOR_TYPES$1 = [
|
|
1702
1702
|
"user",
|
|
@@ -1718,7 +1718,7 @@ const ASSIGNMENT_PRIORITIES = [
|
|
|
1718
1718
|
"high",
|
|
1719
1719
|
"urgent"
|
|
1720
1720
|
];
|
|
1721
|
-
async function up$
|
|
1721
|
+
async function up$9(db) {
|
|
1722
1722
|
const actorTypesSql = sql.join(ACTOR_TYPES$1.map((value) => sql.lit(value)), sql`, `);
|
|
1723
1723
|
const statusesSql = sql.join(ASSIGNMENT_STATUSES.map((value) => sql.lit(value)), sql`, `);
|
|
1724
1724
|
const prioritiesSql = sql.join(ASSIGNMENT_PRIORITIES.map((value) => sql.lit(value)), sql`, `);
|
|
@@ -1750,15 +1750,15 @@ async function up$8(db) {
|
|
|
1750
1750
|
await db.schema.createIndex("idx_dineway_assignment_due_at").on("_dineway_assignments").column("due_at").execute();
|
|
1751
1751
|
await db.schema.createIndex("idx_dineway_assignment_handoff").on("_dineway_assignments").column("related_handoff_snapshot_id").execute();
|
|
1752
1752
|
}
|
|
1753
|
-
async function down$
|
|
1753
|
+
async function down$9(db) {
|
|
1754
1754
|
await db.schema.dropTable("_dineway_assignments").execute();
|
|
1755
1755
|
}
|
|
1756
1756
|
|
|
1757
1757
|
//#endregion
|
|
1758
1758
|
//#region src/database/migrations/042_hitl_requests.ts
|
|
1759
1759
|
var _042_hitl_requests_exports = /* @__PURE__ */ __exportAll({
|
|
1760
|
-
down: () => down$
|
|
1761
|
-
up: () => up$
|
|
1760
|
+
down: () => down$8,
|
|
1761
|
+
up: () => up$8
|
|
1762
1762
|
});
|
|
1763
1763
|
const ACTOR_TYPES = [
|
|
1764
1764
|
"user",
|
|
@@ -1776,7 +1776,7 @@ const HITL_PRIORITIES = [
|
|
|
1776
1776
|
"high",
|
|
1777
1777
|
"urgent"
|
|
1778
1778
|
];
|
|
1779
|
-
async function up$
|
|
1779
|
+
async function up$8(db) {
|
|
1780
1780
|
const actorTypesSql = sql.join(ACTOR_TYPES.map((value) => sql.lit(value)), sql`, `);
|
|
1781
1781
|
const statusesSql = sql.join(HITL_STATUSES.map((value) => sql.lit(value)), sql`, `);
|
|
1782
1782
|
const prioritiesSql = sql.join(HITL_PRIORITIES.map((value) => sql.lit(value)), sql`, `);
|
|
@@ -1811,7 +1811,7 @@ async function up$7(db) {
|
|
|
1811
1811
|
await db.schema.createIndex("idx_dineway_hitl_sla_due_at").on("_dineway_hitl_requests").column("sla_due_at").execute();
|
|
1812
1812
|
await db.schema.createIndex("idx_dineway_assignment_hitl").on("_dineway_assignments").column("related_hitl_request_id").execute();
|
|
1813
1813
|
}
|
|
1814
|
-
async function down$
|
|
1814
|
+
async function down$8(db) {
|
|
1815
1815
|
await db.schema.dropIndex("idx_dineway_assignment_hitl").execute();
|
|
1816
1816
|
await db.schema.alterTable("_dineway_assignments").dropColumn("related_hitl_request_id").execute();
|
|
1817
1817
|
await db.schema.dropTable("_dineway_hitl_requests").execute();
|
|
@@ -1820,8 +1820,8 @@ async function down$7(db) {
|
|
|
1820
1820
|
//#endregion
|
|
1821
1821
|
//#region src/database/migrations/043_bounded_404_log.ts
|
|
1822
1822
|
var _043_bounded_404_log_exports = /* @__PURE__ */ __exportAll({
|
|
1823
|
-
down: () => down$
|
|
1824
|
-
up: () => up$
|
|
1823
|
+
down: () => down$7,
|
|
1824
|
+
up: () => up$7
|
|
1825
1825
|
});
|
|
1826
1826
|
/**
|
|
1827
1827
|
* Migration: Bounded 404 logging
|
|
@@ -1830,7 +1830,7 @@ var _043_bounded_404_log_exports = /* @__PURE__ */ __exportAll({
|
|
|
1830
1830
|
* Previously every 404 inserted a new row, so a requester could grow the
|
|
1831
1831
|
* table without bound by hitting unique URLs.
|
|
1832
1832
|
*/
|
|
1833
|
-
async function up$
|
|
1833
|
+
async function up$7(db) {
|
|
1834
1834
|
await db.schema.alterTable("_dineway_404_log").addColumn("hits", "integer", (col) => col.notNull().defaultTo(1)).execute();
|
|
1835
1835
|
await db.schema.alterTable("_dineway_404_log").addColumn("last_seen_at", "text").execute();
|
|
1836
1836
|
await sql`
|
|
@@ -1876,7 +1876,7 @@ async function up$6(db) {
|
|
|
1876
1876
|
await db.schema.dropIndex("idx_404_log_path").execute();
|
|
1877
1877
|
await db.schema.createIndex("idx_404_log_last_seen").on("_dineway_404_log").column("last_seen_at").execute();
|
|
1878
1878
|
}
|
|
1879
|
-
async function down$
|
|
1879
|
+
async function down$7(db) {
|
|
1880
1880
|
await db.schema.dropIndex("idx_404_log_last_seen").execute();
|
|
1881
1881
|
await db.schema.dropIndex("idx_404_log_path_unique").execute();
|
|
1882
1882
|
await db.schema.createIndex("idx_404_log_path").on("_dineway_404_log").column("path").execute();
|
|
@@ -1887,21 +1887,21 @@ async function down$6(db) {
|
|
|
1887
1887
|
//#endregion
|
|
1888
1888
|
//#region src/database/migrations/044_credential_algorithm.ts
|
|
1889
1889
|
var _044_credential_algorithm_exports = /* @__PURE__ */ __exportAll({
|
|
1890
|
-
down: () => down$
|
|
1891
|
-
up: () => up$
|
|
1890
|
+
down: () => down$6,
|
|
1891
|
+
up: () => up$6
|
|
1892
1892
|
});
|
|
1893
|
-
async function up$
|
|
1893
|
+
async function up$6(db) {
|
|
1894
1894
|
if (!await columnExists(db, "credentials", "algorithm")) await db.schema.alterTable("credentials").addColumn("algorithm", "integer", (col) => col.notNull().defaultTo(-7)).execute();
|
|
1895
1895
|
}
|
|
1896
|
-
async function down$
|
|
1896
|
+
async function down$6(db) {
|
|
1897
1897
|
if (await columnExists(db, "credentials", "algorithm")) await db.schema.alterTable("credentials").dropColumn("algorithm").execute();
|
|
1898
1898
|
}
|
|
1899
1899
|
|
|
1900
1900
|
//#endregion
|
|
1901
1901
|
//#region src/database/migrations/045_i18n_menus_and_taxonomies.ts
|
|
1902
1902
|
var _045_i18n_menus_and_taxonomies_exports = /* @__PURE__ */ __exportAll({
|
|
1903
|
-
down: () => down$
|
|
1904
|
-
up: () => up$
|
|
1903
|
+
down: () => down$5,
|
|
1904
|
+
up: () => up$5
|
|
1905
1905
|
});
|
|
1906
1906
|
/**
|
|
1907
1907
|
* i18n for menus + taxonomies. Adds `locale` + `translation_group` to system
|
|
@@ -1912,7 +1912,7 @@ var _045_i18n_menus_and_taxonomies_exports = /* @__PURE__ */ __exportAll({
|
|
|
1912
1912
|
function getDefaultLocale$1() {
|
|
1913
1913
|
return getI18nConfig()?.defaultLocale ?? "en";
|
|
1914
1914
|
}
|
|
1915
|
-
async function up$
|
|
1915
|
+
async function up$5(db) {
|
|
1916
1916
|
const defaultLocale = getDefaultLocale$1();
|
|
1917
1917
|
if (isSqlite(db)) {
|
|
1918
1918
|
await sql.raw(`PRAGMA foreign_keys = OFF`).execute(db);
|
|
@@ -2102,7 +2102,7 @@ async function assertSingleLocale$1(db, defaultLocale) {
|
|
|
2102
2102
|
if (count > 0) throw new Error(`Cannot revert migration 045_i18n_menus_and_taxonomies: ${count} row(s) in "${table}" use a non-default locale (defaultLocale="${defaultLocale}"). Reverting would drop them silently. Export translations first (or delete them) and re-run the rollback. See packages/core/src/database/migrations/045_i18n_menus_and_taxonomies.ts.`);
|
|
2103
2103
|
}
|
|
2104
2104
|
}
|
|
2105
|
-
async function down$
|
|
2105
|
+
async function down$5(db) {
|
|
2106
2106
|
const defaultLocale = getDefaultLocale$1();
|
|
2107
2107
|
await assertSingleLocale$1(db, defaultLocale);
|
|
2108
2108
|
const widenedTables = [
|
|
@@ -2195,21 +2195,21 @@ async function rebuildTaxonomyDefsDown(db) {
|
|
|
2195
2195
|
//#endregion
|
|
2196
2196
|
//#region src/database/migrations/046_astro_sessions.ts
|
|
2197
2197
|
var _046_astro_sessions_exports = /* @__PURE__ */ __exportAll({
|
|
2198
|
-
down: () => down$
|
|
2199
|
-
up: () => up$
|
|
2198
|
+
down: () => down$4,
|
|
2199
|
+
up: () => up$4
|
|
2200
2200
|
});
|
|
2201
|
-
async function up$
|
|
2201
|
+
async function up$4(db) {
|
|
2202
2202
|
await db.schema.createTable("_dineway_sessions").ifNotExists().addColumn("id", "text", (col) => col.primaryKey()).addColumn("value", "text", (col) => col.notNull()).addColumn("updated_at", "text", (col) => col.notNull().defaultTo(currentTimestamp(db))).execute();
|
|
2203
2203
|
}
|
|
2204
|
-
async function down$
|
|
2204
|
+
async function down$4(db) {
|
|
2205
2205
|
await db.schema.dropTable("_dineway_sessions").ifExists().execute();
|
|
2206
2206
|
}
|
|
2207
2207
|
|
|
2208
2208
|
//#endregion
|
|
2209
2209
|
//#region src/database/migrations/047_content_locale_list_index.ts
|
|
2210
2210
|
var _047_content_locale_list_index_exports = /* @__PURE__ */ __exportAll({
|
|
2211
|
-
down: () => down$
|
|
2212
|
-
up: () => up$
|
|
2211
|
+
down: () => down$3,
|
|
2212
|
+
up: () => up$3
|
|
2213
2213
|
});
|
|
2214
2214
|
/**
|
|
2215
2215
|
* Add locale-aware composite indexes for content list queries.
|
|
@@ -2219,7 +2219,7 @@ var _047_content_locale_list_index_exports = /* @__PURE__ */ __exportAll({
|
|
|
2219
2219
|
* path but omit locale, so locale-filtered lists cannot be served by one index
|
|
2220
2220
|
* on large tables.
|
|
2221
2221
|
*/
|
|
2222
|
-
async function up$
|
|
2222
|
+
async function up$3(db) {
|
|
2223
2223
|
const tableNames = await listTablesLike(db, "ec_%");
|
|
2224
2224
|
for (const tableName of tableNames) {
|
|
2225
2225
|
await sql`
|
|
@@ -2232,7 +2232,7 @@ async function up$2(db) {
|
|
|
2232
2232
|
`.execute(db);
|
|
2233
2233
|
}
|
|
2234
2234
|
}
|
|
2235
|
-
async function down$
|
|
2235
|
+
async function down$3(db) {
|
|
2236
2236
|
const tableNames = await listTablesLike(db, "ec_%");
|
|
2237
2237
|
for (const tableName of tableNames) {
|
|
2238
2238
|
await sql`DROP INDEX IF EXISTS ${sql.ref(contentLocaleUpdatedIndexName(tableName))}`.execute(db);
|
|
@@ -2243,8 +2243,8 @@ async function down$2(db) {
|
|
|
2243
2243
|
//#endregion
|
|
2244
2244
|
//#region src/database/migrations/048_byline_i18n.ts
|
|
2245
2245
|
var _048_byline_i18n_exports = /* @__PURE__ */ __exportAll({
|
|
2246
|
-
down: () => down$
|
|
2247
|
-
up: () => up$
|
|
2246
|
+
down: () => down$2,
|
|
2247
|
+
up: () => up$2
|
|
2248
2248
|
});
|
|
2249
2249
|
/**
|
|
2250
2250
|
* Adds row-per-locale bylines.
|
|
@@ -2257,7 +2257,7 @@ var _048_byline_i18n_exports = /* @__PURE__ */ __exportAll({
|
|
|
2257
2257
|
function getDefaultLocale() {
|
|
2258
2258
|
return getI18nConfig()?.defaultLocale ?? "en";
|
|
2259
2259
|
}
|
|
2260
|
-
async function up$
|
|
2260
|
+
async function up$2(db) {
|
|
2261
2261
|
const defaultLocale = getDefaultLocale();
|
|
2262
2262
|
if (isSqlite(db)) {
|
|
2263
2263
|
await rebuildContentBylines(db);
|
|
@@ -2416,7 +2416,7 @@ async function assertSingleLocale(db, defaultLocale) {
|
|
|
2416
2416
|
const count = Number(result.rows[0]?.count ?? 0);
|
|
2417
2417
|
if (count > 0) throw new Error(`Cannot revert migration 048_byline_i18n: ${count} row(s) in "_dineway_bylines" use a non-default locale (defaultLocale="${defaultLocale}").`);
|
|
2418
2418
|
}
|
|
2419
|
-
async function down$
|
|
2419
|
+
async function down$2(db) {
|
|
2420
2420
|
const defaultLocale = getDefaultLocale();
|
|
2421
2421
|
await assertSingleLocale(db, defaultLocale);
|
|
2422
2422
|
await assertContentBylinesResolve(db, defaultLocale);
|
|
@@ -2538,10 +2538,10 @@ async function restoreContentBylinesFk(db) {
|
|
|
2538
2538
|
//#endregion
|
|
2539
2539
|
//#region src/database/migrations/049_byline_fields.ts
|
|
2540
2540
|
var _049_byline_fields_exports = /* @__PURE__ */ __exportAll({
|
|
2541
|
-
down: () => down,
|
|
2542
|
-
up: () => up
|
|
2541
|
+
down: () => down$1,
|
|
2542
|
+
up: () => up$1
|
|
2543
2543
|
});
|
|
2544
|
-
async function up(db) {
|
|
2544
|
+
async function up$1(db) {
|
|
2545
2545
|
await db.schema.createTable("_dineway_byline_fields").ifNotExists().addColumn("id", "text", (col) => col.primaryKey()).addColumn("slug", "text", (col) => col.notNull().unique()).addColumn("label", "text", (col) => col.notNull()).addColumn("type", "text", (col) => col.notNull()).addColumn("required", "integer", (col) => col.notNull().defaultTo(0)).addColumn("translatable", "integer", (col) => col.notNull().defaultTo(1)).addColumn("validation", "text").addColumn("sort_order", "integer", (col) => col.notNull().defaultTo(0)).addColumn("created_at", "text", (col) => col.defaultTo(currentTimestamp(db))).addColumn("updated_at", "text", (col) => col.defaultTo(currentTimestamp(db))).execute();
|
|
2546
2546
|
await db.schema.createIndex("idx__dineway_byline_fields_sort_order").ifNotExists().on("_dineway_byline_fields").column("sort_order").execute();
|
|
2547
2547
|
await db.schema.createTable("_dineway_byline_field_values").ifNotExists().addColumn("byline_id", "text", (col) => col.notNull().references("_dineway_bylines.id").onDelete("cascade")).addColumn("field_id", "text", (col) => col.notNull().references("_dineway_byline_fields.id").onDelete("cascade")).addColumn("value", "text").addColumn("created_at", "text", (col) => col.defaultTo(currentTimestamp(db))).addColumn("updated_at", "text", (col) => col.defaultTo(currentTimestamp(db))).addPrimaryKeyConstraint("_dineway_byline_field_values_pk", ["byline_id", "field_id"]).execute();
|
|
@@ -2555,13 +2555,52 @@ async function up(db) {
|
|
|
2555
2555
|
ON CONFLICT (name) DO NOTHING
|
|
2556
2556
|
`.execute(db);
|
|
2557
2557
|
}
|
|
2558
|
-
async function down(db) {
|
|
2558
|
+
async function down$1(db) {
|
|
2559
2559
|
await db.schema.dropTable("_dineway_byline_field_group_values").ifExists().execute();
|
|
2560
2560
|
await db.schema.dropTable("_dineway_byline_field_values").ifExists().execute();
|
|
2561
2561
|
await db.schema.dropTable("_dineway_byline_fields").ifExists().execute();
|
|
2562
2562
|
await sql`DELETE FROM options WHERE name = 'byline_fields_version'`.execute(db);
|
|
2563
2563
|
}
|
|
2564
2564
|
|
|
2565
|
+
//#endregion
|
|
2566
|
+
//#region src/database/migrations/050_content_references.ts
|
|
2567
|
+
var _050_content_references_exports = /* @__PURE__ */ __exportAll({
|
|
2568
|
+
down: () => down,
|
|
2569
|
+
up: () => up
|
|
2570
|
+
});
|
|
2571
|
+
/**
|
|
2572
|
+
* Content references.
|
|
2573
|
+
*
|
|
2574
|
+
* `_dineway_relations` defines directed relation types between collections,
|
|
2575
|
+
* with one localized row per locale. `_dineway_content_references` stores
|
|
2576
|
+
* parent -> child edges keyed by translation groups so edges are locale-agnostic.
|
|
2577
|
+
*/
|
|
2578
|
+
async function up(db) {
|
|
2579
|
+
const defaultLocale = getI18nConfig()?.defaultLocale ?? "en";
|
|
2580
|
+
await db.schema.createTable("_dineway_relations").ifNotExists().addColumn("id", "text", (col) => col.primaryKey()).addColumn("name", "text", (col) => col.notNull()).addColumn("parent_collection", "text", (col) => col.notNull()).addColumn("child_collection", "text", (col) => col.notNull()).addColumn("parent_label", "text", (col) => col.notNull()).addColumn("child_label", "text", (col) => col.notNull()).addColumn("locale", "text", (col) => col.notNull().defaultTo(defaultLocale)).addColumn("translation_group", "text", (col) => col.notNull()).addColumn("created_at", "text", (col) => col.defaultTo(currentTimestamp(db))).addColumn("updated_at", "text", (col) => col.defaultTo(currentTimestamp(db))).addUniqueConstraint("_dineway_relations_name_locale_unique", ["name", "locale"]).execute();
|
|
2581
|
+
await db.schema.createIndex("idx__dineway_relations_locale").ifNotExists().on("_dineway_relations").column("locale").execute();
|
|
2582
|
+
await db.schema.createIndex("idx__dineway_relations_translation_group").ifNotExists().on("_dineway_relations").column("translation_group").execute();
|
|
2583
|
+
await db.schema.createIndex("idx__dineway_relations_parent_collection").ifNotExists().on("_dineway_relations").column("parent_collection").execute();
|
|
2584
|
+
await db.schema.createIndex("idx__dineway_relations_child_collection").ifNotExists().on("_dineway_relations").column("child_collection").execute();
|
|
2585
|
+
await db.schema.createIndex("idx__dineway_relations_group_locale_unique").ifNotExists().unique().on("_dineway_relations").columns(["translation_group", "locale"]).execute();
|
|
2586
|
+
await db.schema.createTable("_dineway_content_references").ifNotExists().addColumn("id", "text", (col) => col.primaryKey()).addColumn("relation_group", "text", (col) => col.notNull()).addColumn("parent_group", "text", (col) => col.notNull()).addColumn("child_group", "text", (col) => col.notNull()).addColumn("sort_order", "integer", (col) => col.notNull().defaultTo(0)).addColumn("created_at", "text", (col) => col.defaultTo(currentTimestamp(db))).addUniqueConstraint("_dineway_content_references_unique", [
|
|
2587
|
+
"relation_group",
|
|
2588
|
+
"parent_group",
|
|
2589
|
+
"child_group"
|
|
2590
|
+
]).execute();
|
|
2591
|
+
await db.schema.createIndex("idx__dineway_content_references_parent").ifNotExists().on("_dineway_content_references").columns([
|
|
2592
|
+
"parent_group",
|
|
2593
|
+
"relation_group",
|
|
2594
|
+
"sort_order"
|
|
2595
|
+
]).execute();
|
|
2596
|
+
await db.schema.createIndex("idx__dineway_content_references_child").ifNotExists().on("_dineway_content_references").columns(["child_group", "relation_group"]).execute();
|
|
2597
|
+
await db.schema.createIndex("idx__dineway_content_references_relation").ifNotExists().on("_dineway_content_references").column("relation_group").execute();
|
|
2598
|
+
}
|
|
2599
|
+
async function down(db) {
|
|
2600
|
+
await db.schema.dropTable("_dineway_content_references").ifExists().execute();
|
|
2601
|
+
await db.schema.dropTable("_dineway_relations").ifExists().execute();
|
|
2602
|
+
}
|
|
2603
|
+
|
|
2565
2604
|
//#endregion
|
|
2566
2605
|
//#region src/database/migrations/runner.ts
|
|
2567
2606
|
const MIGRATIONS = Object.freeze({
|
|
@@ -2612,7 +2651,8 @@ const MIGRATIONS = Object.freeze({
|
|
|
2612
2651
|
"046_astro_sessions": _046_astro_sessions_exports,
|
|
2613
2652
|
"047_content_locale_list_index": _047_content_locale_list_index_exports,
|
|
2614
2653
|
"048_byline_i18n": _048_byline_i18n_exports,
|
|
2615
|
-
"049_byline_fields": _049_byline_fields_exports
|
|
2654
|
+
"049_byline_fields": _049_byline_fields_exports,
|
|
2655
|
+
"050_content_references": _050_content_references_exports
|
|
2616
2656
|
});
|
|
2617
2657
|
const MIGRATION_NAMES = Object.freeze(Object.keys(MIGRATIONS).toSorted());
|
|
2618
2658
|
/** Total number of registered migrations. Exported for use in tests. */
|