From 8ca56c1ae56f1500cd5c162b7bc1e2b77eab0ba7 Mon Sep 17 00:00:00 2001 From: Chris Arter Date: Fri, 8 May 2026 11:39:22 -0400 Subject: [PATCH] feat(schema): add migration for new collections --- src/migrations/20260508_153847.json | 2510 +++++++++++++++++++++++++++ src/migrations/20260508_153847.ts | 280 +++ src/migrations/index.ts | 10 +- 3 files changed, 2798 insertions(+), 2 deletions(-) create mode 100644 src/migrations/20260508_153847.json create mode 100644 src/migrations/20260508_153847.ts diff --git a/src/migrations/20260508_153847.json b/src/migrations/20260508_153847.json new file mode 100644 index 0000000..b7a48e9 --- /dev/null +++ b/src/migrations/20260508_153847.json @@ -0,0 +1,2510 @@ +{ + "version": "6", + "dialect": "sqlite", + "tables": { + "users_sessions": { + "name": "users_sessions", + "columns": { + "_order": { + "name": "_order", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "_parent_id": { + "name": "_parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "expires_at": { + "name": "expires_at", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "users_sessions_order_idx": { + "name": "users_sessions_order_idx", + "columns": [ + "_order" + ], + "isUnique": false + }, + "users_sessions_parent_id_idx": { + "name": "users_sessions_parent_id_idx", + "columns": [ + "_parent_id" + ], + "isUnique": false + } + }, + "foreignKeys": { + "users_sessions_parent_id_fk": { + "name": "users_sessions_parent_id_fk", + "tableFrom": "users_sessions", + "tableTo": "users", + "columnsFrom": [ + "_parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "users": { + "name": "users", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))" + }, + "created_at": { + "name": "created_at", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))" + }, + "email": { + "name": "email", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "reset_password_token": { + "name": "reset_password_token", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "reset_password_expiration": { + "name": "reset_password_expiration", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "salt": { + "name": "salt", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "hash": { + "name": "hash", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "login_attempts": { + "name": "login_attempts", + "type": "numeric", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": 0 + }, + "lock_until": { + "name": "lock_until", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "users_updated_at_idx": { + "name": "users_updated_at_idx", + "columns": [ + "updated_at" + ], + "isUnique": false + }, + "users_created_at_idx": { + "name": "users_created_at_idx", + "columns": [ + "created_at" + ], + "isUnique": false + }, + "users_email_idx": { + "name": "users_email_idx", + "columns": [ + "email" + ], + "isUnique": true + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "media": { + "name": "media", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "alt": { + "name": "alt", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))" + }, + "created_at": { + "name": "created_at", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))" + }, + "url": { + "name": "url", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "thumbnail_u_r_l": { + "name": "thumbnail_u_r_l", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "filename": { + "name": "filename", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "mime_type": { + "name": "mime_type", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "filesize": { + "name": "filesize", + "type": "numeric", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "width": { + "name": "width", + "type": "numeric", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "height": { + "name": "height", + "type": "numeric", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "media_updated_at_idx": { + "name": "media_updated_at_idx", + "columns": [ + "updated_at" + ], + "isUnique": false + }, + "media_created_at_idx": { + "name": "media_created_at_idx", + "columns": [ + "created_at" + ], + "isUnique": false + }, + "media_filename_idx": { + "name": "media_filename_idx", + "columns": [ + "filename" + ], + "isUnique": true + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "tags": { + "name": "tags", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "slug": { + "name": "slug", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))" + }, + "created_at": { + "name": "created_at", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))" + } + }, + "indexes": { + "tags_name_idx": { + "name": "tags_name_idx", + "columns": [ + "name" + ], + "isUnique": true + }, + "tags_slug_idx": { + "name": "tags_slug_idx", + "columns": [ + "slug" + ], + "isUnique": true + }, + "tags_updated_at_idx": { + "name": "tags_updated_at_idx", + "columns": [ + "updated_at" + ], + "isUnique": false + }, + "tags_created_at_idx": { + "name": "tags_created_at_idx", + "columns": [ + "created_at" + ], + "isUnique": false + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "pages": { + "name": "pages", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "title": { + "name": "title", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "slug": { + "name": "slug", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "subtitle": { + "name": "subtitle", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "seo_title": { + "name": "seo_title", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "seo_description": { + "name": "seo_description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "seo_page_type": { + "name": "seo_page_type", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "'website'" + }, + "seo_image_id": { + "name": "seo_image_id", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "body": { + "name": "body", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))" + }, + "created_at": { + "name": "created_at", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))" + }, + "_status": { + "name": "_status", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "'draft'" + } + }, + "indexes": { + "pages_slug_idx": { + "name": "pages_slug_idx", + "columns": [ + "slug" + ], + "isUnique": true + }, + "pages_seo_seo_image_idx": { + "name": "pages_seo_seo_image_idx", + "columns": [ + "seo_image_id" + ], + "isUnique": false + }, + "pages_updated_at_idx": { + "name": "pages_updated_at_idx", + "columns": [ + "updated_at" + ], + "isUnique": false + }, + "pages_created_at_idx": { + "name": "pages_created_at_idx", + "columns": [ + "created_at" + ], + "isUnique": false + }, + "pages__status_idx": { + "name": "pages__status_idx", + "columns": [ + "_status" + ], + "isUnique": false + } + }, + "foreignKeys": { + "pages_seo_image_id_media_id_fk": { + "name": "pages_seo_image_id_media_id_fk", + "tableFrom": "pages", + "tableTo": "media", + "columnsFrom": [ + "seo_image_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "_pages_v": { + "name": "_pages_v", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "parent_id": { + "name": "parent_id", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "version_title": { + "name": "version_title", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "version_slug": { + "name": "version_slug", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "version_subtitle": { + "name": "version_subtitle", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "version_description": { + "name": "version_description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "version_seo_title": { + "name": "version_seo_title", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "version_seo_description": { + "name": "version_seo_description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "version_seo_page_type": { + "name": "version_seo_page_type", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "'website'" + }, + "version_seo_image_id": { + "name": "version_seo_image_id", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "version_body": { + "name": "version_body", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "version_updated_at": { + "name": "version_updated_at", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "version_created_at": { + "name": "version_created_at", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "version__status": { + "name": "version__status", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "'draft'" + }, + "created_at": { + "name": "created_at", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))" + }, + "updated_at": { + "name": "updated_at", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))" + }, + "latest": { + "name": "latest", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "_pages_v_parent_idx": { + "name": "_pages_v_parent_idx", + "columns": [ + "parent_id" + ], + "isUnique": false + }, + "_pages_v_version_version_slug_idx": { + "name": "_pages_v_version_version_slug_idx", + "columns": [ + "version_slug" + ], + "isUnique": false + }, + "_pages_v_version_seo_version_seo_image_idx": { + "name": "_pages_v_version_seo_version_seo_image_idx", + "columns": [ + "version_seo_image_id" + ], + "isUnique": false + }, + "_pages_v_version_version_updated_at_idx": { + "name": "_pages_v_version_version_updated_at_idx", + "columns": [ + "version_updated_at" + ], + "isUnique": false + }, + "_pages_v_version_version_created_at_idx": { + "name": "_pages_v_version_version_created_at_idx", + "columns": [ + "version_created_at" + ], + "isUnique": false + }, + "_pages_v_version_version__status_idx": { + "name": "_pages_v_version_version__status_idx", + "columns": [ + "version__status" + ], + "isUnique": false + }, + "_pages_v_created_at_idx": { + "name": "_pages_v_created_at_idx", + "columns": [ + "created_at" + ], + "isUnique": false + }, + "_pages_v_updated_at_idx": { + "name": "_pages_v_updated_at_idx", + "columns": [ + "updated_at" + ], + "isUnique": false + }, + "_pages_v_latest_idx": { + "name": "_pages_v_latest_idx", + "columns": [ + "latest" + ], + "isUnique": false + } + }, + "foreignKeys": { + "_pages_v_parent_id_pages_id_fk": { + "name": "_pages_v_parent_id_pages_id_fk", + "tableFrom": "_pages_v", + "tableTo": "pages", + "columnsFrom": [ + "parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "_pages_v_version_seo_image_id_media_id_fk": { + "name": "_pages_v_version_seo_image_id_media_id_fk", + "tableFrom": "_pages_v", + "tableTo": "media", + "columnsFrom": [ + "version_seo_image_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "projects": { + "name": "projects", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "title": { + "name": "title", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "slug": { + "name": "slug", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "publish_date": { + "name": "publish_date", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "is_featured": { + "name": "is_featured", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": false + }, + "cover_image_id": { + "name": "cover_image_id", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "seo_title": { + "name": "seo_title", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "seo_description": { + "name": "seo_description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "seo_page_type": { + "name": "seo_page_type", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "'article'" + }, + "seo_image_id": { + "name": "seo_image_id", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "body": { + "name": "body", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))" + }, + "created_at": { + "name": "created_at", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))" + }, + "_status": { + "name": "_status", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "'draft'" + } + }, + "indexes": { + "projects_slug_idx": { + "name": "projects_slug_idx", + "columns": [ + "slug" + ], + "isUnique": true + }, + "projects_publish_date_idx": { + "name": "projects_publish_date_idx", + "columns": [ + "publish_date" + ], + "isUnique": false + }, + "projects_cover_image_idx": { + "name": "projects_cover_image_idx", + "columns": [ + "cover_image_id" + ], + "isUnique": false + }, + "projects_seo_seo_image_idx": { + "name": "projects_seo_seo_image_idx", + "columns": [ + "seo_image_id" + ], + "isUnique": false + }, + "projects_updated_at_idx": { + "name": "projects_updated_at_idx", + "columns": [ + "updated_at" + ], + "isUnique": false + }, + "projects_created_at_idx": { + "name": "projects_created_at_idx", + "columns": [ + "created_at" + ], + "isUnique": false + }, + "projects__status_idx": { + "name": "projects__status_idx", + "columns": [ + "_status" + ], + "isUnique": false + } + }, + "foreignKeys": { + "projects_cover_image_id_media_id_fk": { + "name": "projects_cover_image_id_media_id_fk", + "tableFrom": "projects", + "tableTo": "media", + "columnsFrom": [ + "cover_image_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "projects_seo_image_id_media_id_fk": { + "name": "projects_seo_image_id_media_id_fk", + "tableFrom": "projects", + "tableTo": "media", + "columnsFrom": [ + "seo_image_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "_projects_v": { + "name": "_projects_v", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "parent_id": { + "name": "parent_id", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "version_title": { + "name": "version_title", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "version_slug": { + "name": "version_slug", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "version_description": { + "name": "version_description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "version_publish_date": { + "name": "version_publish_date", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "version_is_featured": { + "name": "version_is_featured", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": false + }, + "version_cover_image_id": { + "name": "version_cover_image_id", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "version_seo_title": { + "name": "version_seo_title", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "version_seo_description": { + "name": "version_seo_description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "version_seo_page_type": { + "name": "version_seo_page_type", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "'article'" + }, + "version_seo_image_id": { + "name": "version_seo_image_id", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "version_body": { + "name": "version_body", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "version_updated_at": { + "name": "version_updated_at", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "version_created_at": { + "name": "version_created_at", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "version__status": { + "name": "version__status", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "'draft'" + }, + "created_at": { + "name": "created_at", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))" + }, + "updated_at": { + "name": "updated_at", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))" + }, + "latest": { + "name": "latest", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "_projects_v_parent_idx": { + "name": "_projects_v_parent_idx", + "columns": [ + "parent_id" + ], + "isUnique": false + }, + "_projects_v_version_version_slug_idx": { + "name": "_projects_v_version_version_slug_idx", + "columns": [ + "version_slug" + ], + "isUnique": false + }, + "_projects_v_version_version_publish_date_idx": { + "name": "_projects_v_version_version_publish_date_idx", + "columns": [ + "version_publish_date" + ], + "isUnique": false + }, + "_projects_v_version_version_cover_image_idx": { + "name": "_projects_v_version_version_cover_image_idx", + "columns": [ + "version_cover_image_id" + ], + "isUnique": false + }, + "_projects_v_version_seo_version_seo_image_idx": { + "name": "_projects_v_version_seo_version_seo_image_idx", + "columns": [ + "version_seo_image_id" + ], + "isUnique": false + }, + "_projects_v_version_version_updated_at_idx": { + "name": "_projects_v_version_version_updated_at_idx", + "columns": [ + "version_updated_at" + ], + "isUnique": false + }, + "_projects_v_version_version_created_at_idx": { + "name": "_projects_v_version_version_created_at_idx", + "columns": [ + "version_created_at" + ], + "isUnique": false + }, + "_projects_v_version_version__status_idx": { + "name": "_projects_v_version_version__status_idx", + "columns": [ + "version__status" + ], + "isUnique": false + }, + "_projects_v_created_at_idx": { + "name": "_projects_v_created_at_idx", + "columns": [ + "created_at" + ], + "isUnique": false + }, + "_projects_v_updated_at_idx": { + "name": "_projects_v_updated_at_idx", + "columns": [ + "updated_at" + ], + "isUnique": false + }, + "_projects_v_latest_idx": { + "name": "_projects_v_latest_idx", + "columns": [ + "latest" + ], + "isUnique": false + } + }, + "foreignKeys": { + "_projects_v_parent_id_projects_id_fk": { + "name": "_projects_v_parent_id_projects_id_fk", + "tableFrom": "_projects_v", + "tableTo": "projects", + "columnsFrom": [ + "parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "_projects_v_version_cover_image_id_media_id_fk": { + "name": "_projects_v_version_cover_image_id_media_id_fk", + "tableFrom": "_projects_v", + "tableTo": "media", + "columnsFrom": [ + "version_cover_image_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "_projects_v_version_seo_image_id_media_id_fk": { + "name": "_projects_v_version_seo_image_id_media_id_fk", + "tableFrom": "_projects_v", + "tableTo": "media", + "columnsFrom": [ + "version_seo_image_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "posts": { + "name": "posts", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "title": { + "name": "title", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "slug": { + "name": "slug", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "subtitle": { + "name": "subtitle", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "excerpt": { + "name": "excerpt", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "publish_date": { + "name": "publish_date", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_date": { + "name": "updated_date", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "is_featured": { + "name": "is_featured", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": false + }, + "cover_image_id": { + "name": "cover_image_id", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "seo_title": { + "name": "seo_title", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "seo_description": { + "name": "seo_description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "seo_page_type": { + "name": "seo_page_type", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "'article'" + }, + "seo_image_id": { + "name": "seo_image_id", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "body": { + "name": "body", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))" + }, + "created_at": { + "name": "created_at", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))" + }, + "_status": { + "name": "_status", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "'draft'" + } + }, + "indexes": { + "posts_slug_idx": { + "name": "posts_slug_idx", + "columns": [ + "slug" + ], + "isUnique": true + }, + "posts_publish_date_idx": { + "name": "posts_publish_date_idx", + "columns": [ + "publish_date" + ], + "isUnique": false + }, + "posts_cover_image_idx": { + "name": "posts_cover_image_idx", + "columns": [ + "cover_image_id" + ], + "isUnique": false + }, + "posts_seo_seo_image_idx": { + "name": "posts_seo_seo_image_idx", + "columns": [ + "seo_image_id" + ], + "isUnique": false + }, + "posts_updated_at_idx": { + "name": "posts_updated_at_idx", + "columns": [ + "updated_at" + ], + "isUnique": false + }, + "posts_created_at_idx": { + "name": "posts_created_at_idx", + "columns": [ + "created_at" + ], + "isUnique": false + }, + "posts__status_idx": { + "name": "posts__status_idx", + "columns": [ + "_status" + ], + "isUnique": false + }, + "publishDate__status_idx": { + "name": "publishDate__status_idx", + "columns": [ + "publish_date", + "_status" + ], + "isUnique": false + } + }, + "foreignKeys": { + "posts_cover_image_id_media_id_fk": { + "name": "posts_cover_image_id_media_id_fk", + "tableFrom": "posts", + "tableTo": "media", + "columnsFrom": [ + "cover_image_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "posts_seo_image_id_media_id_fk": { + "name": "posts_seo_image_id_media_id_fk", + "tableFrom": "posts", + "tableTo": "media", + "columnsFrom": [ + "seo_image_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "posts_rels": { + "name": "posts_rels", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "order": { + "name": "order", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "parent_id": { + "name": "parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "path": { + "name": "path", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "tags_id": { + "name": "tags_id", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "posts_rels_order_idx": { + "name": "posts_rels_order_idx", + "columns": [ + "order" + ], + "isUnique": false + }, + "posts_rels_parent_idx": { + "name": "posts_rels_parent_idx", + "columns": [ + "parent_id" + ], + "isUnique": false + }, + "posts_rels_path_idx": { + "name": "posts_rels_path_idx", + "columns": [ + "path" + ], + "isUnique": false + }, + "posts_rels_tags_id_idx": { + "name": "posts_rels_tags_id_idx", + "columns": [ + "tags_id" + ], + "isUnique": false + } + }, + "foreignKeys": { + "posts_rels_parent_fk": { + "name": "posts_rels_parent_fk", + "tableFrom": "posts_rels", + "tableTo": "posts", + "columnsFrom": [ + "parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "posts_rels_tags_fk": { + "name": "posts_rels_tags_fk", + "tableFrom": "posts_rels", + "tableTo": "tags", + "columnsFrom": [ + "tags_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "_posts_v": { + "name": "_posts_v", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "parent_id": { + "name": "parent_id", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "version_title": { + "name": "version_title", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "version_slug": { + "name": "version_slug", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "version_subtitle": { + "name": "version_subtitle", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "version_excerpt": { + "name": "version_excerpt", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "version_publish_date": { + "name": "version_publish_date", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "version_updated_date": { + "name": "version_updated_date", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "version_is_featured": { + "name": "version_is_featured", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": false + }, + "version_cover_image_id": { + "name": "version_cover_image_id", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "version_seo_title": { + "name": "version_seo_title", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "version_seo_description": { + "name": "version_seo_description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "version_seo_page_type": { + "name": "version_seo_page_type", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "'article'" + }, + "version_seo_image_id": { + "name": "version_seo_image_id", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "version_body": { + "name": "version_body", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "version_updated_at": { + "name": "version_updated_at", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "version_created_at": { + "name": "version_created_at", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "version__status": { + "name": "version__status", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "'draft'" + }, + "created_at": { + "name": "created_at", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))" + }, + "updated_at": { + "name": "updated_at", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))" + }, + "latest": { + "name": "latest", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "_posts_v_parent_idx": { + "name": "_posts_v_parent_idx", + "columns": [ + "parent_id" + ], + "isUnique": false + }, + "_posts_v_version_version_slug_idx": { + "name": "_posts_v_version_version_slug_idx", + "columns": [ + "version_slug" + ], + "isUnique": false + }, + "_posts_v_version_version_publish_date_idx": { + "name": "_posts_v_version_version_publish_date_idx", + "columns": [ + "version_publish_date" + ], + "isUnique": false + }, + "_posts_v_version_version_cover_image_idx": { + "name": "_posts_v_version_version_cover_image_idx", + "columns": [ + "version_cover_image_id" + ], + "isUnique": false + }, + "_posts_v_version_seo_version_seo_image_idx": { + "name": "_posts_v_version_seo_version_seo_image_idx", + "columns": [ + "version_seo_image_id" + ], + "isUnique": false + }, + "_posts_v_version_version_updated_at_idx": { + "name": "_posts_v_version_version_updated_at_idx", + "columns": [ + "version_updated_at" + ], + "isUnique": false + }, + "_posts_v_version_version_created_at_idx": { + "name": "_posts_v_version_version_created_at_idx", + "columns": [ + "version_created_at" + ], + "isUnique": false + }, + "_posts_v_version_version__status_idx": { + "name": "_posts_v_version_version__status_idx", + "columns": [ + "version__status" + ], + "isUnique": false + }, + "_posts_v_created_at_idx": { + "name": "_posts_v_created_at_idx", + "columns": [ + "created_at" + ], + "isUnique": false + }, + "_posts_v_updated_at_idx": { + "name": "_posts_v_updated_at_idx", + "columns": [ + "updated_at" + ], + "isUnique": false + }, + "_posts_v_latest_idx": { + "name": "_posts_v_latest_idx", + "columns": [ + "latest" + ], + "isUnique": false + }, + "version_publishDate_version__status_idx": { + "name": "version_publishDate_version__status_idx", + "columns": [ + "version_publish_date", + "version__status" + ], + "isUnique": false + } + }, + "foreignKeys": { + "_posts_v_parent_id_posts_id_fk": { + "name": "_posts_v_parent_id_posts_id_fk", + "tableFrom": "_posts_v", + "tableTo": "posts", + "columnsFrom": [ + "parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "_posts_v_version_cover_image_id_media_id_fk": { + "name": "_posts_v_version_cover_image_id_media_id_fk", + "tableFrom": "_posts_v", + "tableTo": "media", + "columnsFrom": [ + "version_cover_image_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "_posts_v_version_seo_image_id_media_id_fk": { + "name": "_posts_v_version_seo_image_id_media_id_fk", + "tableFrom": "_posts_v", + "tableTo": "media", + "columnsFrom": [ + "version_seo_image_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "_posts_v_rels": { + "name": "_posts_v_rels", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "order": { + "name": "order", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "parent_id": { + "name": "parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "path": { + "name": "path", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "tags_id": { + "name": "tags_id", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "_posts_v_rels_order_idx": { + "name": "_posts_v_rels_order_idx", + "columns": [ + "order" + ], + "isUnique": false + }, + "_posts_v_rels_parent_idx": { + "name": "_posts_v_rels_parent_idx", + "columns": [ + "parent_id" + ], + "isUnique": false + }, + "_posts_v_rels_path_idx": { + "name": "_posts_v_rels_path_idx", + "columns": [ + "path" + ], + "isUnique": false + }, + "_posts_v_rels_tags_id_idx": { + "name": "_posts_v_rels_tags_id_idx", + "columns": [ + "tags_id" + ], + "isUnique": false + } + }, + "foreignKeys": { + "_posts_v_rels_parent_fk": { + "name": "_posts_v_rels_parent_fk", + "tableFrom": "_posts_v_rels", + "tableTo": "_posts_v", + "columnsFrom": [ + "parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "_posts_v_rels_tags_fk": { + "name": "_posts_v_rels_tags_fk", + "tableFrom": "_posts_v_rels", + "tableTo": "tags", + "columnsFrom": [ + "tags_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "payload_kv": { + "name": "payload_kv", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "key": { + "name": "key", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "data": { + "name": "data", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "payload_kv_key_idx": { + "name": "payload_kv_key_idx", + "columns": [ + "key" + ], + "isUnique": true + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "payload_locked_documents": { + "name": "payload_locked_documents", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "global_slug": { + "name": "global_slug", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))" + }, + "created_at": { + "name": "created_at", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))" + } + }, + "indexes": { + "payload_locked_documents_global_slug_idx": { + "name": "payload_locked_documents_global_slug_idx", + "columns": [ + "global_slug" + ], + "isUnique": false + }, + "payload_locked_documents_updated_at_idx": { + "name": "payload_locked_documents_updated_at_idx", + "columns": [ + "updated_at" + ], + "isUnique": false + }, + "payload_locked_documents_created_at_idx": { + "name": "payload_locked_documents_created_at_idx", + "columns": [ + "created_at" + ], + "isUnique": false + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "payload_locked_documents_rels": { + "name": "payload_locked_documents_rels", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "order": { + "name": "order", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "parent_id": { + "name": "parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "path": { + "name": "path", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "users_id": { + "name": "users_id", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "media_id": { + "name": "media_id", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "tags_id": { + "name": "tags_id", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "pages_id": { + "name": "pages_id", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "projects_id": { + "name": "projects_id", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "posts_id": { + "name": "posts_id", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "payload_locked_documents_rels_order_idx": { + "name": "payload_locked_documents_rels_order_idx", + "columns": [ + "order" + ], + "isUnique": false + }, + "payload_locked_documents_rels_parent_idx": { + "name": "payload_locked_documents_rels_parent_idx", + "columns": [ + "parent_id" + ], + "isUnique": false + }, + "payload_locked_documents_rels_path_idx": { + "name": "payload_locked_documents_rels_path_idx", + "columns": [ + "path" + ], + "isUnique": false + }, + "payload_locked_documents_rels_users_id_idx": { + "name": "payload_locked_documents_rels_users_id_idx", + "columns": [ + "users_id" + ], + "isUnique": false + }, + "payload_locked_documents_rels_media_id_idx": { + "name": "payload_locked_documents_rels_media_id_idx", + "columns": [ + "media_id" + ], + "isUnique": false + }, + "payload_locked_documents_rels_tags_id_idx": { + "name": "payload_locked_documents_rels_tags_id_idx", + "columns": [ + "tags_id" + ], + "isUnique": false + }, + "payload_locked_documents_rels_pages_id_idx": { + "name": "payload_locked_documents_rels_pages_id_idx", + "columns": [ + "pages_id" + ], + "isUnique": false + }, + "payload_locked_documents_rels_projects_id_idx": { + "name": "payload_locked_documents_rels_projects_id_idx", + "columns": [ + "projects_id" + ], + "isUnique": false + }, + "payload_locked_documents_rels_posts_id_idx": { + "name": "payload_locked_documents_rels_posts_id_idx", + "columns": [ + "posts_id" + ], + "isUnique": false + } + }, + "foreignKeys": { + "payload_locked_documents_rels_parent_fk": { + "name": "payload_locked_documents_rels_parent_fk", + "tableFrom": "payload_locked_documents_rels", + "tableTo": "payload_locked_documents", + "columnsFrom": [ + "parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "payload_locked_documents_rels_users_fk": { + "name": "payload_locked_documents_rels_users_fk", + "tableFrom": "payload_locked_documents_rels", + "tableTo": "users", + "columnsFrom": [ + "users_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "payload_locked_documents_rels_media_fk": { + "name": "payload_locked_documents_rels_media_fk", + "tableFrom": "payload_locked_documents_rels", + "tableTo": "media", + "columnsFrom": [ + "media_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "payload_locked_documents_rels_tags_fk": { + "name": "payload_locked_documents_rels_tags_fk", + "tableFrom": "payload_locked_documents_rels", + "tableTo": "tags", + "columnsFrom": [ + "tags_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "payload_locked_documents_rels_pages_fk": { + "name": "payload_locked_documents_rels_pages_fk", + "tableFrom": "payload_locked_documents_rels", + "tableTo": "pages", + "columnsFrom": [ + "pages_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "payload_locked_documents_rels_projects_fk": { + "name": "payload_locked_documents_rels_projects_fk", + "tableFrom": "payload_locked_documents_rels", + "tableTo": "projects", + "columnsFrom": [ + "projects_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "payload_locked_documents_rels_posts_fk": { + "name": "payload_locked_documents_rels_posts_fk", + "tableFrom": "payload_locked_documents_rels", + "tableTo": "posts", + "columnsFrom": [ + "posts_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "payload_preferences": { + "name": "payload_preferences", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "key": { + "name": "key", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "value": { + "name": "value", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))" + }, + "created_at": { + "name": "created_at", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))" + } + }, + "indexes": { + "payload_preferences_key_idx": { + "name": "payload_preferences_key_idx", + "columns": [ + "key" + ], + "isUnique": false + }, + "payload_preferences_updated_at_idx": { + "name": "payload_preferences_updated_at_idx", + "columns": [ + "updated_at" + ], + "isUnique": false + }, + "payload_preferences_created_at_idx": { + "name": "payload_preferences_created_at_idx", + "columns": [ + "created_at" + ], + "isUnique": false + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "payload_preferences_rels": { + "name": "payload_preferences_rels", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "order": { + "name": "order", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "parent_id": { + "name": "parent_id", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "path": { + "name": "path", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "users_id": { + "name": "users_id", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "payload_preferences_rels_order_idx": { + "name": "payload_preferences_rels_order_idx", + "columns": [ + "order" + ], + "isUnique": false + }, + "payload_preferences_rels_parent_idx": { + "name": "payload_preferences_rels_parent_idx", + "columns": [ + "parent_id" + ], + "isUnique": false + }, + "payload_preferences_rels_path_idx": { + "name": "payload_preferences_rels_path_idx", + "columns": [ + "path" + ], + "isUnique": false + }, + "payload_preferences_rels_users_id_idx": { + "name": "payload_preferences_rels_users_id_idx", + "columns": [ + "users_id" + ], + "isUnique": false + } + }, + "foreignKeys": { + "payload_preferences_rels_parent_fk": { + "name": "payload_preferences_rels_parent_fk", + "tableFrom": "payload_preferences_rels", + "tableTo": "payload_preferences", + "columnsFrom": [ + "parent_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "payload_preferences_rels_users_fk": { + "name": "payload_preferences_rels_users_fk", + "tableFrom": "payload_preferences_rels", + "tableTo": "users", + "columnsFrom": [ + "users_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "payload_migrations": { + "name": "payload_migrations", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "batch": { + "name": "batch", + "type": "numeric", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))" + }, + "created_at": { + "name": "created_at", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))" + } + }, + "indexes": { + "payload_migrations_updated_at_idx": { + "name": "payload_migrations_updated_at_idx", + "columns": [ + "updated_at" + ], + "isUnique": false + }, + "payload_migrations_created_at_idx": { + "name": "payload_migrations_created_at_idx", + "columns": [ + "created_at" + ], + "isUnique": false + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + } + }, + "views": {}, + "enums": {}, + "_meta": { + "tables": {}, + "columns": {} + }, + "internal": { + "indexes": {} + }, + "id": "403718f6-38d5-42e4-88fd-41262b023290", + "prevId": "00000000-0000-0000-0000-000000000000" +} \ No newline at end of file diff --git a/src/migrations/20260508_153847.ts b/src/migrations/20260508_153847.ts new file mode 100644 index 0000000..c27f9b7 --- /dev/null +++ b/src/migrations/20260508_153847.ts @@ -0,0 +1,280 @@ +import { MigrateUpArgs, MigrateDownArgs, sql } from '@payloadcms/db-d1-sqlite' + +export async function up({ db, payload, req }: MigrateUpArgs): Promise { + await db.run(sql`CREATE TABLE \`tags\` ( + \`id\` integer PRIMARY KEY NOT NULL, + \`name\` text NOT NULL, + \`slug\` text NOT NULL, + \`description\` text, + \`updated_at\` text DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')) NOT NULL, + \`created_at\` text DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')) NOT NULL + ); + `) + await db.run(sql`CREATE UNIQUE INDEX \`tags_name_idx\` ON \`tags\` (\`name\`);`) + await db.run(sql`CREATE UNIQUE INDEX \`tags_slug_idx\` ON \`tags\` (\`slug\`);`) + await db.run(sql`CREATE INDEX \`tags_updated_at_idx\` ON \`tags\` (\`updated_at\`);`) + await db.run(sql`CREATE INDEX \`tags_created_at_idx\` ON \`tags\` (\`created_at\`);`) + await db.run(sql`CREATE TABLE \`pages\` ( + \`id\` integer PRIMARY KEY NOT NULL, + \`title\` text, + \`slug\` text, + \`subtitle\` text, + \`description\` text, + \`seo_title\` text, + \`seo_description\` text, + \`seo_page_type\` text DEFAULT 'website', + \`seo_image_id\` integer, + \`body\` text, + \`updated_at\` text DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')) NOT NULL, + \`created_at\` text DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')) NOT NULL, + \`_status\` text DEFAULT 'draft', + FOREIGN KEY (\`seo_image_id\`) REFERENCES \`media\`(\`id\`) ON UPDATE no action ON DELETE set null + ); + `) + await db.run(sql`CREATE UNIQUE INDEX \`pages_slug_idx\` ON \`pages\` (\`slug\`);`) + await db.run(sql`CREATE INDEX \`pages_seo_seo_image_idx\` ON \`pages\` (\`seo_image_id\`);`) + await db.run(sql`CREATE INDEX \`pages_updated_at_idx\` ON \`pages\` (\`updated_at\`);`) + await db.run(sql`CREATE INDEX \`pages_created_at_idx\` ON \`pages\` (\`created_at\`);`) + await db.run(sql`CREATE INDEX \`pages__status_idx\` ON \`pages\` (\`_status\`);`) + await db.run(sql`CREATE TABLE \`_pages_v\` ( + \`id\` integer PRIMARY KEY NOT NULL, + \`parent_id\` integer, + \`version_title\` text, + \`version_slug\` text, + \`version_subtitle\` text, + \`version_description\` text, + \`version_seo_title\` text, + \`version_seo_description\` text, + \`version_seo_page_type\` text DEFAULT 'website', + \`version_seo_image_id\` integer, + \`version_body\` text, + \`version_updated_at\` text, + \`version_created_at\` text, + \`version__status\` text DEFAULT 'draft', + \`created_at\` text DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')) NOT NULL, + \`updated_at\` text DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')) NOT NULL, + \`latest\` integer, + FOREIGN KEY (\`parent_id\`) REFERENCES \`pages\`(\`id\`) ON UPDATE no action ON DELETE set null, + FOREIGN KEY (\`version_seo_image_id\`) REFERENCES \`media\`(\`id\`) ON UPDATE no action ON DELETE set null + ); + `) + await db.run(sql`CREATE INDEX \`_pages_v_parent_idx\` ON \`_pages_v\` (\`parent_id\`);`) + await db.run(sql`CREATE INDEX \`_pages_v_version_version_slug_idx\` ON \`_pages_v\` (\`version_slug\`);`) + await db.run(sql`CREATE INDEX \`_pages_v_version_seo_version_seo_image_idx\` ON \`_pages_v\` (\`version_seo_image_id\`);`) + await db.run(sql`CREATE INDEX \`_pages_v_version_version_updated_at_idx\` ON \`_pages_v\` (\`version_updated_at\`);`) + await db.run(sql`CREATE INDEX \`_pages_v_version_version_created_at_idx\` ON \`_pages_v\` (\`version_created_at\`);`) + await db.run(sql`CREATE INDEX \`_pages_v_version_version__status_idx\` ON \`_pages_v\` (\`version__status\`);`) + await db.run(sql`CREATE INDEX \`_pages_v_created_at_idx\` ON \`_pages_v\` (\`created_at\`);`) + await db.run(sql`CREATE INDEX \`_pages_v_updated_at_idx\` ON \`_pages_v\` (\`updated_at\`);`) + await db.run(sql`CREATE INDEX \`_pages_v_latest_idx\` ON \`_pages_v\` (\`latest\`);`) + await db.run(sql`CREATE TABLE \`projects\` ( + \`id\` integer PRIMARY KEY NOT NULL, + \`title\` text, + \`slug\` text, + \`description\` text, + \`publish_date\` text, + \`is_featured\` integer DEFAULT false, + \`cover_image_id\` integer, + \`seo_title\` text, + \`seo_description\` text, + \`seo_page_type\` text DEFAULT 'article', + \`seo_image_id\` integer, + \`body\` text, + \`updated_at\` text DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')) NOT NULL, + \`created_at\` text DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')) NOT NULL, + \`_status\` text DEFAULT 'draft', + FOREIGN KEY (\`cover_image_id\`) REFERENCES \`media\`(\`id\`) ON UPDATE no action ON DELETE set null, + FOREIGN KEY (\`seo_image_id\`) REFERENCES \`media\`(\`id\`) ON UPDATE no action ON DELETE set null + ); + `) + await db.run(sql`CREATE UNIQUE INDEX \`projects_slug_idx\` ON \`projects\` (\`slug\`);`) + await db.run(sql`CREATE INDEX \`projects_publish_date_idx\` ON \`projects\` (\`publish_date\`);`) + await db.run(sql`CREATE INDEX \`projects_cover_image_idx\` ON \`projects\` (\`cover_image_id\`);`) + await db.run(sql`CREATE INDEX \`projects_seo_seo_image_idx\` ON \`projects\` (\`seo_image_id\`);`) + await db.run(sql`CREATE INDEX \`projects_updated_at_idx\` ON \`projects\` (\`updated_at\`);`) + await db.run(sql`CREATE INDEX \`projects_created_at_idx\` ON \`projects\` (\`created_at\`);`) + await db.run(sql`CREATE INDEX \`projects__status_idx\` ON \`projects\` (\`_status\`);`) + await db.run(sql`CREATE TABLE \`_projects_v\` ( + \`id\` integer PRIMARY KEY NOT NULL, + \`parent_id\` integer, + \`version_title\` text, + \`version_slug\` text, + \`version_description\` text, + \`version_publish_date\` text, + \`version_is_featured\` integer DEFAULT false, + \`version_cover_image_id\` integer, + \`version_seo_title\` text, + \`version_seo_description\` text, + \`version_seo_page_type\` text DEFAULT 'article', + \`version_seo_image_id\` integer, + \`version_body\` text, + \`version_updated_at\` text, + \`version_created_at\` text, + \`version__status\` text DEFAULT 'draft', + \`created_at\` text DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')) NOT NULL, + \`updated_at\` text DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')) NOT NULL, + \`latest\` integer, + FOREIGN KEY (\`parent_id\`) REFERENCES \`projects\`(\`id\`) ON UPDATE no action ON DELETE set null, + FOREIGN KEY (\`version_cover_image_id\`) REFERENCES \`media\`(\`id\`) ON UPDATE no action ON DELETE set null, + FOREIGN KEY (\`version_seo_image_id\`) REFERENCES \`media\`(\`id\`) ON UPDATE no action ON DELETE set null + ); + `) + await db.run(sql`CREATE INDEX \`_projects_v_parent_idx\` ON \`_projects_v\` (\`parent_id\`);`) + await db.run(sql`CREATE INDEX \`_projects_v_version_version_slug_idx\` ON \`_projects_v\` (\`version_slug\`);`) + await db.run(sql`CREATE INDEX \`_projects_v_version_version_publish_date_idx\` ON \`_projects_v\` (\`version_publish_date\`);`) + await db.run(sql`CREATE INDEX \`_projects_v_version_version_cover_image_idx\` ON \`_projects_v\` (\`version_cover_image_id\`);`) + await db.run(sql`CREATE INDEX \`_projects_v_version_seo_version_seo_image_idx\` ON \`_projects_v\` (\`version_seo_image_id\`);`) + await db.run(sql`CREATE INDEX \`_projects_v_version_version_updated_at_idx\` ON \`_projects_v\` (\`version_updated_at\`);`) + await db.run(sql`CREATE INDEX \`_projects_v_version_version_created_at_idx\` ON \`_projects_v\` (\`version_created_at\`);`) + await db.run(sql`CREATE INDEX \`_projects_v_version_version__status_idx\` ON \`_projects_v\` (\`version__status\`);`) + await db.run(sql`CREATE INDEX \`_projects_v_created_at_idx\` ON \`_projects_v\` (\`created_at\`);`) + await db.run(sql`CREATE INDEX \`_projects_v_updated_at_idx\` ON \`_projects_v\` (\`updated_at\`);`) + await db.run(sql`CREATE INDEX \`_projects_v_latest_idx\` ON \`_projects_v\` (\`latest\`);`) + await db.run(sql`CREATE TABLE \`posts\` ( + \`id\` integer PRIMARY KEY NOT NULL, + \`title\` text, + \`slug\` text, + \`subtitle\` text, + \`excerpt\` text, + \`publish_date\` text, + \`updated_date\` text, + \`is_featured\` integer DEFAULT false, + \`cover_image_id\` integer, + \`seo_title\` text, + \`seo_description\` text, + \`seo_page_type\` text DEFAULT 'article', + \`seo_image_id\` integer, + \`body\` text, + \`updated_at\` text DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')) NOT NULL, + \`created_at\` text DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')) NOT NULL, + \`_status\` text DEFAULT 'draft', + FOREIGN KEY (\`cover_image_id\`) REFERENCES \`media\`(\`id\`) ON UPDATE no action ON DELETE set null, + FOREIGN KEY (\`seo_image_id\`) REFERENCES \`media\`(\`id\`) ON UPDATE no action ON DELETE set null + ); + `) + await db.run(sql`CREATE UNIQUE INDEX \`posts_slug_idx\` ON \`posts\` (\`slug\`);`) + await db.run(sql`CREATE INDEX \`posts_publish_date_idx\` ON \`posts\` (\`publish_date\`);`) + await db.run(sql`CREATE INDEX \`posts_cover_image_idx\` ON \`posts\` (\`cover_image_id\`);`) + await db.run(sql`CREATE INDEX \`posts_seo_seo_image_idx\` ON \`posts\` (\`seo_image_id\`);`) + await db.run(sql`CREATE INDEX \`posts_updated_at_idx\` ON \`posts\` (\`updated_at\`);`) + await db.run(sql`CREATE INDEX \`posts_created_at_idx\` ON \`posts\` (\`created_at\`);`) + await db.run(sql`CREATE INDEX \`posts__status_idx\` ON \`posts\` (\`_status\`);`) + await db.run(sql`CREATE INDEX \`publishDate__status_idx\` ON \`posts\` (\`publish_date\`,\`_status\`);`) + await db.run(sql`CREATE TABLE \`posts_rels\` ( + \`id\` integer PRIMARY KEY NOT NULL, + \`order\` integer, + \`parent_id\` integer NOT NULL, + \`path\` text NOT NULL, + \`tags_id\` integer, + FOREIGN KEY (\`parent_id\`) REFERENCES \`posts\`(\`id\`) ON UPDATE no action ON DELETE cascade, + FOREIGN KEY (\`tags_id\`) REFERENCES \`tags\`(\`id\`) ON UPDATE no action ON DELETE cascade + ); + `) + await db.run(sql`CREATE INDEX \`posts_rels_order_idx\` ON \`posts_rels\` (\`order\`);`) + await db.run(sql`CREATE INDEX \`posts_rels_parent_idx\` ON \`posts_rels\` (\`parent_id\`);`) + await db.run(sql`CREATE INDEX \`posts_rels_path_idx\` ON \`posts_rels\` (\`path\`);`) + await db.run(sql`CREATE INDEX \`posts_rels_tags_id_idx\` ON \`posts_rels\` (\`tags_id\`);`) + await db.run(sql`CREATE TABLE \`_posts_v\` ( + \`id\` integer PRIMARY KEY NOT NULL, + \`parent_id\` integer, + \`version_title\` text, + \`version_slug\` text, + \`version_subtitle\` text, + \`version_excerpt\` text, + \`version_publish_date\` text, + \`version_updated_date\` text, + \`version_is_featured\` integer DEFAULT false, + \`version_cover_image_id\` integer, + \`version_seo_title\` text, + \`version_seo_description\` text, + \`version_seo_page_type\` text DEFAULT 'article', + \`version_seo_image_id\` integer, + \`version_body\` text, + \`version_updated_at\` text, + \`version_created_at\` text, + \`version__status\` text DEFAULT 'draft', + \`created_at\` text DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')) NOT NULL, + \`updated_at\` text DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')) NOT NULL, + \`latest\` integer, + FOREIGN KEY (\`parent_id\`) REFERENCES \`posts\`(\`id\`) ON UPDATE no action ON DELETE set null, + FOREIGN KEY (\`version_cover_image_id\`) REFERENCES \`media\`(\`id\`) ON UPDATE no action ON DELETE set null, + FOREIGN KEY (\`version_seo_image_id\`) REFERENCES \`media\`(\`id\`) ON UPDATE no action ON DELETE set null + ); + `) + await db.run(sql`CREATE INDEX \`_posts_v_parent_idx\` ON \`_posts_v\` (\`parent_id\`);`) + await db.run(sql`CREATE INDEX \`_posts_v_version_version_slug_idx\` ON \`_posts_v\` (\`version_slug\`);`) + await db.run(sql`CREATE INDEX \`_posts_v_version_version_publish_date_idx\` ON \`_posts_v\` (\`version_publish_date\`);`) + await db.run(sql`CREATE INDEX \`_posts_v_version_version_cover_image_idx\` ON \`_posts_v\` (\`version_cover_image_id\`);`) + await db.run(sql`CREATE INDEX \`_posts_v_version_seo_version_seo_image_idx\` ON \`_posts_v\` (\`version_seo_image_id\`);`) + await db.run(sql`CREATE INDEX \`_posts_v_version_version_updated_at_idx\` ON \`_posts_v\` (\`version_updated_at\`);`) + await db.run(sql`CREATE INDEX \`_posts_v_version_version_created_at_idx\` ON \`_posts_v\` (\`version_created_at\`);`) + await db.run(sql`CREATE INDEX \`_posts_v_version_version__status_idx\` ON \`_posts_v\` (\`version__status\`);`) + await db.run(sql`CREATE INDEX \`_posts_v_created_at_idx\` ON \`_posts_v\` (\`created_at\`);`) + await db.run(sql`CREATE INDEX \`_posts_v_updated_at_idx\` ON \`_posts_v\` (\`updated_at\`);`) + await db.run(sql`CREATE INDEX \`_posts_v_latest_idx\` ON \`_posts_v\` (\`latest\`);`) + await db.run(sql`CREATE INDEX \`version_publishDate_version__status_idx\` ON \`_posts_v\` (\`version_publish_date\`,\`version__status\`);`) + await db.run(sql`CREATE TABLE \`_posts_v_rels\` ( + \`id\` integer PRIMARY KEY NOT NULL, + \`order\` integer, + \`parent_id\` integer NOT NULL, + \`path\` text NOT NULL, + \`tags_id\` integer, + FOREIGN KEY (\`parent_id\`) REFERENCES \`_posts_v\`(\`id\`) ON UPDATE no action ON DELETE cascade, + FOREIGN KEY (\`tags_id\`) REFERENCES \`tags\`(\`id\`) ON UPDATE no action ON DELETE cascade + ); + `) + await db.run(sql`CREATE INDEX \`_posts_v_rels_order_idx\` ON \`_posts_v_rels\` (\`order\`);`) + await db.run(sql`CREATE INDEX \`_posts_v_rels_parent_idx\` ON \`_posts_v_rels\` (\`parent_id\`);`) + await db.run(sql`CREATE INDEX \`_posts_v_rels_path_idx\` ON \`_posts_v_rels\` (\`path\`);`) + await db.run(sql`CREATE INDEX \`_posts_v_rels_tags_id_idx\` ON \`_posts_v_rels\` (\`tags_id\`);`) + await db.run(sql`CREATE TABLE \`payload_kv\` ( + \`id\` integer PRIMARY KEY NOT NULL, + \`key\` text NOT NULL, + \`data\` text NOT NULL + ); + `) + await db.run(sql`CREATE UNIQUE INDEX \`payload_kv_key_idx\` ON \`payload_kv\` (\`key\`);`) + await db.run(sql`ALTER TABLE \`payload_locked_documents_rels\` ADD \`tags_id\` integer REFERENCES tags(id);`) + await db.run(sql`ALTER TABLE \`payload_locked_documents_rels\` ADD \`pages_id\` integer REFERENCES pages(id);`) + await db.run(sql`ALTER TABLE \`payload_locked_documents_rels\` ADD \`projects_id\` integer REFERENCES projects(id);`) + await db.run(sql`ALTER TABLE \`payload_locked_documents_rels\` ADD \`posts_id\` integer REFERENCES posts(id);`) + await db.run(sql`CREATE INDEX \`payload_locked_documents_rels_tags_id_idx\` ON \`payload_locked_documents_rels\` (\`tags_id\`);`) + await db.run(sql`CREATE INDEX \`payload_locked_documents_rels_pages_id_idx\` ON \`payload_locked_documents_rels\` (\`pages_id\`);`) + await db.run(sql`CREATE INDEX \`payload_locked_documents_rels_projects_id_idx\` ON \`payload_locked_documents_rels\` (\`projects_id\`);`) + await db.run(sql`CREATE INDEX \`payload_locked_documents_rels_posts_id_idx\` ON \`payload_locked_documents_rels\` (\`posts_id\`);`) +} + +export async function down({ db, payload, req }: MigrateDownArgs): Promise { + await db.run(sql`DROP TABLE \`tags\`;`) + await db.run(sql`DROP TABLE \`pages\`;`) + await db.run(sql`DROP TABLE \`_pages_v\`;`) + await db.run(sql`DROP TABLE \`projects\`;`) + await db.run(sql`DROP TABLE \`_projects_v\`;`) + await db.run(sql`DROP TABLE \`posts\`;`) + await db.run(sql`DROP TABLE \`posts_rels\`;`) + await db.run(sql`DROP TABLE \`_posts_v\`;`) + await db.run(sql`DROP TABLE \`_posts_v_rels\`;`) + await db.run(sql`DROP TABLE \`payload_kv\`;`) + await db.run(sql`PRAGMA foreign_keys=OFF;`) + await db.run(sql`CREATE TABLE \`__new_payload_locked_documents_rels\` ( + \`id\` integer PRIMARY KEY NOT NULL, + \`order\` integer, + \`parent_id\` integer NOT NULL, + \`path\` text NOT NULL, + \`users_id\` integer, + \`media_id\` integer, + FOREIGN KEY (\`parent_id\`) REFERENCES \`payload_locked_documents\`(\`id\`) ON UPDATE no action ON DELETE cascade, + FOREIGN KEY (\`users_id\`) REFERENCES \`users\`(\`id\`) ON UPDATE no action ON DELETE cascade, + FOREIGN KEY (\`media_id\`) REFERENCES \`media\`(\`id\`) ON UPDATE no action ON DELETE cascade + ); + `) + await db.run(sql`INSERT INTO \`__new_payload_locked_documents_rels\`("id", "order", "parent_id", "path", "users_id", "media_id") SELECT "id", "order", "parent_id", "path", "users_id", "media_id" FROM \`payload_locked_documents_rels\`;`) + await db.run(sql`DROP TABLE \`payload_locked_documents_rels\`;`) + await db.run(sql`ALTER TABLE \`__new_payload_locked_documents_rels\` RENAME TO \`payload_locked_documents_rels\`;`) + await db.run(sql`PRAGMA foreign_keys=ON;`) + await db.run(sql`CREATE INDEX \`payload_locked_documents_rels_order_idx\` ON \`payload_locked_documents_rels\` (\`order\`);`) + await db.run(sql`CREATE INDEX \`payload_locked_documents_rels_parent_idx\` ON \`payload_locked_documents_rels\` (\`parent_id\`);`) + await db.run(sql`CREATE INDEX \`payload_locked_documents_rels_path_idx\` ON \`payload_locked_documents_rels\` (\`path\`);`) + await db.run(sql`CREATE INDEX \`payload_locked_documents_rels_users_id_idx\` ON \`payload_locked_documents_rels\` (\`users_id\`);`) + await db.run(sql`CREATE INDEX \`payload_locked_documents_rels_media_id_idx\` ON \`payload_locked_documents_rels\` (\`media_id\`);`) +} diff --git a/src/migrations/index.ts b/src/migrations/index.ts index e596aeb..0ecba1e 100644 --- a/src/migrations/index.ts +++ b/src/migrations/index.ts @@ -1,4 +1,5 @@ -import * as migration_20250929_111647 from './20250929_111647' +import * as migration_20250929_111647 from './20250929_111647'; +import * as migration_20260508_153847 from './20260508_153847'; export const migrations = [ { @@ -6,4 +7,9 @@ export const migrations = [ down: migration_20250929_111647.down, name: '20250929_111647', }, -] + { + up: migration_20260508_153847.up, + down: migration_20260508_153847.down, + name: '20260508_153847' + }, +]; -- 2.51.2