@beechcms/api 0.6.0-preview.4 → 0.6.0
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/assets/dashboard/BeechLogo.svg +18 -18
- package/assets/dashboard/BeechLogoLIght.svg +48 -48
- package/assets/dashboard/assets/chart-FUiy4I7R.js +39 -0
- package/assets/dashboard/assets/index-BlehzIfd.js +644 -0
- package/assets/dashboard/assets/index-Dve7eEqA.css +1 -0
- package/assets/dashboard/assets/{pie-chart-recharts-BMWpjFzf.js → pie-chart-recharts-iaYz4FeR.js} +1 -1
- package/assets/dashboard/assets/timeseries-chart-recharts-C8Lcylom.js +1 -0
- package/assets/dashboard/beechLogoDark.svg +48 -48
- package/assets/dashboard/index.html +17 -18
- package/assets/dashboard/noResult.svg +42 -42
- package/assets/dashboard/sol.svg +3 -3
- package/assets/dashboard/undraw_enter_nwx3.svg +36 -36
- package/dist/auth/constants.d.ts +5 -5
- package/dist/features/automations/{automations.handler.d.ts → api/automations.handler.d.ts} +1 -1
- package/dist/features/automations/{automation-runner.utils.d.ts → engine/automation-runner.utils.d.ts} +1 -1
- package/dist/features/automations/{action-executors → executors}/edit-field.executor.d.ts +1 -1
- package/dist/features/automations/{action-executors → executors}/index.d.ts +1 -1
- package/dist/features/automations/{action-executors → executors}/send-mail.executor.d.ts +1 -1
- package/dist/features/automations/{action-executors → executors}/set-variable.executor.d.ts +1 -1
- package/dist/features/automations/{action-executors → executors}/webhook.executor.d.ts +1 -1
- package/dist/features/automations/{when-evaluator.d.ts → filters/when-evaluator.d.ts} +1 -1
- package/dist/features/automations/index.d.ts +7 -7
- package/dist/features/content/constants.d.ts +10 -10
- package/dist/features/content/handlers/kanban-move.d.ts +3 -0
- package/dist/features/content/handlers/kanban-position.d.ts +3 -0
- package/dist/features/content/handlers/view-config.d.ts +4 -0
- package/dist/{search.d.ts → features/search/search.d.ts} +1 -1
- package/dist/features/upload/index.d.ts +9 -0
- package/dist/{widget.d.ts → features/widget/widget.d.ts} +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1057 -418
- package/dist/{middleware.d.ts → middleware/auth.middleware.d.ts} +1 -1
- package/dist/middleware/repository.middleware.d.ts +2 -1
- package/dist/public/access-policy.d.ts +1 -1
- package/dist/public/problem-details.d.ts +1 -0
- package/dist/public/public-errors.d.ts +4 -4
- package/dist/rate-limit/cloudflare-rate-limiter.d.ts +4 -1
- package/dist/rate-limit/in-memory-rate-limiter.d.ts +2 -1
- package/dist/shared/{schema-mutator.d1.d.ts → db/migrations/schema-mutator.d1.d.ts} +1 -0
- package/dist/shared/db/repositories/content.repository.d1.d.ts +259 -0
- package/dist/shared/db/repositories/kanban-position.repository.d1.d.ts +9 -0
- package/dist/shared/{seed-layout.repository.d1.d.ts → db/repositories/seed-layout.repository.d1.d.ts} +3 -1
- package/dist/shared/email/email.provider.d.ts +1 -0
- package/dist/{features → shared}/email/email.types.d.ts +1 -16
- package/dist/{features → shared}/email/providers/resend.d.ts +1 -2
- package/dist/{features → shared}/email/providers/smtp.d.ts +1 -2
- package/dist/shared/jobs/queue-consumer.d.ts +9 -0
- package/dist/shared/services/queue/cloudflare-queue-service.d.ts +11 -0
- package/dist/shared/services/queue/in-memory-queue-service.d.ts +16 -0
- package/dist/shared/storage/s3-bucket.d.ts +0 -1
- package/dist/shared/storage/upload.d.ts +7 -0
- package/dist/{media-utils.d.ts → shared/utils/media-utils.d.ts} +4 -2
- package/dist/types.d.ts +93 -2
- package/migrations/0000_v040_base.sql +265 -265
- package/migrations/0029_automations.sql +14 -14
- package/migrations/0030_test_seeds.sql +125 -125
- package/package.json +5 -4
- package/assets/dashboard/assets/chart-BwlCt-IA.js +0 -39
- package/assets/dashboard/assets/index-BcVN-DNy.js +0 -642
- package/assets/dashboard/assets/index-Cf1yRCqG.css +0 -1
- package/assets/dashboard/assets/timeseries-chart-recharts-8_GwAFR0.js +0 -1
- package/dist/features/email/email.provider.d.ts +0 -37
- package/dist/shared/content.repository.d1.d.ts +0 -68
- package/dist/upload.d.ts +0 -16
- package/dist/auth/{bcrypt-hash-provider.d.ts → providers/hash.provider.d.ts} +0 -0
- package/dist/auth/{jose-token-service.d.ts → providers/jwt-token.service.d.ts} +0 -0
- package/dist/auth/{login.d.ts → utils/login-helpers.d.ts} +0 -0
- package/dist/auth/{refresh.d.ts → utils/refresh-token.d.ts} +0 -0
- package/dist/features/automations/{automations.schema.d.ts → api/automations.schema.d.ts} +16 -16
- /package/dist/features/automations/{automation-runner.d.ts → engine/automation-runner.d.ts} +0 -0
- /package/dist/features/automations/{cron-runner.d.ts → engine/cron-runner.d.ts} +0 -0
- /package/dist/features/automations/{cron-runner.utils.d.ts → engine/cron-runner.utils.d.ts} +0 -0
- /package/dist/features/automations/{context-resolver.d.ts → evaluator/context-resolver.d.ts} +0 -0
- /package/dist/features/automations/{template-grammar.d.ts → evaluator/template-grammar.d.ts} +0 -0
- /package/dist/features/automations/{var-access-resolver.d.ts → evaluator/var-access-resolver.d.ts} +0 -0
- /package/dist/features/automations/{action-executors → executors}/create-entry.executor.d.ts +0 -0
- /package/dist/features/automations/{filter-translation.d.ts → filters/filter-translation.d.ts} +0 -0
- /package/dist/features/automations/{when-pushdown.d.ts → filters/when-pushdown.d.ts} +0 -0
- /package/dist/{search-utils.d.ts → features/search/search-utils.d.ts} +0 -0
- /package/dist/shared/{demo-data-sql.d.ts → db/migrations/demo-data-sql.d.ts} +0 -0
- /package/dist/shared/{automations.repository.d1.d.ts → db/repositories/automations.repository.d1.d.ts} +0 -0
- /package/dist/shared/{base.repository.d1.d.ts → db/repositories/base.repository.d1.d.ts} +0 -0
- /package/dist/shared/{d1-activity-log.repository.d.ts → db/repositories/d1-activity-log.repository.d.ts} +0 -0
- /package/dist/shared/{d1-analytics.repository.d.ts → db/repositories/d1-analytics.repository.d.ts} +0 -0
- /package/dist/shared/{d1-content-scan.repository.d.ts → db/repositories/d1-content-scan.repository.d.ts} +0 -0
- /package/dist/shared/{d1-notification.repository.d.ts → db/repositories/d1-notification.repository.d.ts} +0 -0
- /package/dist/shared/{d1-password-reset-token.repository.d.ts → db/repositories/d1-password-reset-token.repository.d.ts} +0 -0
- /package/dist/shared/{d1-search.repository.d.ts → db/repositories/d1-search.repository.d.ts} +0 -0
- /package/dist/shared/{d1-session.repository.d.ts → db/repositories/d1-session.repository.d.ts} +0 -0
- /package/dist/shared/{d1-setup-checklist.repository.d.ts → db/repositories/d1-setup-checklist.repository.d.ts} +0 -0
- /package/dist/shared/{d1-user.repository.d.ts → db/repositories/d1-user.repository.d.ts} +0 -0
- /package/dist/shared/{d1-widget.repository.d.ts → db/repositories/d1-widget.repository.d.ts} +0 -0
- /package/dist/shared/{dashboard-layout.repository.d1.d.ts → db/repositories/dashboard-layout.repository.d1.d.ts} +0 -0
- /package/dist/shared/{demo-data.repository.d1.d.ts → db/repositories/demo-data.repository.d1.d.ts} +0 -0
- /package/dist/shared/{idempotency.repository.d1.d.ts → db/repositories/idempotency.repository.d1.d.ts} +0 -0
- /package/dist/shared/{in-memory-seed.repository.d.ts → db/repositories/in-memory-seed.repository.d.ts} +0 -0
- /package/dist/shared/{media.repository.d1.d.ts → db/repositories/media.repository.d1.d.ts} +0 -0
- /package/dist/shared/{seed.repository.d1.d.ts → db/repositories/seed.repository.d1.d.ts} +0 -0
- /package/dist/shared/{site-settings.repository.d1.d.ts → db/repositories/site-settings.repository.d1.d.ts} +0 -0
- /package/dist/shared/{system-stats.repository.d1.d.ts → db/repositories/system-stats.repository.d1.d.ts} +0 -0
- /package/dist/{features → shared}/email/email.service.d.ts +0 -0
- /package/dist/{features → shared}/email/index.d.ts +0 -0
- /package/dist/{features → shared}/email/templates/automation-mail.d.ts +0 -0
- /package/dist/{features → shared}/email/templates/password-changed.d.ts +0 -0
- /package/dist/{features → shared}/email/templates/password-reset.d.ts +0 -0
- /package/dist/{features → shared}/email/templates/shell.d.ts +0 -0
- /package/dist/shared/{fts-sync.d.ts → jobs/fts-sync.d.ts} +0 -0
- /package/dist/shared/{apply-policies.d.ts → policies/apply-policies.d.ts} +0 -0
- /package/dist/shared/{d1-activity-logger.d.ts → services/activity-log/d1-activity-logger.d.ts} +0 -0
- /package/dist/shared/{in-memory-activity-logger.d.ts → services/activity-log/in-memory-activity-logger.d.ts} +0 -0
- /package/dist/shared/{seed-registry-cache.d.ts → services/cache/seed-registry-cache.d.ts} +0 -0
- /package/dist/shared/{fixed-clock.d.ts → services/clock/fixed-clock.d.ts} +0 -0
- /package/dist/shared/{sequential-id-generator.d.ts → services/id-generator/sequential-id-generator.d.ts} +0 -0
- /package/dist/shared/{background-notification-service.d.ts → services/notification/background-notification-service.d.ts} +0 -0
- /package/dist/shared/{in-memory-notification-service.d.ts → services/notification/in-memory-notification-service.d.ts} +0 -0
- /package/dist/shared/{qstash-notification-service.d.ts → services/notification/qstash-notification-service.d.ts} +0 -0
- /package/dist/shared/{execution-context-scheduler.d.ts → services/scheduler/execution-context-scheduler.d.ts} +0 -0
- /package/dist/shared/{content-utils.d.ts → utils/content-utils.d.ts} +0 -0
- /package/dist/shared/{query-utils.d.ts → utils/query-utils.d.ts} +0 -0
- /package/dist/shared/{request-utils.d.ts → utils/request-utils.d.ts} +0 -0
- /package/dist/shared/{storage-utils.d.ts → utils/storage-utils.d.ts} +0 -0
|
@@ -1,125 +1,125 @@
|
|
|
1
|
-
-- content_products
|
|
2
|
-
CREATE TABLE IF NOT EXISTS content_products (
|
|
3
|
-
id TEXT NOT NULL PRIMARY KEY,
|
|
4
|
-
slug TEXT NOT NULL UNIQUE,
|
|
5
|
-
status TEXT NOT NULL DEFAULT 'draft' CHECK (status IN ('draft', 'review', 'published', 'archived')),
|
|
6
|
-
name TEXT NOT NULL,
|
|
7
|
-
description TEXT,
|
|
8
|
-
price REAL,
|
|
9
|
-
inventory REAL,
|
|
10
|
-
rating REAL,
|
|
11
|
-
created_at INTEGER NOT NULL DEFAULT (unixepoch()),
|
|
12
|
-
updated_at INTEGER NOT NULL DEFAULT (unixepoch())
|
|
13
|
-
);
|
|
14
|
-
|
|
15
|
-
CREATE INDEX IF NOT EXISTS idx_products_status ON content_products(status);
|
|
16
|
-
CREATE INDEX IF NOT EXISTS idx_products_created_at ON content_products(created_at);
|
|
17
|
-
CREATE INDEX IF NOT EXISTS idx_products_name ON content_products(name);
|
|
18
|
-
CREATE INDEX IF NOT EXISTS idx_products_price ON content_products(price);
|
|
19
|
-
CREATE INDEX IF NOT EXISTS idx_products_inventory ON content_products(inventory);
|
|
20
|
-
CREATE INDEX IF NOT EXISTS idx_products_rating ON content_products(rating);
|
|
21
|
-
|
|
22
|
-
CREATE VIRTUAL TABLE IF NOT EXISTS fts_products USING fts5(
|
|
23
|
-
entry_id UNINDEXED,
|
|
24
|
-
name,
|
|
25
|
-
description,
|
|
26
|
-
tokenize = 'unicode61'
|
|
27
|
-
);
|
|
28
|
-
|
|
29
|
-
CREATE TRIGGER IF NOT EXISTS fts_products_insert
|
|
30
|
-
AFTER INSERT ON content_products BEGIN
|
|
31
|
-
INSERT INTO fts_products(entry_id, name, description) VALUES (new.id, new.name, new.description);
|
|
32
|
-
END;
|
|
33
|
-
|
|
34
|
-
CREATE TRIGGER IF NOT EXISTS fts_products_update
|
|
35
|
-
AFTER UPDATE OF name, description ON content_products BEGIN
|
|
36
|
-
DELETE FROM fts_products WHERE entry_id = old.id;
|
|
37
|
-
INSERT INTO fts_products(entry_id, name, description) VALUES (new.id, new.name, new.description);
|
|
38
|
-
END;
|
|
39
|
-
|
|
40
|
-
CREATE TRIGGER IF NOT EXISTS fts_products_delete
|
|
41
|
-
AFTER DELETE ON content_products BEGIN
|
|
42
|
-
DELETE FROM fts_products WHERE entry_id = old.id;
|
|
43
|
-
END;
|
|
44
|
-
|
|
45
|
-
-- content_reviews
|
|
46
|
-
CREATE TABLE IF NOT EXISTS content_reviews (
|
|
47
|
-
id TEXT NOT NULL PRIMARY KEY,
|
|
48
|
-
slug TEXT NOT NULL UNIQUE,
|
|
49
|
-
status TEXT NOT NULL DEFAULT 'draft' CHECK (status IN ('draft', 'review', 'published', 'archived')),
|
|
50
|
-
title TEXT NOT NULL,
|
|
51
|
-
body TEXT,
|
|
52
|
-
score REAL,
|
|
53
|
-
created_at INTEGER NOT NULL DEFAULT (unixepoch()),
|
|
54
|
-
updated_at INTEGER NOT NULL DEFAULT (unixepoch())
|
|
55
|
-
);
|
|
56
|
-
|
|
57
|
-
CREATE INDEX IF NOT EXISTS idx_reviews_status ON content_reviews(status);
|
|
58
|
-
CREATE INDEX IF NOT EXISTS idx_reviews_created_at ON content_reviews(created_at);
|
|
59
|
-
CREATE INDEX IF NOT EXISTS idx_reviews_title ON content_reviews(title);
|
|
60
|
-
CREATE INDEX IF NOT EXISTS idx_reviews_body ON content_reviews(body);
|
|
61
|
-
CREATE INDEX IF NOT EXISTS idx_reviews_score ON content_reviews(score);
|
|
62
|
-
|
|
63
|
-
CREATE VIRTUAL TABLE IF NOT EXISTS fts_reviews USING fts5(
|
|
64
|
-
entry_id UNINDEXED,
|
|
65
|
-
title,
|
|
66
|
-
body,
|
|
67
|
-
tokenize = 'unicode61'
|
|
68
|
-
);
|
|
69
|
-
|
|
70
|
-
CREATE TRIGGER IF NOT EXISTS fts_reviews_insert
|
|
71
|
-
AFTER INSERT ON content_reviews BEGIN
|
|
72
|
-
INSERT INTO fts_reviews(entry_id, title, body) VALUES (new.id, new.title, new.body);
|
|
73
|
-
END;
|
|
74
|
-
|
|
75
|
-
CREATE TRIGGER IF NOT EXISTS fts_reviews_update
|
|
76
|
-
AFTER UPDATE OF title, body ON content_reviews BEGIN
|
|
77
|
-
DELETE FROM fts_reviews WHERE entry_id = old.id;
|
|
78
|
-
INSERT INTO fts_reviews(entry_id, title, body) VALUES (new.id, new.title, new.body);
|
|
79
|
-
END;
|
|
80
|
-
|
|
81
|
-
CREATE TRIGGER IF NOT EXISTS fts_reviews_delete
|
|
82
|
-
AFTER DELETE ON content_reviews BEGIN
|
|
83
|
-
DELETE FROM fts_reviews WHERE entry_id = old.id;
|
|
84
|
-
END;
|
|
85
|
-
|
|
86
|
-
-- content_tasks
|
|
87
|
-
CREATE TABLE IF NOT EXISTS content_tasks (
|
|
88
|
-
id TEXT NOT NULL PRIMARY KEY,
|
|
89
|
-
slug TEXT NOT NULL UNIQUE,
|
|
90
|
-
status TEXT NOT NULL DEFAULT 'draft' CHECK (status IN ('draft', 'review', 'published', 'archived')),
|
|
91
|
-
title TEXT NOT NULL,
|
|
92
|
-
taskStatus TEXT,
|
|
93
|
-
completion REAL,
|
|
94
|
-
created_at INTEGER NOT NULL DEFAULT (unixepoch()),
|
|
95
|
-
updated_at INTEGER NOT NULL DEFAULT (unixepoch())
|
|
96
|
-
);
|
|
97
|
-
|
|
98
|
-
CREATE INDEX IF NOT EXISTS idx_tasks_status ON content_tasks(status);
|
|
99
|
-
CREATE INDEX IF NOT EXISTS idx_tasks_created_at ON content_tasks(created_at);
|
|
100
|
-
CREATE INDEX IF NOT EXISTS idx_tasks_title ON content_tasks(title);
|
|
101
|
-
CREATE INDEX IF NOT EXISTS idx_tasks_taskStatus ON content_tasks(taskStatus);
|
|
102
|
-
CREATE INDEX IF NOT EXISTS idx_tasks_completion ON content_tasks(completion);
|
|
103
|
-
|
|
104
|
-
CREATE VIRTUAL TABLE IF NOT EXISTS fts_tasks USING fts5(
|
|
105
|
-
entry_id UNINDEXED,
|
|
106
|
-
title,
|
|
107
|
-
taskStatus,
|
|
108
|
-
tokenize = 'unicode61'
|
|
109
|
-
);
|
|
110
|
-
|
|
111
|
-
CREATE TRIGGER IF NOT EXISTS fts_tasks_insert
|
|
112
|
-
AFTER INSERT ON content_tasks BEGIN
|
|
113
|
-
INSERT INTO fts_tasks(entry_id, title, taskStatus) VALUES (new.id, new.title, new.taskStatus);
|
|
114
|
-
END;
|
|
115
|
-
|
|
116
|
-
CREATE TRIGGER IF NOT EXISTS fts_tasks_update
|
|
117
|
-
AFTER UPDATE OF title, taskStatus ON content_tasks BEGIN
|
|
118
|
-
DELETE FROM fts_tasks WHERE entry_id = old.id;
|
|
119
|
-
INSERT INTO fts_tasks(entry_id, title, taskStatus) VALUES (new.id, new.title, new.taskStatus);
|
|
120
|
-
END;
|
|
121
|
-
|
|
122
|
-
CREATE TRIGGER IF NOT EXISTS fts_tasks_delete
|
|
123
|
-
AFTER DELETE ON content_tasks BEGIN
|
|
124
|
-
DELETE FROM fts_tasks WHERE entry_id = old.id;
|
|
125
|
-
END;
|
|
1
|
+
-- content_products
|
|
2
|
+
CREATE TABLE IF NOT EXISTS content_products (
|
|
3
|
+
id TEXT NOT NULL PRIMARY KEY,
|
|
4
|
+
slug TEXT NOT NULL UNIQUE,
|
|
5
|
+
status TEXT NOT NULL DEFAULT 'draft' CHECK (status IN ('draft', 'review', 'published', 'archived')),
|
|
6
|
+
name TEXT NOT NULL,
|
|
7
|
+
description TEXT,
|
|
8
|
+
price REAL,
|
|
9
|
+
inventory REAL,
|
|
10
|
+
rating REAL,
|
|
11
|
+
created_at INTEGER NOT NULL DEFAULT (unixepoch()),
|
|
12
|
+
updated_at INTEGER NOT NULL DEFAULT (unixepoch())
|
|
13
|
+
);
|
|
14
|
+
|
|
15
|
+
CREATE INDEX IF NOT EXISTS idx_products_status ON content_products(status);
|
|
16
|
+
CREATE INDEX IF NOT EXISTS idx_products_created_at ON content_products(created_at);
|
|
17
|
+
CREATE INDEX IF NOT EXISTS idx_products_name ON content_products(name);
|
|
18
|
+
CREATE INDEX IF NOT EXISTS idx_products_price ON content_products(price);
|
|
19
|
+
CREATE INDEX IF NOT EXISTS idx_products_inventory ON content_products(inventory);
|
|
20
|
+
CREATE INDEX IF NOT EXISTS idx_products_rating ON content_products(rating);
|
|
21
|
+
|
|
22
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS fts_products USING fts5(
|
|
23
|
+
entry_id UNINDEXED,
|
|
24
|
+
name,
|
|
25
|
+
description,
|
|
26
|
+
tokenize = 'unicode61'
|
|
27
|
+
);
|
|
28
|
+
|
|
29
|
+
CREATE TRIGGER IF NOT EXISTS fts_products_insert
|
|
30
|
+
AFTER INSERT ON content_products BEGIN
|
|
31
|
+
INSERT INTO fts_products(entry_id, name, description) VALUES (new.id, new.name, new.description);
|
|
32
|
+
END;
|
|
33
|
+
|
|
34
|
+
CREATE TRIGGER IF NOT EXISTS fts_products_update
|
|
35
|
+
AFTER UPDATE OF name, description ON content_products BEGIN
|
|
36
|
+
DELETE FROM fts_products WHERE entry_id = old.id;
|
|
37
|
+
INSERT INTO fts_products(entry_id, name, description) VALUES (new.id, new.name, new.description);
|
|
38
|
+
END;
|
|
39
|
+
|
|
40
|
+
CREATE TRIGGER IF NOT EXISTS fts_products_delete
|
|
41
|
+
AFTER DELETE ON content_products BEGIN
|
|
42
|
+
DELETE FROM fts_products WHERE entry_id = old.id;
|
|
43
|
+
END;
|
|
44
|
+
|
|
45
|
+
-- content_reviews
|
|
46
|
+
CREATE TABLE IF NOT EXISTS content_reviews (
|
|
47
|
+
id TEXT NOT NULL PRIMARY KEY,
|
|
48
|
+
slug TEXT NOT NULL UNIQUE,
|
|
49
|
+
status TEXT NOT NULL DEFAULT 'draft' CHECK (status IN ('draft', 'review', 'published', 'archived')),
|
|
50
|
+
title TEXT NOT NULL,
|
|
51
|
+
body TEXT,
|
|
52
|
+
score REAL,
|
|
53
|
+
created_at INTEGER NOT NULL DEFAULT (unixepoch()),
|
|
54
|
+
updated_at INTEGER NOT NULL DEFAULT (unixepoch())
|
|
55
|
+
);
|
|
56
|
+
|
|
57
|
+
CREATE INDEX IF NOT EXISTS idx_reviews_status ON content_reviews(status);
|
|
58
|
+
CREATE INDEX IF NOT EXISTS idx_reviews_created_at ON content_reviews(created_at);
|
|
59
|
+
CREATE INDEX IF NOT EXISTS idx_reviews_title ON content_reviews(title);
|
|
60
|
+
CREATE INDEX IF NOT EXISTS idx_reviews_body ON content_reviews(body);
|
|
61
|
+
CREATE INDEX IF NOT EXISTS idx_reviews_score ON content_reviews(score);
|
|
62
|
+
|
|
63
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS fts_reviews USING fts5(
|
|
64
|
+
entry_id UNINDEXED,
|
|
65
|
+
title,
|
|
66
|
+
body,
|
|
67
|
+
tokenize = 'unicode61'
|
|
68
|
+
);
|
|
69
|
+
|
|
70
|
+
CREATE TRIGGER IF NOT EXISTS fts_reviews_insert
|
|
71
|
+
AFTER INSERT ON content_reviews BEGIN
|
|
72
|
+
INSERT INTO fts_reviews(entry_id, title, body) VALUES (new.id, new.title, new.body);
|
|
73
|
+
END;
|
|
74
|
+
|
|
75
|
+
CREATE TRIGGER IF NOT EXISTS fts_reviews_update
|
|
76
|
+
AFTER UPDATE OF title, body ON content_reviews BEGIN
|
|
77
|
+
DELETE FROM fts_reviews WHERE entry_id = old.id;
|
|
78
|
+
INSERT INTO fts_reviews(entry_id, title, body) VALUES (new.id, new.title, new.body);
|
|
79
|
+
END;
|
|
80
|
+
|
|
81
|
+
CREATE TRIGGER IF NOT EXISTS fts_reviews_delete
|
|
82
|
+
AFTER DELETE ON content_reviews BEGIN
|
|
83
|
+
DELETE FROM fts_reviews WHERE entry_id = old.id;
|
|
84
|
+
END;
|
|
85
|
+
|
|
86
|
+
-- content_tasks
|
|
87
|
+
CREATE TABLE IF NOT EXISTS content_tasks (
|
|
88
|
+
id TEXT NOT NULL PRIMARY KEY,
|
|
89
|
+
slug TEXT NOT NULL UNIQUE,
|
|
90
|
+
status TEXT NOT NULL DEFAULT 'draft' CHECK (status IN ('draft', 'review', 'published', 'archived')),
|
|
91
|
+
title TEXT NOT NULL,
|
|
92
|
+
taskStatus TEXT,
|
|
93
|
+
completion REAL,
|
|
94
|
+
created_at INTEGER NOT NULL DEFAULT (unixepoch()),
|
|
95
|
+
updated_at INTEGER NOT NULL DEFAULT (unixepoch())
|
|
96
|
+
);
|
|
97
|
+
|
|
98
|
+
CREATE INDEX IF NOT EXISTS idx_tasks_status ON content_tasks(status);
|
|
99
|
+
CREATE INDEX IF NOT EXISTS idx_tasks_created_at ON content_tasks(created_at);
|
|
100
|
+
CREATE INDEX IF NOT EXISTS idx_tasks_title ON content_tasks(title);
|
|
101
|
+
CREATE INDEX IF NOT EXISTS idx_tasks_taskStatus ON content_tasks(taskStatus);
|
|
102
|
+
CREATE INDEX IF NOT EXISTS idx_tasks_completion ON content_tasks(completion);
|
|
103
|
+
|
|
104
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS fts_tasks USING fts5(
|
|
105
|
+
entry_id UNINDEXED,
|
|
106
|
+
title,
|
|
107
|
+
taskStatus,
|
|
108
|
+
tokenize = 'unicode61'
|
|
109
|
+
);
|
|
110
|
+
|
|
111
|
+
CREATE TRIGGER IF NOT EXISTS fts_tasks_insert
|
|
112
|
+
AFTER INSERT ON content_tasks BEGIN
|
|
113
|
+
INSERT INTO fts_tasks(entry_id, title, taskStatus) VALUES (new.id, new.title, new.taskStatus);
|
|
114
|
+
END;
|
|
115
|
+
|
|
116
|
+
CREATE TRIGGER IF NOT EXISTS fts_tasks_update
|
|
117
|
+
AFTER UPDATE OF title, taskStatus ON content_tasks BEGIN
|
|
118
|
+
DELETE FROM fts_tasks WHERE entry_id = old.id;
|
|
119
|
+
INSERT INTO fts_tasks(entry_id, title, taskStatus) VALUES (new.id, new.title, new.taskStatus);
|
|
120
|
+
END;
|
|
121
|
+
|
|
122
|
+
CREATE TRIGGER IF NOT EXISTS fts_tasks_delete
|
|
123
|
+
AFTER DELETE ON content_tasks BEGIN
|
|
124
|
+
DELETE FROM fts_tasks WHERE entry_id = old.id;
|
|
125
|
+
END;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@beechcms/api",
|
|
3
|
-
"version": "0.6.0
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/factory.d.ts",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"dependencies": {
|
|
21
21
|
"@aws-sdk/client-s3": "^3.995.0",
|
|
22
22
|
"@aws-sdk/s3-request-presigner": "^3.995.0",
|
|
23
|
-
"@beechcms/core": "^0.6.0
|
|
23
|
+
"@beechcms/core": "^0.6.0",
|
|
24
24
|
"@upstash/qstash": "^2.11.0",
|
|
25
25
|
"bcryptjs": "^2.4.3",
|
|
26
26
|
"hono": "^4.12.21",
|
|
@@ -30,9 +30,10 @@
|
|
|
30
30
|
"devDependencies": {
|
|
31
31
|
"@cloudflare/workers-types": "^4.20260213.0",
|
|
32
32
|
"@types/bcryptjs": "^2.4.6",
|
|
33
|
+
"@types/node": "^24.10.1",
|
|
33
34
|
"@vitest/coverage-v8": "^4.1.0",
|
|
34
35
|
"esbuild": "0.28.1",
|
|
35
|
-
"vite": "8.
|
|
36
|
+
"vite": "8.1.3",
|
|
36
37
|
"vitest": "^4.1.0",
|
|
37
38
|
"wrangler": "^4.100.0"
|
|
38
39
|
},
|
|
@@ -45,7 +46,7 @@
|
|
|
45
46
|
"type-check": "tsc -p tsconfig.build.json --noEmit",
|
|
46
47
|
"db:migrate:local": "node ./scripts/bootstrap-d1.mjs",
|
|
47
48
|
"db:reset:local": "node -e \"require('fs').rmSync('.wrangler/state', {recursive:true,force:true})\" && node ./scripts/bootstrap-d1.mjs",
|
|
48
|
-
"deploy": "wrangler deploy --minify",
|
|
49
|
+
"deploy": "wrangler deploy --minify --env production",
|
|
49
50
|
"cf-typegen": "wrangler types --env-interface CloudflareBindings",
|
|
50
51
|
"test": "vitest run",
|
|
51
52
|
"test:coverage": "vitest run --coverage"
|