@jant/core 0.3.36 → 0.3.38
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/bin/commands/export.js +1 -1
- package/bin/commands/import-site.js +529 -0
- package/bin/commands/reset-password.js +3 -2
- package/dist/client/assets/heic-to-DIRPI3VF.js +1 -0
- package/dist/client/assets/url-FWFqPJPb.js +1 -0
- package/dist/client/client.css +1 -1
- package/dist/client/client.js +4012 -3276
- package/dist/index.js +10285 -5809
- package/package.json +11 -3
- package/src/__tests__/helpers/app.ts +9 -9
- package/src/__tests__/helpers/db.ts +91 -93
- package/src/app.tsx +157 -27
- package/src/auth.ts +20 -2
- package/src/client/archive-nav.js +187 -0
- package/src/client/audio-player.ts +478 -0
- package/src/client/audio-processor.ts +84 -0
- package/src/client/avatar-upload.ts +3 -2
- package/src/client/components/__tests__/jant-compose-dialog.test.ts +645 -49
- package/src/client/components/__tests__/jant-compose-editor.test.ts +208 -16
- package/src/client/components/__tests__/jant-post-form.test.ts +19 -9
- package/src/client/components/__tests__/jant-settings-avatar.test.ts +2 -2
- package/src/client/components/__tests__/jant-settings-general.test.ts +3 -3
- package/src/client/components/collection-sidebar-types.ts +7 -9
- package/src/client/components/compose-types.ts +101 -4
- package/src/client/components/jant-collection-form.ts +43 -7
- package/src/client/components/jant-collection-sidebar.ts +88 -84
- package/src/client/components/jant-compose-dialog.ts +1655 -219
- package/src/client/components/jant-compose-editor.ts +732 -168
- package/src/client/components/jant-compose-fullscreen.ts +23 -78
- package/src/client/components/jant-media-lightbox.ts +2 -0
- package/src/client/components/jant-nav-manager.ts +24 -284
- package/src/client/components/jant-post-form.ts +89 -9
- package/src/client/components/jant-post-menu.ts +1019 -0
- package/src/client/components/jant-settings-avatar.ts +3 -3
- package/src/client/components/jant-settings-general.ts +38 -4
- package/src/client/components/jant-text-preview.ts +232 -0
- package/src/client/components/nav-manager-types.ts +4 -19
- package/src/client/components/post-form-template.ts +107 -12
- package/src/client/components/post-form-types.ts +11 -4
- package/src/client/compose-bridge.ts +410 -109
- package/src/client/image-processor.ts +26 -8
- package/src/client/media-metadata.ts +247 -0
- package/src/client/multipart-upload.ts +160 -0
- package/src/client/post-form-bridge.ts +52 -1
- package/src/client/settings-bridge.ts +0 -12
- package/src/client/thread-context.ts +140 -0
- package/src/client/tiptap/create-editor.ts +46 -0
- package/src/client/tiptap/extensions.ts +5 -0
- package/src/client/tiptap/image-node.ts +2 -8
- package/src/client/tiptap/paste-image.ts +2 -13
- package/src/client/tiptap/slash-commands.ts +173 -63
- package/src/client/toast.ts +101 -3
- package/src/client/types/sortablejs.d.ts +15 -0
- package/src/client/upload-with-metadata.ts +54 -0
- package/src/client/video-processor.ts +207 -0
- package/src/client.ts +5 -2
- package/src/db/__tests__/migrations.test.ts +118 -0
- package/src/db/index.ts +52 -0
- package/src/db/migrations/0000_baseline.sql +269 -0
- package/src/db/migrations/0001_fts_setup.sql +31 -0
- package/src/db/migrations/meta/0000_snapshot.json +703 -119
- package/src/db/migrations/meta/0001_snapshot.json +1337 -0
- package/src/db/migrations/meta/_journal.json +4 -39
- package/src/db/schema.ts +409 -145
- package/src/i18n/__tests__/detect.test.ts +115 -0
- package/src/i18n/context.tsx +2 -2
- package/src/i18n/detect.ts +85 -1
- package/src/i18n/i18n.ts +1 -1
- package/src/i18n/index.ts +2 -1
- package/src/i18n/locales/en.po +487 -1217
- package/src/i18n/locales/en.ts +1 -1
- package/src/i18n/locales/zh-Hans.po +613 -996
- package/src/i18n/locales/zh-Hans.ts +1 -1
- package/src/i18n/locales/zh-Hant.po +624 -1007
- package/src/i18n/locales/zh-Hant.ts +1 -1
- package/src/i18n/middleware.ts +6 -0
- package/src/index.ts +5 -7
- package/src/lib/__tests__/blurhash-placeholder.test.ts +75 -0
- package/src/lib/__tests__/constants.test.ts +0 -1
- package/src/lib/__tests__/markdown-to-tiptap.test.ts +358 -0
- package/src/lib/__tests__/nanoid.test.ts +26 -0
- package/src/lib/__tests__/schemas.test.ts +181 -63
- package/src/lib/__tests__/slug.test.ts +126 -0
- package/src/lib/__tests__/sse.test.ts +6 -6
- package/src/lib/__tests__/summary.test.ts +264 -0
- package/src/lib/__tests__/theme.test.ts +1 -1
- package/src/lib/__tests__/timeline.test.ts +33 -30
- package/src/lib/__tests__/tiptap-to-markdown.test.ts +346 -0
- package/src/lib/__tests__/view.test.ts +141 -66
- package/src/lib/blurhash-placeholder.ts +102 -0
- package/src/lib/constants.ts +3 -1
- package/src/lib/emoji-catalog.ts +885 -68
- package/src/lib/errors.ts +11 -8
- package/src/lib/feed.ts +78 -32
- package/src/lib/html.ts +2 -1
- package/src/lib/icon-catalog.ts +5033 -1
- package/src/lib/icons.ts +3 -2
- package/src/lib/index.ts +0 -1
- package/src/lib/markdown-to-tiptap.ts +286 -0
- package/src/lib/media-helpers.ts +12 -3
- package/src/lib/nanoid.ts +29 -0
- package/src/lib/navigation.ts +1 -1
- package/src/lib/render.tsx +20 -2
- package/src/lib/resolve-config.ts +6 -2
- package/src/lib/schemas.ts +224 -55
- package/src/lib/search-snippet.ts +34 -0
- package/src/lib/slug.ts +96 -0
- package/src/lib/sse.ts +6 -6
- package/src/lib/storage.ts +115 -7
- package/src/lib/summary.ts +66 -0
- package/src/lib/theme.ts +11 -8
- package/src/lib/timeline.ts +74 -34
- package/src/lib/tiptap-render.ts +5 -10
- package/src/lib/tiptap-to-markdown.ts +305 -0
- package/src/lib/upload.ts +190 -29
- package/src/lib/url.ts +31 -0
- package/src/lib/view.ts +204 -37
- package/src/middleware/__tests__/auth.test.ts +191 -11
- package/src/middleware/__tests__/onboarding.test.ts +12 -10
- package/src/middleware/auth.ts +63 -9
- package/src/middleware/onboarding.ts +1 -1
- package/src/middleware/secure-headers.ts +40 -0
- package/src/preset.css +45 -2
- package/src/routes/__tests__/compose.test.ts +17 -24
- package/src/routes/api/__tests__/collections.test.ts +109 -61
- package/src/routes/api/__tests__/nav-items.test.ts +46 -29
- package/src/routes/api/__tests__/posts.test.ts +132 -68
- package/src/routes/api/__tests__/search.test.ts +15 -2
- package/src/routes/api/__tests__/upload-multipart.test.ts +534 -0
- package/src/routes/api/collections.ts +51 -42
- package/src/routes/api/custom-urls.ts +80 -0
- package/src/routes/api/export.ts +31 -0
- package/src/routes/api/nav-items.ts +23 -19
- package/src/routes/api/posts.ts +43 -39
- package/src/routes/api/search.ts +3 -4
- package/src/routes/api/upload-multipart.ts +245 -0
- package/src/routes/api/upload.ts +85 -19
- package/src/routes/auth/__tests__/setup.test.ts +20 -60
- package/src/routes/auth/setup.tsx +26 -33
- package/src/routes/auth/signin.tsx +3 -7
- package/src/routes/compose.tsx +10 -55
- package/src/routes/dash/__tests__/settings-avatar.test.ts +1 -1
- package/src/routes/dash/custom-urls.tsx +414 -0
- package/src/routes/dash/settings.tsx +304 -232
- package/src/routes/feed/__tests__/rss.test.ts +27 -28
- package/src/routes/feed/rss.ts +6 -4
- package/src/routes/feed/sitemap.ts +2 -12
- package/src/routes/pages/__tests__/collections.test.ts +5 -6
- package/src/routes/pages/__tests__/featured.test.ts +41 -22
- package/src/routes/pages/archive.tsx +175 -39
- package/src/routes/pages/collection.tsx +22 -10
- package/src/routes/pages/collections.tsx +3 -3
- package/src/routes/pages/featured.tsx +28 -4
- package/src/routes/pages/home.tsx +16 -15
- package/src/routes/pages/latest.tsx +1 -11
- package/src/routes/pages/new.tsx +39 -0
- package/src/routes/pages/page.tsx +95 -49
- package/src/routes/pages/search.tsx +1 -1
- package/src/services/__tests__/api-token.test.ts +135 -0
- package/src/services/__tests__/collection.test.ts +275 -227
- package/src/services/__tests__/custom-url.test.ts +213 -0
- package/src/services/__tests__/media.test.ts +162 -22
- package/src/services/__tests__/navigation.test.ts +109 -68
- package/src/services/__tests__/post-timeline.test.ts +205 -32
- package/src/services/__tests__/post.test.ts +713 -234
- package/src/services/__tests__/search.test.ts +67 -10
- package/src/services/api-token.ts +166 -0
- package/src/services/auth.ts +17 -2
- package/src/services/collection.ts +397 -131
- package/src/services/custom-url.ts +188 -0
- package/src/services/export.ts +802 -0
- package/src/services/index.ts +26 -19
- package/src/services/media.ts +100 -22
- package/src/services/navigation.ts +158 -47
- package/src/services/path.ts +339 -0
- package/src/services/post.ts +687 -154
- package/src/services/search.ts +160 -75
- package/src/styles/components.css +58 -7
- package/src/styles/tokens.css +84 -6
- package/src/styles/ui.css +2964 -457
- package/src/types/bindings.ts +4 -1
- package/src/types/config.ts +12 -4
- package/src/types/constants.ts +15 -3
- package/src/types/entities.ts +74 -35
- package/src/types/operations.ts +11 -24
- package/src/types/props.ts +51 -16
- package/src/types/views.ts +45 -22
- package/src/ui/color-themes.ts +133 -23
- package/src/ui/compose/ComposeDialog.tsx +239 -17
- package/src/ui/compose/ComposePrompt.tsx +1 -1
- package/src/ui/dash/CrudPageHeader.tsx +1 -1
- package/src/ui/dash/ListItemRow.tsx +1 -1
- package/src/ui/dash/StatusBadge.tsx +3 -1
- package/src/ui/dash/appearance/AdvancedContent.tsx +22 -1
- package/src/ui/dash/appearance/ColorThemeContent.tsx +22 -2
- package/src/ui/dash/appearance/FontThemeContent.tsx +1 -1
- package/src/ui/dash/appearance/NavigationContent.tsx +5 -45
- package/src/ui/dash/index.ts +0 -3
- package/src/ui/dash/settings/AccountContent.tsx +3 -57
- package/src/ui/dash/settings/AccountMenuContent.tsx +147 -0
- package/src/ui/dash/settings/ApiTokensContent.tsx +232 -0
- package/src/ui/dash/settings/AvatarContent.tsx +8 -0
- package/src/ui/dash/settings/SessionsContent.tsx +159 -0
- package/src/ui/dash/settings/SettingsRootContent.tsx +45 -15
- package/src/ui/feed/LinkCard.tsx +89 -40
- package/src/ui/feed/NoteCard.tsx +39 -25
- package/src/ui/feed/PostStatusBadges.tsx +67 -0
- package/src/ui/feed/QuoteCard.tsx +38 -23
- package/src/ui/feed/ThreadPreview.tsx +90 -26
- package/src/ui/feed/TimelineFeed.tsx +3 -2
- package/src/ui/feed/TimelineItem.tsx +15 -6
- package/src/ui/feed/__tests__/thread-preview.test.ts +107 -0
- package/src/ui/feed/thread-preview-state.ts +61 -0
- package/src/ui/font-themes.ts +2 -2
- package/src/ui/layouts/BaseLayout.tsx +2 -2
- package/src/ui/layouts/SiteLayout.tsx +105 -92
- package/src/ui/pages/ArchivePage.tsx +923 -98
- package/src/ui/pages/ComposePage.tsx +54 -0
- package/src/ui/pages/PostPage.tsx +30 -45
- package/src/ui/pages/SearchPage.tsx +181 -37
- package/src/ui/shared/AdminBreadcrumb.tsx +29 -0
- package/src/ui/shared/CollectionsSidebar.tsx +47 -37
- package/src/ui/shared/MediaGallery.tsx +445 -149
- package/src/ui/shared/PostFooter.tsx +204 -0
- package/src/ui/shared/StarRating.tsx +27 -0
- package/src/ui/shared/__tests__/format-chars.test.ts +35 -0
- package/src/ui/shared/index.ts +0 -1
- package/dist/client/assets/url-8Dj-5CLW.js +0 -1
- package/src/client/media-upload.ts +0 -161
- package/src/client/page-slug-bridge.ts +0 -42
- package/src/db/migrations/0000_square_wallflower.sql +0 -118
- package/src/db/migrations/0001_add_search_fts.sql +0 -34
- package/src/db/migrations/0002_add_media_attachments.sql +0 -3
- package/src/db/migrations/0003_add_navigation_links.sql +0 -8
- package/src/db/migrations/0004_add_storage_provider.sql +0 -3
- package/src/db/migrations/0005_v2_schema_migration.sql +0 -268
- package/src/db/migrations/0006_rename_slug_to_path.sql +0 -5
- package/src/db/migrations/0007_post_collections_m2m.sql +0 -94
- package/src/db/migrations/0008_add_collection_dividers.sql +0 -8
- package/src/db/migrations/0009_drop_collection_show_divider.sql +0 -2
- package/src/db/migrations/0010_add_performance_indexes.sql +0 -16
- package/src/db/migrations/0011_add_path_registry.sql +0 -23
- package/src/db/migrations/0012_add_tiptap_columns.sql +0 -2
- package/src/db/migrations/0013_replace_featured_with_visibility.sql +0 -8
- package/src/db/migrations/meta/0003_snapshot.json +0 -821
- package/src/lib/__tests__/sqid.test.ts +0 -65
- package/src/lib/sqid.ts +0 -79
- package/src/routes/api/__tests__/pages.test.ts +0 -218
- package/src/routes/api/pages.ts +0 -73
- package/src/routes/dash/__tests__/pages.test.ts +0 -226
- package/src/routes/dash/index.tsx +0 -109
- package/src/routes/dash/media.tsx +0 -135
- package/src/routes/dash/pages.tsx +0 -245
- package/src/routes/dash/posts.tsx +0 -338
- package/src/routes/dash/redirects.tsx +0 -263
- package/src/routes/pages/post.tsx +0 -59
- package/src/services/__tests__/page.test.ts +0 -298
- package/src/services/__tests__/path-registry.test.ts +0 -165
- package/src/services/__tests__/redirect.test.ts +0 -159
- package/src/services/page.ts +0 -216
- package/src/services/path-registry.ts +0 -160
- package/src/services/redirect.ts +0 -97
- package/src/ui/dash/PageForm.tsx +0 -187
- package/src/ui/dash/PostList.tsx +0 -95
- package/src/ui/dash/media/MediaListContent.tsx +0 -206
- package/src/ui/dash/media/ViewMediaContent.tsx +0 -208
- package/src/ui/dash/pages/PagesContent.tsx +0 -75
- package/src/ui/dash/posts/PostForm.tsx +0 -260
- package/src/ui/layouts/DashLayout.tsx +0 -247
- package/src/ui/pages/SinglePage.tsx +0 -23
- package/src/ui/shared/ThreadView.tsx +0 -136
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
-- Post-Collections M:N migration
|
|
2
|
-
-- Restore many-to-many relationship between posts and collections
|
|
3
|
-
|
|
4
|
-
PRAGMA foreign_keys = OFF;
|
|
5
|
-
--> statement-breakpoint
|
|
6
|
-
|
|
7
|
-
-- 1. Create junction table
|
|
8
|
-
CREATE TABLE `post_collections` (
|
|
9
|
-
`post_id` integer NOT NULL,
|
|
10
|
-
`collection_id` integer NOT NULL,
|
|
11
|
-
PRIMARY KEY (`post_id`, `collection_id`),
|
|
12
|
-
FOREIGN KEY (`post_id`) REFERENCES `posts`(`id`) ON DELETE CASCADE,
|
|
13
|
-
FOREIGN KEY (`collection_id`) REFERENCES `collections`(`id`) ON DELETE CASCADE
|
|
14
|
-
);
|
|
15
|
-
--> statement-breakpoint
|
|
16
|
-
|
|
17
|
-
-- 2. Migrate existing data from posts.collection_id
|
|
18
|
-
INSERT INTO `post_collections` (`post_id`, `collection_id`)
|
|
19
|
-
SELECT `id`, `collection_id` FROM `posts`
|
|
20
|
-
WHERE `collection_id` IS NOT NULL;
|
|
21
|
-
--> statement-breakpoint
|
|
22
|
-
|
|
23
|
-
-- 3. Recreate posts table without collection_id
|
|
24
|
-
CREATE TABLE `posts_new` (
|
|
25
|
-
`id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
|
|
26
|
-
`format` text NOT NULL,
|
|
27
|
-
`status` text DEFAULT 'published' NOT NULL,
|
|
28
|
-
`featured` integer DEFAULT 0 NOT NULL,
|
|
29
|
-
`pinned` integer DEFAULT 0 NOT NULL,
|
|
30
|
-
`path` text,
|
|
31
|
-
`title` text,
|
|
32
|
-
`url` text,
|
|
33
|
-
`body` text,
|
|
34
|
-
`body_html` text,
|
|
35
|
-
`quote_text` text,
|
|
36
|
-
`rating` integer,
|
|
37
|
-
`reply_to_id` integer,
|
|
38
|
-
`thread_id` integer,
|
|
39
|
-
`deleted_at` integer,
|
|
40
|
-
`published_at` integer NOT NULL,
|
|
41
|
-
`created_at` integer NOT NULL,
|
|
42
|
-
`updated_at` integer NOT NULL
|
|
43
|
-
);
|
|
44
|
-
--> statement-breakpoint
|
|
45
|
-
|
|
46
|
-
INSERT INTO `posts_new` (
|
|
47
|
-
`id`, `format`, `status`, `featured`, `pinned`,
|
|
48
|
-
`path`, `title`, `url`, `body`, `body_html`, `quote_text`, `rating`,
|
|
49
|
-
`reply_to_id`, `thread_id`, `deleted_at`, `published_at`, `created_at`, `updated_at`
|
|
50
|
-
)
|
|
51
|
-
SELECT
|
|
52
|
-
`id`, `format`, `status`, `featured`, `pinned`,
|
|
53
|
-
`path`, `title`, `url`, `body`, `body_html`, `quote_text`, `rating`,
|
|
54
|
-
`reply_to_id`, `thread_id`, `deleted_at`, `published_at`, `created_at`, `updated_at`
|
|
55
|
-
FROM `posts`;
|
|
56
|
-
--> statement-breakpoint
|
|
57
|
-
|
|
58
|
-
DROP TABLE `posts`;
|
|
59
|
-
--> statement-breakpoint
|
|
60
|
-
ALTER TABLE `posts_new` RENAME TO `posts`;
|
|
61
|
-
--> statement-breakpoint
|
|
62
|
-
CREATE UNIQUE INDEX `posts_path_unique` ON `posts` (`path`);
|
|
63
|
-
--> statement-breakpoint
|
|
64
|
-
|
|
65
|
-
-- 4. Rebuild FTS triggers (column references changed due to table recreation)
|
|
66
|
-
DROP TRIGGER IF EXISTS posts_fts_insert;
|
|
67
|
-
--> statement-breakpoint
|
|
68
|
-
DROP TRIGGER IF EXISTS posts_fts_update;
|
|
69
|
-
--> statement-breakpoint
|
|
70
|
-
DROP TRIGGER IF EXISTS posts_fts_delete;
|
|
71
|
-
--> statement-breakpoint
|
|
72
|
-
|
|
73
|
-
CREATE TRIGGER posts_fts_insert AFTER INSERT ON posts
|
|
74
|
-
WHEN NEW.deleted_at IS NULL
|
|
75
|
-
BEGIN
|
|
76
|
-
INSERT INTO posts_fts(rowid, title, body, quote_text)
|
|
77
|
-
VALUES (NEW.id, COALESCE(NEW.title, ''), COALESCE(NEW.body, ''), COALESCE(NEW.quote_text, ''));
|
|
78
|
-
END;
|
|
79
|
-
--> statement-breakpoint
|
|
80
|
-
|
|
81
|
-
CREATE TRIGGER posts_fts_update AFTER UPDATE ON posts BEGIN
|
|
82
|
-
DELETE FROM posts_fts WHERE rowid = OLD.id;
|
|
83
|
-
INSERT INTO posts_fts(rowid, title, body, quote_text)
|
|
84
|
-
SELECT NEW.id, COALESCE(NEW.title, ''), COALESCE(NEW.body, ''), COALESCE(NEW.quote_text, '')
|
|
85
|
-
WHERE NEW.deleted_at IS NULL;
|
|
86
|
-
END;
|
|
87
|
-
--> statement-breakpoint
|
|
88
|
-
|
|
89
|
-
CREATE TRIGGER posts_fts_delete AFTER DELETE ON posts BEGIN
|
|
90
|
-
DELETE FROM posts_fts WHERE rowid = OLD.id;
|
|
91
|
-
END;
|
|
92
|
-
--> statement-breakpoint
|
|
93
|
-
|
|
94
|
-
PRAGMA foreign_keys = ON;
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
-- Add collection_dividers table for standalone sortable divider lines
|
|
2
|
-
|
|
3
|
-
CREATE TABLE `collection_dividers` (
|
|
4
|
-
`id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
|
|
5
|
-
`position` integer DEFAULT 0 NOT NULL,
|
|
6
|
-
`created_at` integer NOT NULL,
|
|
7
|
-
`updated_at` integer NOT NULL
|
|
8
|
-
);
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
-- Performance indexes for frequently queried columns
|
|
2
|
-
-- Posts: almost every query filters by deleted_at IS NULL AND status = 'published'
|
|
3
|
-
CREATE INDEX IF NOT EXISTS idx_posts_status_deleted ON posts (status, deleted_at);--> statement-breakpoint
|
|
4
|
-
|
|
5
|
-
-- Posts: thread lookups and reply counts
|
|
6
|
-
CREATE INDEX IF NOT EXISTS idx_posts_thread_id ON posts (thread_id);--> statement-breakpoint
|
|
7
|
-
|
|
8
|
-
-- Posts: ordering by publication date
|
|
9
|
-
CREATE INDEX IF NOT EXISTS idx_posts_published_at ON posts (published_at);--> statement-breakpoint
|
|
10
|
-
|
|
11
|
-
-- Media: lookup by post
|
|
12
|
-
CREATE INDEX IF NOT EXISTS idx_media_post_id ON media (post_id);--> statement-breakpoint
|
|
13
|
-
|
|
14
|
-
-- Post-Collections: junction table queries in both directions
|
|
15
|
-
CREATE UNIQUE INDEX IF NOT EXISTS idx_post_collections_pk ON post_collections (post_id, collection_id);--> statement-breakpoint
|
|
16
|
-
CREATE INDEX IF NOT EXISTS idx_post_collections_collection ON post_collections (collection_id);
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
-- Path Registry: single source of truth for all claimed URL paths.
|
|
2
|
-
-- Enforces uniqueness at the DB level via PRIMARY KEY on path.
|
|
3
|
-
|
|
4
|
-
CREATE TABLE path_registry (
|
|
5
|
-
path TEXT PRIMARY KEY,
|
|
6
|
-
owner_type TEXT NOT NULL,
|
|
7
|
-
owner_id INTEGER NOT NULL,
|
|
8
|
-
created_at INTEGER NOT NULL
|
|
9
|
-
);
|
|
10
|
-
--> statement-breakpoint
|
|
11
|
-
CREATE INDEX idx_path_registry_owner ON path_registry (owner_type, owner_id);
|
|
12
|
-
--> statement-breakpoint
|
|
13
|
-
-- Backfill from existing pages (slug)
|
|
14
|
-
INSERT INTO path_registry (path, owner_type, owner_id, created_at)
|
|
15
|
-
SELECT slug, 'page', id, created_at FROM pages;
|
|
16
|
-
--> statement-breakpoint
|
|
17
|
-
-- Backfill from existing posts with custom paths (non-deleted only)
|
|
18
|
-
INSERT INTO path_registry (path, owner_type, owner_id, created_at)
|
|
19
|
-
SELECT path, 'post', id, created_at FROM posts WHERE path IS NOT NULL AND deleted_at IS NULL;
|
|
20
|
-
--> statement-breakpoint
|
|
21
|
-
-- Backfill from existing redirects
|
|
22
|
-
INSERT INTO path_registry (path, owner_type, owner_id, created_at)
|
|
23
|
-
SELECT from_path, 'redirect', id, created_at FROM redirects;
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
-- Replace binary `featured` flag with three-value `visibility` text column.
|
|
2
|
-
-- Values: 'listed' (default), 'featured', 'unlisted'.
|
|
3
|
-
|
|
4
|
-
ALTER TABLE posts ADD COLUMN visibility TEXT NOT NULL DEFAULT 'listed';
|
|
5
|
-
--> statement-breakpoint
|
|
6
|
-
UPDATE posts SET visibility = 'featured' WHERE featured = 1;
|
|
7
|
-
--> statement-breakpoint
|
|
8
|
-
ALTER TABLE posts DROP COLUMN featured;
|