dineway 0.2.33 → 0.2.35
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{activity-CfryM8jO.mjs → activity-BbtYp_4V.mjs} +2 -2
- package/dist/{activity-events-BVo9rMUz.mjs → activity-events-CiFN61xq.mjs} +1 -1
- package/dist/{actor-DrJJsvy6.mjs → actor-DxUAJgQX.mjs} +20 -6
- package/dist/{adapters-DHt3f2lu.d.mts → adapters-Rol-inz6.d.mts} +5 -7
- package/dist/after-BVaUn7bK.mjs +24 -0
- package/dist/{allowed-origins-DGSyhRCz.mjs → allowed-origins-Cp7BI3L9.mjs} +1 -1
- package/dist/api/route-utils.d.mts +10 -10
- package/dist/api/route-utils.mjs +23 -19
- package/dist/api/schemas/index.d.mts +1 -1
- package/dist/api/schemas/index.mjs +5 -5
- package/dist/{api-CTf1SLmg.mjs → api-CwhrR7H5.mjs} +55 -1215
- package/dist/api-tokens-DA18zxza.mjs +3 -0
- package/dist/{api-tokens-CSomx-l3.mjs → api-tokens-OAgvq4xg.mjs} +1 -1
- package/dist/{apply-Bs2jXsms.mjs → apply-BTfAReIv.mjs} +109 -93
- package/dist/astro/index.d.mts +16 -12
- package/dist/astro/index.mjs +50 -9
- package/dist/astro/middleware/auth.d.mts +9 -9
- package/dist/astro/middleware/auth.mjs +29 -8
- package/dist/astro/middleware/redirect.mjs +8 -7
- package/dist/astro/middleware/request-context.mjs +17 -10
- package/dist/astro/middleware/seed.d.mts +1 -1
- package/dist/astro/middleware/seed.mjs +93 -71
- package/dist/astro/middleware/setup.mjs +1 -1
- package/dist/astro/middleware/workers.d.mts +6 -0
- package/dist/astro/middleware/workers.mjs +8 -0
- package/dist/astro/middleware.mjs +287 -159
- package/dist/astro/routes/api/admin/allowed-domains/_domain_.mjs +7 -7
- package/dist/astro/routes/api/admin/allowed-domains/index.mjs +7 -7
- package/dist/astro/routes/api/admin/api-tokens/_id_.mjs +4 -4
- package/dist/astro/routes/api/admin/api-tokens/index.mjs +7 -7
- package/dist/astro/routes/api/admin/briefing.mjs +25 -23
- package/dist/astro/routes/api/admin/byline-fields/_slug_/usage.mjs +5 -4
- package/dist/astro/routes/api/admin/byline-fields/_slug_.mjs +11 -10
- package/dist/astro/routes/api/admin/byline-fields/index.mjs +11 -10
- package/dist/astro/routes/api/admin/byline-fields/reorder.mjs +11 -10
- package/dist/astro/routes/api/admin/bylines/_id_/index.mjs +22 -20
- package/dist/astro/routes/api/admin/bylines/_id_/translations.mjs +22 -20
- package/dist/astro/routes/api/admin/bylines/index.mjs +22 -20
- package/dist/astro/routes/api/admin/comments/_id_/status.mjs +18 -16
- package/dist/astro/routes/api/admin/comments/_id_.mjs +8 -7
- package/dist/astro/routes/api/admin/comments/bulk.mjs +14 -13
- package/dist/astro/routes/api/admin/comments/counts.mjs +8 -7
- package/dist/astro/routes/api/admin/comments/index.mjs +14 -13
- package/dist/astro/routes/api/admin/context/_id_/history.mjs +42 -31
- package/dist/astro/routes/api/admin/context/_id_/index.mjs +42 -31
- package/dist/astro/routes/api/admin/context/_id_/review.mjs +47 -36
- package/dist/astro/routes/api/admin/context/_id_/supersede.mjs +47 -36
- package/dist/astro/routes/api/admin/context/diff.mjs +46 -35
- package/dist/astro/routes/api/admin/context/index.mjs +47 -36
- package/dist/astro/routes/api/admin/context/stale.mjs +46 -35
- package/dist/astro/routes/api/admin/hitl-requests/_id_/index.mjs +42 -31
- package/dist/astro/routes/api/admin/hitl-requests/_id_/resolve.mjs +46 -35
- package/dist/astro/routes/api/admin/hitl-requests/index.mjs +46 -35
- package/dist/astro/routes/api/admin/hooks/exclusive/_hookName_.mjs +43 -32
- package/dist/astro/routes/api/admin/hooks/exclusive/index.mjs +3 -3
- package/dist/astro/routes/api/admin/oauth-clients/_id_.mjs +7 -7
- package/dist/astro/routes/api/admin/oauth-clients/index.mjs +7 -7
- package/dist/astro/routes/api/admin/plugins/_id_/disable.mjs +71 -66
- package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs +71 -66
- package/dist/astro/routes/api/admin/plugins/_id_/index.mjs +63 -58
- package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs +70 -65
- package/dist/astro/routes/api/admin/plugins/_id_/update.mjs +70 -65
- package/dist/astro/routes/api/admin/plugins/index.mjs +63 -58
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/icon.mjs +2 -2
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs +63 -58
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs +70 -65
- package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs +63 -58
- package/dist/astro/routes/api/admin/plugins/updates.mjs +63 -58
- package/dist/astro/routes/api/admin/review-requests/_id_/image.mjs +26 -23
- package/dist/astro/routes/api/admin/review-requests/_id_/index.mjs +39 -25
- package/dist/astro/routes/api/admin/review-requests/_id_/resolve.mjs +55 -43
- package/dist/astro/routes/api/admin/review-requests/_id_/revoke.mjs +10 -9
- package/dist/astro/routes/api/admin/review-requests/index.mjs +53 -41
- package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs +63 -58
- package/dist/astro/routes/api/admin/themes/marketplace/_id_/thumbnail.mjs +2 -2
- package/dist/astro/routes/api/admin/themes/marketplace/index.mjs +63 -58
- package/dist/astro/routes/api/admin/users/_id_/disable.mjs +20 -12
- package/dist/astro/routes/api/admin/users/_id_/enable.mjs +1 -1
- package/dist/astro/routes/api/admin/users/_id_/index.mjs +40 -32
- package/dist/astro/routes/api/admin/users/_id_/send-recovery.mjs +3 -3
- package/dist/astro/routes/api/admin/users/index.mjs +7 -7
- package/dist/astro/routes/api/auth/dev-bypass.mjs +6 -5
- package/dist/astro/routes/api/auth/invite/accept.mjs +1 -1
- package/dist/astro/routes/api/auth/invite/complete.mjs +12 -12
- package/dist/astro/routes/api/auth/invite/index.mjs +9 -9
- package/dist/astro/routes/api/auth/invite/register-options.mjs +11 -11
- package/dist/astro/routes/api/auth/logout.mjs +2 -2
- package/dist/astro/routes/api/auth/magic-link/send.mjs +12 -11
- package/dist/astro/routes/api/auth/magic-link/verify.mjs +2 -2
- package/dist/astro/routes/api/auth/me.mjs +11 -11
- package/dist/astro/routes/api/auth/mode.mjs +1 -1
- package/dist/astro/routes/api/auth/oauth/_provider_/callback.mjs +5 -4
- package/dist/astro/routes/api/auth/oauth/_provider_.mjs +5 -4
- package/dist/astro/routes/api/auth/passkey/_id_.mjs +7 -7
- package/dist/astro/routes/api/auth/passkey/index.mjs +1 -1
- package/dist/astro/routes/api/auth/passkey/options.mjs +14 -13
- package/dist/astro/routes/api/auth/passkey/register/options.mjs +11 -11
- package/dist/astro/routes/api/auth/passkey/register/verify.mjs +12 -12
- package/dist/astro/routes/api/auth/passkey/verify.mjs +12 -12
- package/dist/astro/routes/api/auth/setup-token/index.mjs +32 -23
- package/dist/astro/routes/api/auth/setup-token/verify.mjs +32 -26
- package/dist/astro/routes/api/auth/signup/complete.mjs +12 -12
- package/dist/astro/routes/api/auth/signup/request.mjs +12 -11
- package/dist/astro/routes/api/auth/signup/verify.mjs +1 -1
- package/dist/astro/routes/api/comments/_collection_/_contentId_/index.d.mts +73 -2
- package/dist/astro/routes/api/comments/_collection_/_contentId_/index.mjs +91 -49
- package/dist/astro/routes/api/comments/_collection_/_contentId_/reactions.mjs +19 -16
- package/dist/astro/routes/api/content/_collection_/_id_/compare.mjs +2 -2
- package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.mjs +8 -7
- package/dist/astro/routes/api/content/_collection_/_id_/duplicate.mjs +8 -7
- package/dist/astro/routes/api/content/_collection_/_id_/permanent.mjs +8 -7
- package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs +24 -21
- package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs +34 -22
- package/dist/astro/routes/api/content/_collection_/_id_/release-readiness.mjs +9 -9
- package/dist/astro/routes/api/content/_collection_/_id_/restore.mjs +8 -7
- package/dist/astro/routes/api/content/_collection_/_id_/revisions.mjs +2 -2
- package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs +34 -22
- package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs +23 -19
- package/dist/astro/routes/api/content/_collection_/_id_/translations.mjs +2 -2
- package/dist/astro/routes/api/content/_collection_/_id_/unpublish.mjs +8 -7
- package/dist/astro/routes/api/content/_collection_/_id_.mjs +14 -13
- package/dist/astro/routes/api/content/_collection_/authors.mjs +2 -2
- package/dist/astro/routes/api/content/_collection_/index.mjs +14 -13
- package/dist/astro/routes/api/content/_collection_/trash.mjs +8 -8
- package/dist/astro/routes/api/dashboard.mjs +16 -11
- package/dist/astro/routes/api/dev/emails.mjs +2 -2
- package/dist/astro/routes/api/health.mjs +1 -1
- package/dist/astro/routes/api/import/probe.d.mts +3 -3
- package/dist/astro/routes/api/import/probe.mjs +25 -24
- package/dist/astro/routes/api/import/wordpress/analyze.mjs +12 -11
- package/dist/astro/routes/api/import/wordpress/execute.d.mts +9 -9
- package/dist/astro/routes/api/import/wordpress/execute.mjs +50 -42
- package/dist/astro/routes/api/import/wordpress/media.d.mts +9 -9
- package/dist/astro/routes/api/import/wordpress/media.mjs +14 -14
- package/dist/astro/routes/api/import/wordpress/prepare.mjs +51 -40
- package/dist/astro/routes/api/import/wordpress/rewrite-urls.d.mts +10 -10
- package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs +49 -38
- package/dist/astro/routes/api/import/wordpress-plugin/analyze.d.mts +1 -1
- package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs +29 -27
- package/dist/astro/routes/api/import/wordpress-plugin/callback.mjs +1 -1
- package/dist/astro/routes/api/import/wordpress-plugin/execute.d.mts +9 -9
- package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs +55 -47
- package/dist/astro/routes/api/integration/artifact.mjs +11 -8
- package/dist/astro/routes/api/integration/dispatch.mjs +17 -14
- package/dist/astro/routes/api/integrations/_provider_.mjs +11 -8
- package/dist/astro/routes/api/integrations/index.mjs +10 -7
- package/dist/astro/routes/api/manifest.mjs +5 -5
- package/dist/astro/routes/api/mcp.mjs +97 -88
- package/dist/astro/routes/api/media/_id_/confirm.mjs +12 -12
- package/dist/astro/routes/api/media/_id_.mjs +9 -9
- package/dist/astro/routes/api/media/file/_...key_.mjs +1 -1
- package/dist/astro/routes/api/media/providers/_providerId_/_itemId_.mjs +2 -2
- package/dist/astro/routes/api/media/providers/_providerId_/index.mjs +2 -2
- package/dist/astro/routes/api/media/providers/index.mjs +2 -2
- package/dist/astro/routes/api/media/upload-url.mjs +13 -13
- package/dist/astro/routes/api/media.mjs +16 -16
- package/dist/astro/routes/api/menus/_name_/items/_id_.mjs +47 -36
- package/dist/astro/routes/api/menus/_name_/items.mjs +47 -36
- package/dist/astro/routes/api/menus/_name_/reorder.mjs +47 -36
- package/dist/astro/routes/api/menus/_name_/translations.mjs +47 -36
- package/dist/astro/routes/api/menus/_name_.mjs +47 -36
- package/dist/astro/routes/api/menus/index.mjs +47 -36
- package/dist/astro/routes/api/oauth/authorize.mjs +9 -7
- package/dist/astro/routes/api/oauth/device/authorize.mjs +7 -6
- package/dist/astro/routes/api/oauth/device/code.mjs +11 -9
- package/dist/astro/routes/api/oauth/device/token.mjs +10 -8
- package/dist/astro/routes/api/oauth/register.mjs +4 -4
- package/dist/astro/routes/api/oauth/token/refresh.mjs +7 -6
- package/dist/astro/routes/api/oauth/token/revoke.mjs +7 -6
- package/dist/astro/routes/api/oauth/token.mjs +8 -6
- package/dist/astro/routes/api/openapi.json.mjs +5 -5
- package/dist/astro/routes/api/plugins/_pluginId_/_...path_.mjs +4 -4
- package/dist/astro/routes/api/redirects/404s/index.mjs +15 -14
- package/dist/astro/routes/api/redirects/404s/summary.mjs +15 -14
- package/dist/astro/routes/api/redirects/_id_.mjs +47 -37
- package/dist/astro/routes/api/redirects/index.mjs +47 -37
- package/dist/astro/routes/api/revisions/_revisionId_/index.mjs +2 -2
- package/dist/astro/routes/api/revisions/_revisionId_/restore.mjs +2 -2
- package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs +65 -60
- package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs +65 -60
- package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs +65 -60
- package/dist/astro/routes/api/schema/collections/_slug_/index.mjs +65 -60
- package/dist/astro/routes/api/schema/collections/index.mjs +65 -60
- package/dist/astro/routes/api/schema/index.mjs +12 -11
- package/dist/astro/routes/api/schema/orphans/_slug_.mjs +63 -58
- package/dist/astro/routes/api/schema/orphans/index.mjs +63 -58
- package/dist/astro/routes/api/search/enable.mjs +15 -14
- package/dist/astro/routes/api/search/index.mjs +14 -13
- package/dist/astro/routes/api/search/rebuild.mjs +15 -14
- package/dist/astro/routes/api/search/stats.mjs +9 -8
- package/dist/astro/routes/api/search/suggest.mjs +14 -13
- package/dist/astro/routes/api/sections/_slug_.mjs +47 -36
- package/dist/astro/routes/api/sections/index.mjs +47 -36
- package/dist/astro/routes/api/settings/email.mjs +5 -5
- package/dist/astro/routes/api/settings/reviews.mjs +11 -10
- package/dist/astro/routes/api/settings.mjs +47 -36
- package/dist/astro/routes/api/setup/admin-verify.mjs +14 -14
- package/dist/astro/routes/api/setup/admin.mjs +12 -12
- package/dist/astro/routes/api/setup/dev-bypass.mjs +35 -31
- package/dist/astro/routes/api/setup/dev-reset.mjs +2 -2
- package/dist/astro/routes/api/setup/index.mjs +37 -33
- package/dist/astro/routes/api/setup/status.mjs +3 -3
- package/dist/astro/routes/api/snapshot.mjs +11 -9
- package/dist/astro/routes/api/system/heartbeat.mjs +2 -2
- package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.mjs +50 -39
- package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs +50 -39
- package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs +50 -39
- package/dist/astro/routes/api/taxonomies/index.mjs +50 -39
- package/dist/astro/routes/api/themes/preview.mjs +8 -6
- package/dist/astro/routes/api/typegen.mjs +4 -4
- package/dist/astro/routes/api/well-known/auth.mjs +3 -3
- package/dist/astro/routes/api/well-known/oauth-authorization-server.mjs +3 -3
- package/dist/astro/routes/api/well-known/oauth-protected-resource.mjs +3 -3
- package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs +46 -35
- package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs +47 -36
- package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs +47 -36
- package/dist/astro/routes/api/widget-areas/_name_.mjs +44 -33
- package/dist/astro/routes/api/widget-areas/index.mjs +47 -36
- package/dist/astro/routes/api/widget-components.mjs +2 -2
- package/dist/astro/routes/robots.txt.mjs +11 -10
- package/dist/astro/routes/sitemap-_collection_.xml.mjs +20 -18
- package/dist/astro/routes/sitemap.xml.mjs +19 -17
- package/dist/astro/session-driver.d.mts +1 -1
- package/dist/astro/session-driver.mjs +4 -4
- package/dist/astro/types.d.mts +13 -13
- package/dist/atomic-authority-CnBQJ14T.mjs +33 -0
- package/dist/{audit-CYjfxG9i.mjs → audit-F5iWkbcJ.mjs} +11 -4
- package/dist/auth/providers/github.d.mts +1 -1
- package/dist/auth/providers/google.d.mts +1 -1
- package/dist/{auth-control-guard-CITT8ZA_.mjs → auth-control-guard-DPOSBNFI.mjs} +1 -1
- package/dist/{authorize-KcI0pAfN.mjs → authorize-CXIjxIfC.mjs} +1 -1
- package/dist/{briefing-BgQTljQt.mjs → briefing-5zf0YZbR.mjs} +445 -447
- package/dist/{briefing-r3hXCDQC.mjs → briefing-DiupPvyN.mjs} +1 -1
- package/dist/{bundle-S6zx-V4D.mjs → bundle-DImnxo71.mjs} +3 -3
- package/dist/{byline-Ctil4rij.mjs → byline-DEZKlzD9.mjs} +107 -113
- package/dist/{byline-fields-51ja6JDa.d.mts → byline-fields-BO96fXLv.d.mts} +8 -8
- package/dist/{byline-fields-DiCyW6eQ.mjs → byline-fields-CY6V0ew1.mjs} +1 -1
- package/dist/{byline-fields-QpmruT5r.mjs → byline-fields-DGNKitg3.mjs} +3 -3
- package/dist/{byline-registry-rkr73qSE.mjs → byline-registry-CkuVVeJJ.mjs} +46 -76
- package/dist/{bylines-v_ZUQnR-.mjs → bylines-CXyKpVLQ.mjs} +6 -6
- package/dist/{bylines-BcuBpzVi.mjs → bylines-gSAfpHl4.mjs} +4 -4
- package/dist/{cache-V2BCplaY.mjs → cache-DZDOBJv3.mjs} +2 -2
- package/dist/{chunks-CnuL55JE.mjs → chunks-BnG3LPMN.mjs} +1 -1
- package/dist/cli/index.mjs +452 -263
- package/dist/cli/plugin-kit.d.mts +9 -9
- package/dist/cli/plugin-kit.mjs +2 -2
- package/dist/client/external-auth-headers.d.mts +1 -1
- package/dist/client/index.d.mts +11 -11
- package/dist/client/index.mjs +2 -2
- package/dist/{client-factory-C-y9VZDX.mjs → client-factory-6vLLT06O.mjs} +1 -1
- package/dist/{comment-_nvJSS-A.mjs → comment-kgLTdtQD.mjs} +15 -8
- package/dist/{comment-reaction-DhVgJ17S.mjs → comment-reaction-Cun5eIXL.mjs} +1 -1
- package/dist/{comments-D4mIDjvA.mjs → comments-ZYK_cZvx.mjs} +1 -1
- package/dist/{content-CVCrcuvD.mjs → content-D9xKUSno.mjs} +287 -165
- package/dist/{content-refresh-QvBIyb_g.mjs → content-refresh-9M9cc55-.mjs} +170 -193
- package/dist/{context-JjKucxBm.mjs → context-BU8AbLmY.mjs} +2 -2
- package/dist/{context-MftkHbWx.mjs → context-C5lPtfeh.mjs} +95 -77
- package/dist/{context-route-helpers-e1APrqSm.mjs → context-route-helpers-CWAHJFl3.mjs} +2 -2
- package/dist/{cron-mGVPQ5e6.mjs → cron-BVYo08mi.mjs} +36 -32
- package/dist/d1-binding-D6HZa3ks.mjs +8 -0
- package/dist/d1-dialect-BBxPg6Om.mjs +48 -0
- package/dist/{dashboard-ZJ7sMcBI.mjs → dashboard-BnD5krLg.mjs} +5 -5
- package/dist/database/batch.d.mts +22 -0
- package/dist/database/batch.mjs +92 -0
- package/dist/database/d1/index.d.mts +18 -0
- package/dist/database/d1/index.mjs +8 -0
- package/dist/db/d1.d.mts +7 -0
- package/dist/db/d1.mjs +13 -0
- package/dist/db/index.d.mts +4 -4
- package/dist/db/index.mjs +10 -7
- package/dist/db/libsql.d.mts +1 -1
- package/dist/db/libsql.mjs +46 -3
- package/dist/db/postgres.d.mts +1 -1
- package/dist/db/sqlite.d.mts +1 -1
- package/dist/{device-flow-eOcL5m0Q.mjs → device-flow-Prqg6ycD.mjs} +130 -94
- package/dist/{dialect-helpers-fk43GbDb.mjs → dialect-helpers-C6xtO-Ui.mjs} +1 -1
- package/dist/{discovery-CJkuHGhZ.mjs → discovery-CYcZJ1o3.mjs} +5 -5
- package/dist/{enrich-KErvJOuI.mjs → enrich-BjF-J4sF.mjs} +1 -1
- package/dist/{evidence-6IUv9ML3.mjs → evidence-krrA3uiG.mjs} +7 -7
- package/dist/{field-defs-cache-CwrIyZFT.mjs → field-defs-cache-BKKFFf_V.mjs} +5 -5
- package/dist/{forgeway-account-lYJ8iX3G.mjs → forgeway-account-CnWOIusE.mjs} +1 -1
- package/dist/{fts-manager-DX7ZkrCa.mjs → fts-manager-DA74x_uP.mjs} +72 -57
- package/dist/{hitl-requests-CmYVunm-.mjs → hitl-requests-CGjA1jND.mjs} +2 -2
- package/dist/{hitl-route-helpers-CRm537zS.mjs → hitl-route-helpers-BxSL0iZB.mjs} +5 -5
- package/dist/{import-DqRAgsKr.mjs → import-CayDCPaH.mjs} +9 -9
- package/dist/{index-Co7xtjkd.d.mts → index-mlJSqFkG.d.mts} +7 -4
- package/dist/index.d.mts +16 -16
- package/dist/index.mjs +103 -96
- package/dist/{integration-credentials-qudN6yRr.mjs → integration-credentials-Br16M1VE.mjs} +2 -2
- package/dist/{jsonld-BpvnSp2m.d.mts → jsonld-BUiFEiCZ.d.mts} +2 -2
- package/dist/{load-fCOciq0Q.mjs → load-B2oitobd.mjs} +1 -1
- package/dist/{loader-BDje8ME2.mjs → loader-Cgsx23wU.mjs} +4 -4
- package/dist/{manifest-schema-CfKD0thC.mjs → manifest-schema-DBXM_g8l.mjs} +1 -1
- package/dist/{mcp-reviewed-executor-DmhM3Cy6.mjs → mcp-reviewed-executor-RJ71uyQb.mjs} +7 -7
- package/dist/media/image-endpoint.mjs +1 -1
- package/dist/media/index.d.mts +1 -1
- package/dist/media/index.mjs +2 -2
- package/dist/media/local-runtime.d.mts +11 -11
- package/dist/media/local-runtime.mjs +3 -3
- package/dist/{media-dvRjj4po.mjs → media-BZqwtRTZ.mjs} +12 -4
- package/dist/{media-allowlist-DaG6lNoy.mjs → media-allowlist-CyByjUXh.mjs} +1 -1
- package/dist/{menus-CZbz5L_V.mjs → menus-2o-DVcwA.mjs} +8 -8
- package/dist/{menus-CpuR4Qkm.mjs → menus-5liJusbp.mjs} +138 -90
- package/dist/migrations-C7YXse7V.mjs +76 -0
- package/dist/oauth-authority-DOjME4Hh.mjs +43 -0
- package/dist/{oauth-authorization-Jf5e3azH.mjs → oauth-authorization-B_mmz7O2.mjs} +89 -98
- package/dist/{oauth-clients-tovQ4D4h.mjs → oauth-clients-Cr4pdIAE.mjs} +2 -2
- package/dist/object-cache/memory.d.mts +1 -1
- package/dist/{object-cache-D51qOseS.mjs → object-cache-BGjIlY9s.mjs} +1 -1
- package/dist/page/index.d.mts +10 -10
- package/dist/page/index.mjs +1 -1
- package/dist/{parse-IsGn-5lt.mjs → parse-BscLr3p2.mjs} +1 -1
- package/dist/plugin-utils.d.mts +9 -9
- package/dist/plugins/adapt-sandbox-entry.d.mts +9 -9
- package/dist/plugins/adapt-sandbox-entry.mjs +1 -1
- package/dist/{plugins-DXyLI3Hb.mjs → plugins-f48yrwfI.mjs} +35 -84
- package/dist/{policy-DKdNMv8y.mjs → policy-CrK1vl8l.mjs} +2 -2
- package/dist/{preview-BXmS1SXL.mjs → preview-E1xKZGsX.mjs} +2 -2
- package/dist/{provider-loader-DDq7R_RN.d.mts → provider-loader-H2wdGD0o.d.mts} +1 -1
- package/dist/{public-url-Ci7UbC0W.d.mts → public-url-CI700CW4.d.mts} +1 -1
- package/dist/{public-url-BQ9vf0AS.d.mts → public-url-zoO-QbN6.d.mts} +2 -2
- package/dist/{publication-authorization-C-vYPGD8.mjs → publication-authorization-Dq_20SZR.mjs} +458 -33
- package/dist/{query-DcB9uGTW.mjs → query-BkWWdxyb.mjs} +4 -4
- package/dist/{query-CrW2yI6G.mjs → query-D6oNo9iz.mjs} +15 -15
- package/dist/{rate-limit-DEkoxTsP.mjs → rate-limit-RaBJEgyt.mjs} +2 -2
- package/dist/{redirect-DG-o0CKV.mjs → redirect-HLI3wT5Y.mjs} +26 -14
- package/dist/{redirects-Bjp4iKJU.mjs → redirects-D16GFaOa.mjs} +5 -5
- package/dist/{redirects-N8gmWhVM.mjs → redirects-DpRiuRWn.mjs} +3 -3
- package/dist/{registry-D-IV_h50.mjs → registry-DcV93OL_.mjs} +183 -186
- package/dist/release-CZfAeyXm.mjs +5148 -0
- package/dist/request-context.d.mts +8 -0
- package/dist/{request-meta-BW0the1R.mjs → request-meta-C6yGqnGD.mjs} +1 -1
- package/dist/{resolve-pZ4NQM-X.mjs → resolve-CpOV2jt_.mjs} +1 -1
- package/dist/review-payload-LLIi1sxO.mjs +1386 -0
- package/dist/{review-requests-DICrYH2-.mjs → review-requests-BF2eEKr8.mjs} +93 -37
- package/dist/{review-requests-BTKfeWlS.mjs → review-requests-C7prIbCo.mjs} +2 -2
- package/dist/{review-route-helpers-DaZBBps8.mjs → review-route-helpers-BYx3Px90.mjs} +2 -2
- package/dist/{revision-De7OmYVD.mjs → revision-090sZyGc.mjs} +28 -22
- package/dist/revocation-DZ8e4JCS.mjs +53 -0
- package/dist/{runner-DJiRFyLI.mjs → runner-CVeq0266.mjs} +594 -491
- package/dist/{runner-Dye73myO.d.mts → runner-Cxl-vyk2.d.mts} +1 -1
- package/dist/{runs-DEujUDOj.mjs → runs-B8kCirJ6.mjs} +5 -5
- package/dist/runtime-env-v-1UXPAH.mjs +19 -0
- package/dist/runtime.d.mts +10 -10
- package/dist/runtime.mjs +5 -5
- package/dist/schema-DFeC5axi.mjs +8 -0
- package/dist/{search-DxUKN9Zz.mjs → search-C9qOBgvo.mjs} +4 -4
- package/dist/{secrets-AdCrGg1c.mjs → secrets-BP2YTPWn.mjs} +10 -11
- package/dist/{sections-BPFOEMK6.mjs → sections-CkoQY7Z9.mjs} +2 -2
- package/dist/seed/index.d.mts +2 -2
- package/dist/seed/index.mjs +29 -25
- package/dist/seo/index.d.mts +3 -3
- package/dist/seo/index.mjs +11 -10
- package/dist/{seo-GfovzqpU.mjs → seo-Bypxm1iD.mjs} +1 -1
- package/dist/{seo-DWHdo5aW.mjs → seo-DYpc_rQ1.mjs} +25 -15
- package/dist/{service-BrNKVCjC.mjs → service-DOFqfUVv.mjs} +46 -21
- package/dist/{service-DbgjHWyW.mjs → service-mJBl4ZP4.mjs} +2 -2
- package/dist/{session-user-D8WwGEPH.mjs → session-user-DacoiKrJ.mjs} +1 -1
- package/dist/{settings-BKEHw6Bu.mjs → settings-2p7TuNWG.mjs} +2 -2
- package/dist/{settings-CAsQLi0N.mjs → settings-DRFy8JQx.mjs} +8 -8
- package/dist/{setup-complete-CHCYS5KV.mjs → setup-complete-CWMnrNFN.mjs} +1 -1
- package/dist/{site-activity-7oezuHXK.mjs → site-activity-BrN2NviL.mjs} +11 -4
- package/dist/{site-context-CA7rbxux.mjs → site-context-D9oETfxF.mjs} +50 -37
- package/dist/{site-url-DoZf_jVj.mjs → site-url-DoTPKRND.mjs} +1 -1
- package/dist/state-D8AogXCV.mjs +30 -0
- package/dist/storage/local.d.mts +1 -1
- package/dist/storage/local.mjs +1 -1
- package/dist/storage/s3.d.mts +1 -1
- package/dist/storage/s3.mjs +3 -3
- package/dist/{store-c4qx3gVh.mjs → store-CjmmGlVw.mjs} +37 -12
- package/dist/submission-BLvkvewK.mjs +411 -0
- package/dist/{taxonomies-ALDiRQ84.mjs → taxonomies-C5ayPp3T.mjs} +3 -3
- package/dist/{taxonomies-93DV-1QT.mjs → taxonomies-DW6Fps-w.mjs} +7 -7
- package/dist/{taxonomy-BOBTJ_aE.mjs → taxonomy-DWxxLpp5.mjs} +3 -3
- package/dist/{tokens-c-qxNqzC.mjs → tokens-I3tSjoFI.mjs} +1 -1
- package/dist/{trusted-proxy-CdEl6g6B.mjs → trusted-proxy-CvDP0g0F.mjs} +4 -12
- package/dist/{types-6KmeXInJ.d.mts → types-BFoQ5a1v.d.mts} +1 -1
- package/dist/{types-BpSTdH1H.mjs → types-BqxIv8Il.mjs} +2 -2
- package/dist/{types-BRCUO8NR.d.mts → types-CVRNRAA5.d.mts} +1 -0
- package/dist/{types-CfpX1og5.d.mts → types-Tt_IGMno.d.mts} +360 -172
- package/dist/ui/server-runtime.d.mts +13 -13
- package/dist/ui/server-runtime.mjs +28 -26
- package/dist/{user-D0NJ7gYf.mjs → user-1-YV30lf.mjs} +2 -2
- package/dist/{utils-BK2efsHv.mjs → utils-BoWkoty8.mjs} +2 -2
- package/dist/{validate-CDWVODvc.d.mts → validate-CCOsvPg2.d.mts} +3 -3
- package/dist/{validate-C9g9iX3q.mjs → validate-CupwWNWL.mjs} +3 -3
- package/dist/version-DpT-k_Ny.mjs +6 -0
- package/dist/{widgets-Cm5Qx2Np.mjs → widgets-DbOctkXv.mjs} +3 -3
- package/dist/{wordpress-slugs-WdPZaVXf.mjs → wordpress-slugs-pQlLXbKn.mjs} +1 -1
- package/dist/{worker-Bhuu7eqS.mjs → worker-wjRq4FI9.mjs} +76 -47
- package/dist/workers-build-QVrquLLe.mjs +36 -0
- package/dist/{zod-generator-DS5oZNaL.mjs → zod-generator-BzACAoR5.mjs} +2 -2
- package/package.json +34 -8
- package/dist/after-BfniwgIf.mjs +0 -9
- package/dist/api-tokens-CmT83Bgj.mjs +0 -3
- package/dist/db/libsql-http.d.mts +0 -27
- package/dist/db/libsql-http.mjs +0 -29
- package/dist/libsql-dialect-CANq6UNI.mjs +0 -47
- package/dist/oauth-user-lookup-B451pZmd.mjs +0 -25
- package/dist/review-payload-f1L4lzQg.mjs +0 -111
- package/dist/revocation-CkTOhdlw.mjs +0 -42
- package/dist/schema-IjuRxkqq.mjs +0 -8
- package/dist/submission-C47cHBIg.mjs +0 -67
- package/dist/transaction-BGQgnwUi.mjs +0 -28
- package/dist/version-CJqc1mwj.mjs +0 -6
- /package/dist/{base64-F8-DUraK.mjs → base64-Cz-aU0X1.mjs} +0 -0
- /package/dist/{challenge-store-CDKfye2r.mjs → challenge-store-DFGsDtCj.mjs} +0 -0
- /package/dist/{components-DAq_4iPX.mjs → components-gMTtJqHg.mjs} +0 -0
- /package/dist/{config-CVssduLe.mjs → config-XW5tMrH8.mjs} +0 -0
- /package/dist/{content-index-names-Bbu1FY1r.mjs → content-index-names-CDc2IQIx.mjs} +0 -0
- /package/dist/{context-types-CPWAJRs5.mjs → context-types-DLD_HnKT.mjs} +0 -0
- /package/dist/{default-BeIzUa1e.mjs → default-w3MwLng7.mjs} +0 -0
- /package/dist/{email-console-Bfi_exVg.mjs → email-console-CpvgEN1w.mjs} +0 -0
- /package/dist/{error-DLg1H2LT.mjs → error-B-44r5TD.mjs} +0 -0
- /package/dist/{escape-C6lkys0j.mjs → escape-B1GM0yJU.mjs} +0 -0
- /package/dist/{experimental-workflows-B9x8delL.mjs → experimental-workflows-fzJHB3ZI.mjs} +0 -0
- /package/dist/{hash-jhbF98tT.mjs → hash-DvMZXj2L.mjs} +0 -0
- /package/dist/{media-url-CL3NzgLh.mjs → media-url-D-elxQjL.mjs} +0 -0
- /package/dist/{mime-CDTtL7jE.mjs → mime-D_ae-u_U.mjs} +0 -0
- /package/dist/{mode-DJeacFCZ.mjs → mode-BJwb_MgK.mjs} +0 -0
- /package/dist/{normalize-Ev3FiBMx.mjs → normalize-5rct_U0I.mjs} +0 -0
- /package/dist/{oauth-state-store-Do1a_o3H.mjs → oauth-state-store-D2H9hKcN.mjs} +0 -0
- /package/dist/{options-1dBRkoCl.mjs → options-BcqHWpc-.mjs} +0 -0
- /package/dist/{output-8j9oltTf.mjs → output-CdmbQioY.mjs} +0 -0
- /package/dist/{parser-C9rzPuSZ.mjs → parser-ehIlj32k.mjs} +0 -0
- /package/dist/{passkey-config-CRN44T04.mjs → passkey-config-sUQoLEj_.mjs} +0 -0
- /package/dist/{patterns-3XE9bU4r.mjs → patterns-CZ7D4y_R.mjs} +0 -0
- /package/dist/{placeholder-D03pGvqM.d.mts → placeholder-CQKI6vLd.d.mts} +0 -0
- /package/dist/{portable-text-BdRm4uZq.d.mts → portable-text-BE7nszX6.d.mts} +0 -0
- /package/dist/{portable-text-tIk9_uz_.mjs → portable-text-DH3Om_2D.mjs} +0 -0
- /package/dist/{process-cache-B-L-A9zg.mjs → process-cache-MHM4Sqzs.mjs} +0 -0
- /package/dist/{provider-loader-C4i82ll1.mjs → provider-loader-Dnv2neOu.mjs} +0 -0
- /package/dist/{public-discovery-CyDzK1-S.mjs → public-discovery-CTql6jdZ.mjs} +0 -0
- /package/dist/{public-url-BVIjzMo3.mjs → public-url-4sMO36Gw.mjs} +0 -0
- /package/dist/{public-url-oudwI7K0.mjs → public-url-DNt9A1yS.mjs} +0 -0
- /package/dist/{redirect-Dp5u-8dH.mjs → redirect-Cjjb5VYr.mjs} +0 -0
- /package/dist/{request-cache-BruBnFAR.mjs → request-cache-DPmV5nk4.mjs} +0 -0
- /package/dist/{seo-contributions-BAtRDXEQ.mjs → seo-contributions-atY3jZEV.mjs} +0 -0
- /package/dist/{service-DeX1PRNt.mjs → service-CeEi6nax.mjs} +0 -0
- /package/dist/{setup-nonce-D-CEYlw7.mjs → setup-nonce-BUmfCiY1.mjs} +0 -0
- /package/dist/{sidecar-client-Bw2C0XTf.mjs → sidecar-client-CbrX8nuw.mjs} +0 -0
- /package/dist/{slugify-KSsVD_D3.mjs → slugify-Di8Q_MFq.mjs} +0 -0
- /package/dist/{ssrf-C7tTSD1r.mjs → ssrf-COxLChKv.mjs} +0 -0
- /package/dist/{stable-hash-DF7R5eN8.mjs → stable-hash-DEtJgcp7.mjs} +0 -0
- /package/dist/{status-Bba6RbkS.mjs → status-DBSB6tdS.mjs} +0 -0
- /package/dist/{transport-ktLL9r2O.d.mts → transport-CZbtxgKZ.d.mts} +0 -0
- /package/dist/{transport-BddGhTAI.mjs → transport-aPKvM53n.mjs} +0 -0
- /package/dist/{types-CKIt_jmM.d.mts → types-1qU0-N1P.d.mts} +0 -0
- /package/dist/{types-BQZFeZjd.mjs → types-BKsk4nnM.mjs} +0 -0
- /package/dist/{types-CLMOusxP.d.mts → types-BWsEjujW.d.mts} +0 -0
- /package/dist/{types--3oJQ0hs.d.mts → types-CAD4OvmF.d.mts} +0 -0
- /package/dist/{types-BbkkkAb6.mjs → types-ChSk0dmw.mjs} +0 -0
- /package/dist/{types-C0DPvhR5.mjs → types-CyBH89BS.mjs} +0 -0
- /package/dist/{types-CU3Wn2HC.d.mts → types-DNPP-eu4.d.mts} +0 -0
- /package/dist/{types-CPaVj_GC.d.mts → types-SddyDti7.d.mts} +0 -0
- /package/dist/{url-C_pLSrGZ.mjs → url-Ce0qtSdB.mjs} +0 -0
- /package/dist/{url-Dumsft7G.mjs → url-DfqolpO2.mjs} +0 -0
- /package/dist/{validate-VPnKoIzW.mjs → validate-Co3j6T_K.mjs} +0 -0
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { n as
|
|
5
|
-
import { n as
|
|
6
|
-
import { t as
|
|
7
|
-
import { t as
|
|
8
|
-
import { a as RESERVED_COLLECTION_SLUGS, o as RESERVED_FIELD_SLUGS, r as FIELD_TYPE_TO_COLUMN } from "./types-
|
|
9
|
-
import { a as markContentMediaUsageCollectionStaleSafely, n as deleteContentMediaUsageCollection } from "./content-refresh-
|
|
10
|
-
import { t as FTSManager } from "./fts-manager-
|
|
11
|
-
import { t as parsePublicDiscoveryRules } from "./public-discovery-
|
|
1
|
+
import { c as __exportAll } from "./runner-CVeq0266.mjs";
|
|
2
|
+
import { atomicBatch, rowUnchanged } from "./database/batch.mjs";
|
|
3
|
+
import { t as validateIdentifier } from "./validate-Co3j6T_K.mjs";
|
|
4
|
+
import { i as currentTimestamp, l as listTablesLike, n as columnExists, s as isSqlite, u as tableExists } from "./dialect-helpers-C6xtO-Ui.mjs";
|
|
5
|
+
import { n as contentLocaleUpdatedIndexName, t as contentLocaleCreatedIndexName } from "./content-index-names-CDc2IQIx.mjs";
|
|
6
|
+
import { n as chunks, t as SQL_BATCH_SIZE } from "./chunks-BnG3LPMN.mjs";
|
|
7
|
+
import { t as buildStableHash } from "./stable-hash-DEtJgcp7.mjs";
|
|
8
|
+
import { a as RESERVED_COLLECTION_SLUGS, o as RESERVED_FIELD_SLUGS, r as FIELD_TYPE_TO_COLUMN } from "./types-CyBH89BS.mjs";
|
|
9
|
+
import { a as markContentMediaUsageCollectionStaleSafely, n as deleteContentMediaUsageCollection } from "./content-refresh-9M9cc55-.mjs";
|
|
10
|
+
import { r as parseSearchConfig, t as FTSManager } from "./fts-manager-DA74x_uP.mjs";
|
|
11
|
+
import { t as parsePublicDiscoveryRules } from "./public-discovery-CTql6jdZ.mjs";
|
|
12
12
|
import { sql } from "kysely";
|
|
13
13
|
import { ulid } from "ulidx";
|
|
14
14
|
|
|
@@ -113,8 +113,14 @@ var SchemaRegistry = class {
|
|
|
113
113
|
* Get a collection by slug
|
|
114
114
|
*/
|
|
115
115
|
async getCollection(slug) {
|
|
116
|
+
return (await this.collectionSnapshot(slug))?.value ?? null;
|
|
117
|
+
}
|
|
118
|
+
async collectionSnapshot(slug) {
|
|
116
119
|
const row = await this.db.selectFrom("_dineway_collections").where("slug", "=", slug).selectAll().executeTakeFirst();
|
|
117
|
-
return row ?
|
|
120
|
+
return row ? {
|
|
121
|
+
row,
|
|
122
|
+
value: this.mapCollectionRow(row)
|
|
123
|
+
} : null;
|
|
118
124
|
}
|
|
119
125
|
/**
|
|
120
126
|
* Get a collection with all its fields
|
|
@@ -147,24 +153,21 @@ var SchemaRegistry = class {
|
|
|
147
153
|
const publicDiscovery = input.publicDiscovery == null ? void 0 : parsePublicDiscoveryRules(input.publicDiscovery);
|
|
148
154
|
const id = ulid();
|
|
149
155
|
const hasSeo = input.hasSeo ?? input.supports?.includes("seo") ?? false;
|
|
150
|
-
await
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
}).execute();
|
|
166
|
-
await this.createContentTable(input.slug, trx);
|
|
167
|
-
});
|
|
156
|
+
await atomicBatch(this.db, { statements: [this.db.insertInto("_dineway_collections").values({
|
|
157
|
+
id,
|
|
158
|
+
slug: input.slug,
|
|
159
|
+
label: input.label,
|
|
160
|
+
label_singular: input.labelSingular ?? null,
|
|
161
|
+
description: input.description ?? null,
|
|
162
|
+
icon: input.icon ?? null,
|
|
163
|
+
supports: input.supports ? JSON.stringify(input.supports) : null,
|
|
164
|
+
source: input.source ?? "manual",
|
|
165
|
+
has_seo: hasSeo ? 1 : 0,
|
|
166
|
+
comments_enabled: input.commentsEnabled ? 1 : 0,
|
|
167
|
+
url_pattern: input.urlPattern ?? null,
|
|
168
|
+
url_field: input.urlField || null,
|
|
169
|
+
public_discovery: publicDiscovery ? JSON.stringify(publicDiscovery) : null
|
|
170
|
+
}).compile(), ...this.contentTableStatements(input.slug)] });
|
|
168
171
|
const collection = await this.getCollection(input.slug);
|
|
169
172
|
if (!collection) throw new SchemaError("Failed to create collection", "CREATE_FAILED");
|
|
170
173
|
return collection;
|
|
@@ -173,8 +176,9 @@ var SchemaRegistry = class {
|
|
|
173
176
|
* Update a collection
|
|
174
177
|
*/
|
|
175
178
|
async updateCollection(slug, input) {
|
|
176
|
-
const
|
|
177
|
-
if (!
|
|
179
|
+
const snapshot = await this.collectionSnapshot(slug);
|
|
180
|
+
if (!snapshot) throw new SchemaError(`Collection "${slug}" not found`, "COLLECTION_NOT_FOUND");
|
|
181
|
+
const existing = snapshot.value;
|
|
178
182
|
const labelChanged = input.label !== void 0 && input.label !== existing.label;
|
|
179
183
|
const labelSingularChanged = input.labelSingular !== void 0 && input.labelSingular !== (existing.labelSingular ?? void 0);
|
|
180
184
|
if (labelChanged || labelSingularChanged) await this.checkLabelUniqueness(labelChanged ? input.label : void 0, labelSingularChanged ? input.labelSingular : void 0, slug);
|
|
@@ -188,8 +192,10 @@ var SchemaRegistry = class {
|
|
|
188
192
|
const publicDiscovery = input.publicDiscovery === void 0 ? existing.publicDiscovery : input.publicDiscovery === null ? void 0 : parsePublicDiscoveryRules(input.publicDiscovery);
|
|
189
193
|
const supportsArray = input.supports ?? existing.supports;
|
|
190
194
|
const hasSeo = input.hasSeo !== void 0 ? input.hasSeo : input.supports !== void 0 ? supportsArray.includes("seo") : existing.hasSeo;
|
|
191
|
-
|
|
192
|
-
|
|
195
|
+
const search = input.supports !== void 0 && input.supports.includes("search") !== existing.supports.includes("search") ? await this.searchStatePlan(slug, { supports: input.supports }) : { statements: [] };
|
|
196
|
+
await atomicBatch(this.db, {
|
|
197
|
+
checks: [rowUnchanged("_dineway_collections", snapshot.row), ...search.checks ?? []],
|
|
198
|
+
statements: [this.db.updateTable("_dineway_collections").set({
|
|
193
199
|
label: input.label ?? existing.label,
|
|
194
200
|
label_singular: input.labelSingular ?? existing.labelSingular ?? null,
|
|
195
201
|
description: input.description ?? existing.description ?? null,
|
|
@@ -204,14 +210,11 @@ var SchemaRegistry = class {
|
|
|
204
210
|
comments_closed_after_days: input.commentsClosedAfterDays !== void 0 ? input.commentsClosedAfterDays : existing.commentsClosedAfterDays,
|
|
205
211
|
comments_auto_approve_users: input.commentsAutoApproveUsers !== void 0 ? input.commentsAutoApproveUsers ? 1 : 0 : existing.commentsAutoApproveUsers ? 1 : 0,
|
|
206
212
|
updated_at: now
|
|
207
|
-
}).where("slug", "=", slug).
|
|
208
|
-
const row = await trx.selectFrom("_dineway_collections").where("slug", "=", slug).selectAll().executeTakeFirst();
|
|
209
|
-
if (!row) throw new SchemaError("Failed to update collection", "UPDATE_FAILED");
|
|
210
|
-
if (input.supports !== void 0) {
|
|
211
|
-
if (existing.supports.includes("search") !== parseSupports(row.supports).includes("search")) await this.syncSearchState(slug, trx);
|
|
212
|
-
}
|
|
213
|
-
return this.mapCollectionRow(row);
|
|
213
|
+
}).where("slug", "=", slug).compile(), ...search.statements]
|
|
214
214
|
});
|
|
215
|
+
const updated = await this.getCollection(slug);
|
|
216
|
+
if (!updated) throw new SchemaError("Failed to update collection", "UPDATE_FAILED");
|
|
217
|
+
return updated;
|
|
215
218
|
}
|
|
216
219
|
async validateUrlPattern(urlPattern) {
|
|
217
220
|
if (!urlPattern) return;
|
|
@@ -246,24 +249,20 @@ var SchemaRegistry = class {
|
|
|
246
249
|
* Delete a collection
|
|
247
250
|
*/
|
|
248
251
|
async deleteCollection(slug, options) {
|
|
249
|
-
const
|
|
250
|
-
if (!
|
|
252
|
+
const snapshot = await this.collectionSnapshot(slug);
|
|
253
|
+
if (!snapshot) throw new SchemaError(`Collection "${slug}" not found`, "COLLECTION_NOT_FOUND");
|
|
251
254
|
if (!options?.force) {
|
|
252
255
|
if (await this.collectionHasContent(slug)) throw new SchemaError(`Collection "${slug}" has content. Use force: true to delete.`, "COLLECTION_HAS_CONTENT");
|
|
253
256
|
}
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
} catch (error) {
|
|
264
|
-
if (contentTableDropped && !await tableExists(this.db, this.getTableName(slug))) await deleteContentMediaUsageCollection(this.db, slug);
|
|
265
|
-
throw error;
|
|
266
|
-
}
|
|
257
|
+
await atomicBatch(this.db, {
|
|
258
|
+
checks: [rowUnchanged("_dineway_collections", snapshot.row), ...options?.force ? [] : [sql`NOT EXISTS (SELECT 1 FROM ${sql.ref(this.getTableName(slug))} WHERE deleted_at IS NULL)`]],
|
|
259
|
+
statements: [
|
|
260
|
+
...new FTSManager(this.db).dropStatements(slug),
|
|
261
|
+
sql`DROP TABLE IF EXISTS ${sql.ref(this.getTableName(slug))}`.compile(this.db),
|
|
262
|
+
this.db.deleteFrom("_dineway_collections").where("id", "=", snapshot.value.id).compile()
|
|
263
|
+
]
|
|
264
|
+
});
|
|
265
|
+
await deleteContentMediaUsageCollection(this.db, slug);
|
|
267
266
|
}
|
|
268
267
|
/**
|
|
269
268
|
* List fields for a collection
|
|
@@ -275,10 +274,16 @@ var SchemaRegistry = class {
|
|
|
275
274
|
* Get a field by slug within a collection
|
|
276
275
|
*/
|
|
277
276
|
async getField(collectionSlug, fieldSlug) {
|
|
277
|
+
return (await this.fieldSnapshot(collectionSlug, fieldSlug))?.value ?? null;
|
|
278
|
+
}
|
|
279
|
+
async fieldSnapshot(collectionSlug, fieldSlug) {
|
|
278
280
|
const collection = await this.getCollection(collectionSlug);
|
|
279
281
|
if (!collection) return null;
|
|
280
282
|
const row = await this.db.selectFrom("_dineway_fields").where("collection_id", "=", collection.id).where("slug", "=", fieldSlug).selectAll().executeTakeFirst();
|
|
281
|
-
return row ?
|
|
283
|
+
return row ? {
|
|
284
|
+
row,
|
|
285
|
+
value: this.mapFieldRow(row)
|
|
286
|
+
} : null;
|
|
282
287
|
}
|
|
283
288
|
/**
|
|
284
289
|
* Create a new field
|
|
@@ -293,10 +298,11 @@ var SchemaRegistry = class {
|
|
|
293
298
|
const columnType = FIELD_TYPE_TO_COLUMN[input.type];
|
|
294
299
|
const maxSort = await this.db.selectFrom("_dineway_fields").where("collection_id", "=", collection.id).select((eb) => eb.fn.max("sort_order").as("max")).executeTakeFirst();
|
|
295
300
|
const sortOrder = input.sortOrder ?? (maxSort?.max ?? -1) + 1;
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
301
|
+
const search = input.searchable ? await this.searchStatePlan(collectionSlug, { add: input.slug }) : { statements: [] };
|
|
302
|
+
await atomicBatch(this.db, {
|
|
303
|
+
checks: search.checks,
|
|
304
|
+
statements: [
|
|
305
|
+
this.db.insertInto("_dineway_fields").values({
|
|
300
306
|
id,
|
|
301
307
|
collection_id: collection.id,
|
|
302
308
|
slug: input.slug,
|
|
@@ -312,24 +318,18 @@ var SchemaRegistry = class {
|
|
|
312
318
|
sort_order: sortOrder,
|
|
313
319
|
searchable: input.searchable ? 1 : 0,
|
|
314
320
|
translatable: input.translatable === false ? 0 : 1
|
|
315
|
-
}).
|
|
316
|
-
|
|
317
|
-
await this.addColumn(collectionSlug, input.slug, input.type, {
|
|
321
|
+
}).compile(),
|
|
322
|
+
this.columnStatement(collectionSlug, input.slug, input.type, {
|
|
318
323
|
required: input.required,
|
|
319
324
|
defaultValue: input.defaultValue
|
|
320
|
-
},
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
return created;
|
|
329
|
-
} catch (error) {
|
|
330
|
-
if (schemaMutated) await markContentMediaUsageCollectionStaleSafely(this.db, collectionSlug, "CONTENT_USAGE_STALE");
|
|
331
|
-
throw error;
|
|
332
|
-
}
|
|
325
|
+
}),
|
|
326
|
+
...search.statements
|
|
327
|
+
]
|
|
328
|
+
});
|
|
329
|
+
const created = await this.getField(collectionSlug, input.slug);
|
|
330
|
+
if (!created) throw new SchemaError("Failed to create field", "CREATE_FAILED");
|
|
331
|
+
await markContentMediaUsageCollectionStaleSafely(this.db, collectionSlug, "CONTENT_USAGE_STALE");
|
|
332
|
+
return created;
|
|
333
333
|
}
|
|
334
334
|
/**
|
|
335
335
|
* Ensure the content table for an existing collection exists.
|
|
@@ -341,7 +341,7 @@ var SchemaRegistry = class {
|
|
|
341
341
|
if (!await this.getCollection(collectionSlug)) throw new SchemaError(`Collection "${collectionSlug}" not found`, "COLLECTION_NOT_FOUND");
|
|
342
342
|
const tableName = this.getTableName(collectionSlug);
|
|
343
343
|
if (await tableExists(this.db, tableName)) return false;
|
|
344
|
-
await this.
|
|
344
|
+
await atomicBatch(this.db, { statements: this.contentTableStatements(collectionSlug) });
|
|
345
345
|
return true;
|
|
346
346
|
}
|
|
347
347
|
/**
|
|
@@ -367,8 +367,9 @@ var SchemaRegistry = class {
|
|
|
367
367
|
* Update a field
|
|
368
368
|
*/
|
|
369
369
|
async updateField(collectionSlug, fieldSlug, input) {
|
|
370
|
-
const
|
|
371
|
-
if (!
|
|
370
|
+
const snapshot = await this.fieldSnapshot(collectionSlug, fieldSlug);
|
|
371
|
+
if (!snapshot) throw new SchemaError(`Field "${fieldSlug}" not found in collection "${collectionSlug}"`, "FIELD_NOT_FOUND");
|
|
372
|
+
const field = snapshot.value;
|
|
372
373
|
let nextType = field.type;
|
|
373
374
|
let nextColumnType = field.columnType;
|
|
374
375
|
if (input.type !== void 0 && input.type !== field.type) {
|
|
@@ -377,36 +378,28 @@ var SchemaRegistry = class {
|
|
|
377
378
|
nextType = input.type;
|
|
378
379
|
}
|
|
379
380
|
const nextValidation = input.validation === void 0 ? field.validation : input.validation;
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
return updated;
|
|
403
|
-
});
|
|
404
|
-
await markContentMediaUsageCollectionStaleSafely(this.db, collectionSlug, "CONTENT_USAGE_STALE");
|
|
405
|
-
return updatedField;
|
|
406
|
-
} catch (error) {
|
|
407
|
-
if (schemaMutated) await markContentMediaUsageCollectionStaleSafely(this.db, collectionSlug, "CONTENT_USAGE_STALE");
|
|
408
|
-
throw error;
|
|
409
|
-
}
|
|
381
|
+
const search = input.searchable !== void 0 && input.searchable !== field.searchable ? await this.searchStatePlan(collectionSlug, input.searchable ? { add: fieldSlug } : { remove: fieldSlug }) : { statements: [] };
|
|
382
|
+
await atomicBatch(this.db, {
|
|
383
|
+
checks: [rowUnchanged("_dineway_fields", snapshot.row), ...search.checks ?? []],
|
|
384
|
+
statements: [this.db.updateTable("_dineway_fields").set({
|
|
385
|
+
label: input.label ?? field.label,
|
|
386
|
+
type: nextType,
|
|
387
|
+
column_type: nextColumnType,
|
|
388
|
+
required: input.required !== void 0 ? input.required ? 1 : 0 : field.required ? 1 : 0,
|
|
389
|
+
unique: input.unique !== void 0 ? input.unique ? 1 : 0 : field.unique ? 1 : 0,
|
|
390
|
+
searchable: input.searchable !== void 0 ? input.searchable ? 1 : 0 : field.searchable ? 1 : 0,
|
|
391
|
+
translatable: input.translatable !== void 0 ? input.translatable ? 1 : 0 : field.translatable ? 1 : 0,
|
|
392
|
+
default_value: input.defaultValue !== void 0 ? JSON.stringify(input.defaultValue) : field.defaultValue !== void 0 ? JSON.stringify(field.defaultValue) : null,
|
|
393
|
+
validation: nextValidation ? JSON.stringify(nextValidation) : null,
|
|
394
|
+
widget: input.widget ?? field.widget ?? null,
|
|
395
|
+
options: input.options ? JSON.stringify(input.options) : field.options ? JSON.stringify(field.options) : null,
|
|
396
|
+
sort_order: input.sortOrder ?? field.sortOrder
|
|
397
|
+
}).where("id", "=", field.id).compile(), ...search.statements]
|
|
398
|
+
});
|
|
399
|
+
const updated = await this.getField(collectionSlug, fieldSlug);
|
|
400
|
+
if (!updated) throw new SchemaError("Failed to update field", "UPDATE_FAILED");
|
|
401
|
+
await markContentMediaUsageCollectionStaleSafely(this.db, collectionSlug, "CONTENT_USAGE_STALE");
|
|
402
|
+
return updated;
|
|
410
403
|
}
|
|
411
404
|
/**
|
|
412
405
|
* Synchronize an existing FTS index with the collection's current state.
|
|
@@ -414,37 +407,48 @@ var SchemaRegistry = class {
|
|
|
414
407
|
* Schema writes must not first-time enable FTS. Initial enablement stays in
|
|
415
408
|
* explicit seed/import/admin flows where FTS failures can be handled deliberately.
|
|
416
409
|
*/
|
|
417
|
-
async
|
|
418
|
-
|
|
419
|
-
const
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
const
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
410
|
+
async searchStatePlan(collectionSlug, change = {}, db = this.db) {
|
|
411
|
+
if (!isSqlite(db)) return { statements: [] };
|
|
412
|
+
const collection = await db.selectFrom("_dineway_collections").selectAll().where("slug", "=", collectionSlug).executeTakeFirst();
|
|
413
|
+
if (!collection) return { statements: [] };
|
|
414
|
+
const fields = await db.selectFrom("_dineway_fields").selectAll().where("collection_id", "=", collection.id).execute();
|
|
415
|
+
const checks = [
|
|
416
|
+
rowUnchanged("_dineway_collections", collection),
|
|
417
|
+
sql`(SELECT count(*) FROM _dineway_fields WHERE collection_id = ${collection.id}) = ${fields.length}`,
|
|
418
|
+
...fields.map((field) => rowUnchanged("_dineway_fields", field))
|
|
419
|
+
];
|
|
420
|
+
const searchable = new Set(fields.filter((field) => field.searchable === 1).map((field) => field.slug));
|
|
421
|
+
if (change.add) searchable.add(change.add);
|
|
422
|
+
if (change.remove) searchable.delete(change.remove);
|
|
423
|
+
const names = [...searchable];
|
|
424
|
+
const config = parseSearchConfig(collection.search_config);
|
|
425
|
+
const wantsSearch = (change.supports ?? parseSupports(collection.supports)).includes("search");
|
|
426
|
+
const fts = new FTSManager(db);
|
|
427
|
+
return {
|
|
428
|
+
checks,
|
|
429
|
+
statements: !config?.enabled ? [] : wantsSearch && names.length ? fts.rebuildStatements(collectionSlug, names, config.weights) : [...fts.dropStatements(collectionSlug), fts.configStatement(collectionSlug, {
|
|
430
|
+
enabled: false,
|
|
431
|
+
weights: config.weights
|
|
432
|
+
})]
|
|
433
|
+
};
|
|
428
434
|
}
|
|
429
435
|
/**
|
|
430
436
|
* Delete a field
|
|
431
437
|
*/
|
|
432
438
|
async deleteField(collectionSlug, fieldSlug) {
|
|
433
|
-
const
|
|
434
|
-
if (!
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
}
|
|
445
|
-
|
|
446
|
-
throw error;
|
|
447
|
-
}
|
|
439
|
+
const snapshot = await this.fieldSnapshot(collectionSlug, fieldSlug);
|
|
440
|
+
if (!snapshot) throw new SchemaError(`Field "${fieldSlug}" not found in collection "${collectionSlug}"`, "FIELD_NOT_FOUND");
|
|
441
|
+
const field = snapshot.value;
|
|
442
|
+
const search = field.searchable ? await this.searchStatePlan(collectionSlug, { remove: fieldSlug }) : { statements: [] };
|
|
443
|
+
await atomicBatch(this.db, {
|
|
444
|
+
checks: [rowUnchanged("_dineway_fields", snapshot.row), ...search.checks ?? []],
|
|
445
|
+
statements: [
|
|
446
|
+
this.db.deleteFrom("_dineway_fields").where("id", "=", field.id).compile(),
|
|
447
|
+
...search.statements,
|
|
448
|
+
sql`ALTER TABLE ${sql.ref(this.getTableName(collectionSlug))} DROP COLUMN ${sql.ref(this.getColumnName(fieldSlug))}`.compile(this.db)
|
|
449
|
+
]
|
|
450
|
+
});
|
|
451
|
+
await markContentMediaUsageCollectionStaleSafely(this.db, collectionSlug, "CONTENT_USAGE_STALE");
|
|
448
452
|
}
|
|
449
453
|
/**
|
|
450
454
|
* Reorder fields
|
|
@@ -457,112 +461,105 @@ var SchemaRegistry = class {
|
|
|
457
461
|
/**
|
|
458
462
|
* Create a content table for a collection
|
|
459
463
|
*/
|
|
460
|
-
|
|
461
|
-
const conn =
|
|
464
|
+
contentTableStatements(slug) {
|
|
465
|
+
const conn = this.db;
|
|
466
|
+
const statements = [];
|
|
462
467
|
const tableName = this.getTableName(slug);
|
|
463
|
-
|
|
464
|
-
|
|
468
|
+
statements.push(conn.schema.createTable(tableName).addColumn("id", "text", (col) => col.primaryKey()).addColumn("slug", "text").addColumn("status", "text", (col) => col.defaultTo("draft")).addColumn("author_id", "text").addColumn("primary_byline_id", "text").addColumn("created_at", "text", (col) => col.defaultTo(currentTimestamp(conn))).addColumn("updated_at", "text", (col) => col.defaultTo(currentTimestamp(conn))).addColumn("published_at", "text").addColumn("scheduled_at", "text").addColumn("deleted_at", "text").addColumn("version", "integer", (col) => col.defaultTo(1)).addColumn("live_revision_id", "text", (col) => col.references("revisions.id")).addColumn("draft_revision_id", "text", (col) => col.references("revisions.id")).addColumn("locale", "text", (col) => col.notNull().defaultTo("en")).addColumn("translation_group", "text").addUniqueConstraint(`${tableName}_slug_locale_unique`, ["slug", "locale"]).compile());
|
|
469
|
+
statements.push(sql`
|
|
465
470
|
CREATE INDEX ${sql.ref(`idx_${tableName}_slug`)}
|
|
466
471
|
ON ${sql.ref(tableName)} (slug)
|
|
467
|
-
`.
|
|
468
|
-
|
|
472
|
+
`.compile(conn));
|
|
473
|
+
statements.push(sql`
|
|
469
474
|
CREATE INDEX ${sql.ref(`idx_${tableName}_scheduled`)}
|
|
470
475
|
ON ${sql.ref(tableName)} (scheduled_at)
|
|
471
476
|
WHERE scheduled_at IS NOT NULL
|
|
472
|
-
`.
|
|
473
|
-
|
|
477
|
+
`.compile(conn));
|
|
478
|
+
statements.push(sql`
|
|
474
479
|
CREATE INDEX ${sql.ref(`idx_${tableName}_live_revision`)}
|
|
475
480
|
ON ${sql.ref(tableName)} (live_revision_id)
|
|
476
|
-
`.
|
|
477
|
-
|
|
481
|
+
`.compile(conn));
|
|
482
|
+
statements.push(sql`
|
|
478
483
|
CREATE INDEX ${sql.ref(`idx_${tableName}_draft_revision`)}
|
|
479
484
|
ON ${sql.ref(tableName)} (draft_revision_id)
|
|
480
|
-
`.
|
|
481
|
-
|
|
485
|
+
`.compile(conn));
|
|
486
|
+
statements.push(sql`
|
|
482
487
|
CREATE INDEX ${sql.ref(`idx_${tableName}_author`)}
|
|
483
488
|
ON ${sql.ref(tableName)} (author_id)
|
|
484
|
-
`.
|
|
485
|
-
|
|
489
|
+
`.compile(conn));
|
|
490
|
+
statements.push(sql`
|
|
486
491
|
CREATE INDEX ${sql.ref(`idx_${tableName}_primary_byline`)}
|
|
487
492
|
ON ${sql.ref(tableName)} (primary_byline_id)
|
|
488
|
-
`.
|
|
489
|
-
|
|
493
|
+
`.compile(conn));
|
|
494
|
+
statements.push(sql`
|
|
490
495
|
CREATE INDEX ${sql.ref(`idx_${tableName}_locale`)}
|
|
491
496
|
ON ${sql.ref(tableName)} (locale)
|
|
492
|
-
`.
|
|
493
|
-
|
|
497
|
+
`.compile(conn));
|
|
498
|
+
statements.push(sql`
|
|
494
499
|
CREATE INDEX ${sql.ref(`idx_${tableName}_translation_group`)}
|
|
495
500
|
ON ${sql.ref(tableName)} (translation_group)
|
|
496
|
-
`.
|
|
497
|
-
|
|
498
|
-
|
|
501
|
+
`.compile(conn));
|
|
502
|
+
statements.push(sql`CREATE INDEX ${sql.ref(`idx_${tableName}_public_id`)} ON ${sql.ref(tableName)} (deleted_at, status, id)`.compile(conn));
|
|
503
|
+
statements.push(sql`
|
|
499
504
|
CREATE INDEX ${sql.ref(`idx_${tableName}_deleted_updated_id`)}
|
|
500
505
|
ON ${sql.ref(tableName)} (deleted_at, updated_at DESC, id DESC)
|
|
501
|
-
`.
|
|
502
|
-
|
|
506
|
+
`.compile(conn));
|
|
507
|
+
statements.push(sql`
|
|
503
508
|
CREATE INDEX ${sql.ref(`idx_${tableName}_deleted_status`)}
|
|
504
509
|
ON ${sql.ref(tableName)} (deleted_at, status)
|
|
505
|
-
`.
|
|
506
|
-
|
|
510
|
+
`.compile(conn));
|
|
511
|
+
statements.push(sql`
|
|
507
512
|
CREATE INDEX ${sql.ref(`idx_${tableName}_deleted_created_id`)}
|
|
508
513
|
ON ${sql.ref(tableName)} (deleted_at, created_at DESC, id DESC)
|
|
509
|
-
`.
|
|
510
|
-
|
|
514
|
+
`.compile(conn));
|
|
515
|
+
statements.push(sql`
|
|
511
516
|
CREATE INDEX ${sql.ref(`idx_${tableName}_deleted_published_id`)}
|
|
512
517
|
ON ${sql.ref(tableName)} (deleted_at, published_at DESC, id DESC)
|
|
513
|
-
`.
|
|
514
|
-
|
|
518
|
+
`.compile(conn));
|
|
519
|
+
statements.push(sql`
|
|
515
520
|
CREATE INDEX ${sql.ref(contentLocaleUpdatedIndexName(tableName))}
|
|
516
521
|
ON ${sql.ref(tableName)} (deleted_at, locale, updated_at DESC, id DESC)
|
|
517
|
-
`.
|
|
518
|
-
|
|
522
|
+
`.compile(conn));
|
|
523
|
+
statements.push(sql`
|
|
519
524
|
CREATE INDEX ${sql.ref(contentLocaleCreatedIndexName(tableName))}
|
|
520
525
|
ON ${sql.ref(tableName)} (deleted_at, locale, created_at DESC, id DESC)
|
|
521
|
-
`.
|
|
526
|
+
`.compile(conn));
|
|
527
|
+
return statements;
|
|
522
528
|
}
|
|
523
529
|
/**
|
|
524
530
|
* Drop a content table
|
|
525
531
|
*/
|
|
526
|
-
async dropContentTable(slug, db) {
|
|
527
|
-
const tableName = this.getTableName(slug);
|
|
528
|
-
await sql`DROP TABLE IF EXISTS ${sql.ref(tableName)}`.execute(db ?? this.db);
|
|
529
|
-
}
|
|
530
532
|
/**
|
|
531
533
|
* Add a column to a content table
|
|
532
534
|
*/
|
|
533
535
|
async addColumn(collectionSlug, fieldSlug, fieldType, options, db) {
|
|
536
|
+
await (db ?? this.db).executeQuery(this.columnStatement(collectionSlug, fieldSlug, fieldType, options, db));
|
|
537
|
+
}
|
|
538
|
+
columnStatement(collectionSlug, fieldSlug, fieldType, options, db) {
|
|
534
539
|
const conn = db ?? this.db;
|
|
535
540
|
const tableName = this.getTableName(collectionSlug);
|
|
536
541
|
const columnType = FIELD_TYPE_TO_COLUMN[fieldType];
|
|
537
542
|
const columnName = this.getColumnName(fieldSlug);
|
|
538
543
|
if (options?.required && options?.defaultValue !== void 0) {
|
|
539
544
|
const defaultVal = this.formatDefaultValue(options.defaultValue, fieldType);
|
|
540
|
-
|
|
545
|
+
return sql`
|
|
541
546
|
ALTER TABLE ${sql.ref(tableName)}
|
|
542
547
|
ADD COLUMN ${sql.ref(columnName)} ${sql.raw(columnType)} NOT NULL DEFAULT ${sql.raw(defaultVal)}
|
|
543
|
-
`.
|
|
548
|
+
`.compile(conn);
|
|
544
549
|
} else if (options?.required) {
|
|
545
550
|
const defaultVal = this.getEmptyDefault(fieldType);
|
|
546
|
-
|
|
551
|
+
return sql`
|
|
547
552
|
ALTER TABLE ${sql.ref(tableName)}
|
|
548
553
|
ADD COLUMN ${sql.ref(columnName)} ${sql.raw(columnType)} NOT NULL DEFAULT ${sql.raw(defaultVal)}
|
|
549
|
-
`.
|
|
550
|
-
} else
|
|
554
|
+
`.compile(conn);
|
|
555
|
+
} else return sql`
|
|
551
556
|
ALTER TABLE ${sql.ref(tableName)}
|
|
552
557
|
ADD COLUMN ${sql.ref(columnName)} ${sql.raw(columnType)}
|
|
553
|
-
`.
|
|
558
|
+
`.compile(conn);
|
|
554
559
|
}
|
|
555
560
|
/**
|
|
556
561
|
* Drop a column from a content table
|
|
557
562
|
*/
|
|
558
|
-
async dropColumn(collectionSlug, fieldSlug, db) {
|
|
559
|
-
const tableName = this.getTableName(collectionSlug);
|
|
560
|
-
const columnName = this.getColumnName(fieldSlug);
|
|
561
|
-
await sql`
|
|
562
|
-
ALTER TABLE ${sql.ref(tableName)}
|
|
563
|
-
DROP COLUMN ${sql.ref(columnName)}
|
|
564
|
-
`.execute(db ?? this.db);
|
|
565
|
-
}
|
|
566
563
|
/**
|
|
567
564
|
* Check if a collection has any content
|
|
568
565
|
*/
|