@kernhq/module-quire 0.4.0 → 0.5.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/dist/contract/index.d.ts +1 -0
- package/dist/contract/index.d.ts.map +1 -1
- package/dist/contract/index.js +1 -0
- package/dist/contract/index.js.map +1 -1
- package/dist/contract/properties.d.ts +483 -0
- package/dist/contract/properties.d.ts.map +1 -0
- package/dist/contract/properties.js +175 -0
- package/dist/contract/properties.js.map +1 -0
- package/dist/server/formula.d.ts +49 -0
- package/dist/server/formula.d.ts.map +1 -0
- package/dist/server/formula.js +407 -0
- package/dist/server/formula.js.map +1 -0
- package/dist/server/schema.d.ts +645 -1
- package/dist/server/schema.d.ts.map +1 -1
- package/dist/server/schema.js +85 -1
- package/dist/server/schema.js.map +1 -1
- package/migrations/0004_databases.sql +83 -0
- package/migrations/meta/0004_snapshot.json +1129 -0
- package/migrations/meta/_journal.json +7 -0
- package/package.json +1 -1
- package/src/client/index.ts +3 -0
- package/src/contract/index.ts +1 -0
- package/src/contract/properties.ts +199 -0
package/dist/server/schema.js
CHANGED
|
@@ -159,6 +159,90 @@ export const comments = schema.table('comments', {
|
|
|
159
159
|
index('comments_ws_page_idx').on(t.workspaceId, t.pageId, t.createdAt),
|
|
160
160
|
index('comments_ws_thread_idx').on(t.workspaceId, t.threadId, t.createdAt),
|
|
161
161
|
]);
|
|
162
|
+
/**
|
|
163
|
+
* A table of pages with typed columns.
|
|
164
|
+
*
|
|
165
|
+
* A database is not a second kind of object beside a page: it *is* a page whose body renders a view
|
|
166
|
+
* instead of prose, and each of its rows is a page too. That is what makes a row openable,
|
|
167
|
+
* commentable, versioned and searchable for free, rather than needing all of it again.
|
|
168
|
+
*/
|
|
169
|
+
export const databases = schema.table('databases', {
|
|
170
|
+
id: id(),
|
|
171
|
+
workspaceId: ws(),
|
|
172
|
+
spaceId: uuid('space_id').notNull(),
|
|
173
|
+
/** the page whose body this database is */
|
|
174
|
+
pageId: uuid('page_id').notNull(),
|
|
175
|
+
name: text('name').notNull().default(''),
|
|
176
|
+
description: text('description').notNull().default(''),
|
|
177
|
+
/** an inline database lives inside another page's prose rather than owning a page */
|
|
178
|
+
inline: boolean('inline').notNull().default(false),
|
|
179
|
+
createdAt: ts('created_at').notNull().defaultNow(),
|
|
180
|
+
updatedAt: ts('updated_at').notNull().defaultNow(),
|
|
181
|
+
}, (t) => [index('databases_ws_page_idx').on(t.workspaceId, t.pageId)]);
|
|
182
|
+
/**
|
|
183
|
+
* A column.
|
|
184
|
+
*
|
|
185
|
+
* `config` carries whatever the type needs — the options of a select, the target of a relation, the
|
|
186
|
+
* expression of a formula — because a column of `jsonb` is the difference between adding a property
|
|
187
|
+
* type and adding a migration.
|
|
188
|
+
*/
|
|
189
|
+
export const properties = schema.table('properties', {
|
|
190
|
+
id: id(),
|
|
191
|
+
workspaceId: ws(),
|
|
192
|
+
databaseId: uuid('database_id').notNull(),
|
|
193
|
+
/** stable across renames; this is what a row's `props` is keyed by */
|
|
194
|
+
key: text('key').notNull(),
|
|
195
|
+
name: text('name').notNull(),
|
|
196
|
+
type: text('type').notNull(),
|
|
197
|
+
config: jsonObject('config'),
|
|
198
|
+
position: text('position').notNull(),
|
|
199
|
+
hidden: boolean('hidden').notNull().default(false),
|
|
200
|
+
createdAt: ts('created_at').notNull().defaultNow(),
|
|
201
|
+
}, (t) => [
|
|
202
|
+
uniqueIndex('properties_db_key_uq').on(t.workspaceId, t.databaseId, t.key),
|
|
203
|
+
index('properties_ws_db_idx').on(t.workspaceId, t.databaseId, t.position),
|
|
204
|
+
]);
|
|
205
|
+
/** A saved way of looking at a database: which rows, in what order, drawn how. */
|
|
206
|
+
export const views = schema.table('views', {
|
|
207
|
+
id: id(),
|
|
208
|
+
workspaceId: ws(),
|
|
209
|
+
databaseId: uuid('database_id').notNull(),
|
|
210
|
+
name: text('name').notNull(),
|
|
211
|
+
kind: text('kind').notNull().default('table'),
|
|
212
|
+
/** filters, sorts, grouping, visible properties, column widths, the date property for a calendar */
|
|
213
|
+
config: jsonObject('config'),
|
|
214
|
+
position: text('position').notNull(),
|
|
215
|
+
isDefault: boolean('is_default').notNull().default(false),
|
|
216
|
+
createdAt: ts('created_at').notNull().defaultNow(),
|
|
217
|
+
updatedAt: ts('updated_at').notNull().defaultNow(),
|
|
218
|
+
}, (t) => [index('views_ws_db_idx').on(t.workspaceId, t.databaseId, t.position)]);
|
|
219
|
+
/**
|
|
220
|
+
* One end of a relation between two rows.
|
|
221
|
+
*
|
|
222
|
+
* A join table rather than an array in `props`, because a relation is symmetric: setting it from
|
|
223
|
+
* one side has to be visible from the other, and a rollup reads it from whichever side asked.
|
|
224
|
+
*/
|
|
225
|
+
export const relations = schema.table('relations', {
|
|
226
|
+
id: id(),
|
|
227
|
+
workspaceId: ws(),
|
|
228
|
+
propertyId: uuid('property_id').notNull(),
|
|
229
|
+
fromPageId: uuid('from_page_id').notNull(),
|
|
230
|
+
toPageId: uuid('to_page_id').notNull(),
|
|
231
|
+
createdAt: ts('created_at').notNull().defaultNow(),
|
|
232
|
+
}, (t) => [
|
|
233
|
+
uniqueIndex('relations_uq').on(t.workspaceId, t.propertyId, t.fromPageId, t.toPageId),
|
|
234
|
+
index('relations_ws_from_idx').on(t.workspaceId, t.fromPageId),
|
|
235
|
+
index('relations_ws_to_idx').on(t.workspaceId, t.toPageId),
|
|
236
|
+
]);
|
|
162
237
|
/** Every tenant table, so the RLS migration can be checked against one list rather than memory. */
|
|
163
|
-
export const TENANT_TABLES = [
|
|
238
|
+
export const TENANT_TABLES = [
|
|
239
|
+
'spaces',
|
|
240
|
+
'pages',
|
|
241
|
+
'page_versions',
|
|
242
|
+
'comments',
|
|
243
|
+
'databases',
|
|
244
|
+
'properties',
|
|
245
|
+
'views',
|
|
246
|
+
'relations',
|
|
247
|
+
];
|
|
164
248
|
//# sourceMappingURL=schema.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/server/schema.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/server/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
CREATE TABLE IF NOT EXISTS "mod_quire"."databases" (
|
|
2
|
+
"id" uuid PRIMARY KEY DEFAULT uuidv7() NOT NULL,
|
|
3
|
+
"workspace_id" uuid NOT NULL,
|
|
4
|
+
"space_id" uuid NOT NULL,
|
|
5
|
+
"page_id" uuid NOT NULL,
|
|
6
|
+
"name" text DEFAULT '' NOT NULL,
|
|
7
|
+
"description" text DEFAULT '' NOT NULL,
|
|
8
|
+
"inline" boolean DEFAULT false NOT NULL,
|
|
9
|
+
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
10
|
+
"updated_at" timestamp with time zone DEFAULT now() NOT NULL
|
|
11
|
+
);
|
|
12
|
+
--> statement-breakpoint
|
|
13
|
+
CREATE TABLE IF NOT EXISTS "mod_quire"."properties" (
|
|
14
|
+
"id" uuid PRIMARY KEY DEFAULT uuidv7() NOT NULL,
|
|
15
|
+
"workspace_id" uuid NOT NULL,
|
|
16
|
+
"database_id" uuid NOT NULL,
|
|
17
|
+
"key" text NOT NULL,
|
|
18
|
+
"name" text NOT NULL,
|
|
19
|
+
"type" text NOT NULL,
|
|
20
|
+
"config" jsonb DEFAULT '{}'::jsonb NOT NULL,
|
|
21
|
+
"position" text NOT NULL,
|
|
22
|
+
"hidden" boolean DEFAULT false NOT NULL,
|
|
23
|
+
"created_at" timestamp with time zone DEFAULT now() NOT NULL
|
|
24
|
+
);
|
|
25
|
+
--> statement-breakpoint
|
|
26
|
+
CREATE TABLE IF NOT EXISTS "mod_quire"."relations" (
|
|
27
|
+
"id" uuid PRIMARY KEY DEFAULT uuidv7() NOT NULL,
|
|
28
|
+
"workspace_id" uuid NOT NULL,
|
|
29
|
+
"property_id" uuid NOT NULL,
|
|
30
|
+
"from_page_id" uuid NOT NULL,
|
|
31
|
+
"to_page_id" uuid NOT NULL,
|
|
32
|
+
"created_at" timestamp with time zone DEFAULT now() NOT NULL
|
|
33
|
+
);
|
|
34
|
+
--> statement-breakpoint
|
|
35
|
+
CREATE TABLE IF NOT EXISTS "mod_quire"."views" (
|
|
36
|
+
"id" uuid PRIMARY KEY DEFAULT uuidv7() NOT NULL,
|
|
37
|
+
"workspace_id" uuid NOT NULL,
|
|
38
|
+
"database_id" uuid NOT NULL,
|
|
39
|
+
"name" text NOT NULL,
|
|
40
|
+
"kind" text DEFAULT 'table' NOT NULL,
|
|
41
|
+
"config" jsonb DEFAULT '{}'::jsonb NOT NULL,
|
|
42
|
+
"position" text NOT NULL,
|
|
43
|
+
"is_default" boolean DEFAULT false NOT NULL,
|
|
44
|
+
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
45
|
+
"updated_at" timestamp with time zone DEFAULT now() NOT NULL
|
|
46
|
+
);
|
|
47
|
+
--> statement-breakpoint
|
|
48
|
+
CREATE INDEX IF NOT EXISTS "databases_ws_page_idx" ON "mod_quire"."databases" USING btree ("workspace_id","page_id");--> statement-breakpoint
|
|
49
|
+
CREATE UNIQUE INDEX IF NOT EXISTS "properties_db_key_uq" ON "mod_quire"."properties" USING btree ("workspace_id","database_id","key");--> statement-breakpoint
|
|
50
|
+
CREATE INDEX IF NOT EXISTS "properties_ws_db_idx" ON "mod_quire"."properties" USING btree ("workspace_id","database_id","position");--> statement-breakpoint
|
|
51
|
+
CREATE UNIQUE INDEX IF NOT EXISTS "relations_uq" ON "mod_quire"."relations" USING btree ("workspace_id","property_id","from_page_id","to_page_id");--> statement-breakpoint
|
|
52
|
+
CREATE INDEX IF NOT EXISTS "relations_ws_from_idx" ON "mod_quire"."relations" USING btree ("workspace_id","from_page_id");--> statement-breakpoint
|
|
53
|
+
CREATE INDEX IF NOT EXISTS "relations_ws_to_idx" ON "mod_quire"."relations" USING btree ("workspace_id","to_page_id");--> statement-breakpoint
|
|
54
|
+
CREATE INDEX IF NOT EXISTS "views_ws_db_idx" ON "mod_quire"."views" USING btree ("workspace_id","database_id","position");--> statement-breakpoint
|
|
55
|
+
|
|
56
|
+
-- Row-level security, the same triple every tenant table gets.
|
|
57
|
+
ALTER TABLE "mod_quire"."databases" ENABLE ROW LEVEL SECURITY;--> statement-breakpoint
|
|
58
|
+
ALTER TABLE "mod_quire"."databases" FORCE ROW LEVEL SECURITY;--> statement-breakpoint
|
|
59
|
+
DROP POLICY IF EXISTS "databases_ws_isolation" ON "mod_quire"."databases";--> statement-breakpoint
|
|
60
|
+
CREATE POLICY "databases_ws_isolation" ON "mod_quire"."databases"
|
|
61
|
+
USING (workspace_id::text = current_setting('app.workspace_id', true))
|
|
62
|
+
WITH CHECK (workspace_id::text = current_setting('app.workspace_id', true));--> statement-breakpoint
|
|
63
|
+
|
|
64
|
+
ALTER TABLE "mod_quire"."properties" ENABLE ROW LEVEL SECURITY;--> statement-breakpoint
|
|
65
|
+
ALTER TABLE "mod_quire"."properties" FORCE ROW LEVEL SECURITY;--> statement-breakpoint
|
|
66
|
+
DROP POLICY IF EXISTS "properties_ws_isolation" ON "mod_quire"."properties";--> statement-breakpoint
|
|
67
|
+
CREATE POLICY "properties_ws_isolation" ON "mod_quire"."properties"
|
|
68
|
+
USING (workspace_id::text = current_setting('app.workspace_id', true))
|
|
69
|
+
WITH CHECK (workspace_id::text = current_setting('app.workspace_id', true));--> statement-breakpoint
|
|
70
|
+
|
|
71
|
+
ALTER TABLE "mod_quire"."views" ENABLE ROW LEVEL SECURITY;--> statement-breakpoint
|
|
72
|
+
ALTER TABLE "mod_quire"."views" FORCE ROW LEVEL SECURITY;--> statement-breakpoint
|
|
73
|
+
DROP POLICY IF EXISTS "views_ws_isolation" ON "mod_quire"."views";--> statement-breakpoint
|
|
74
|
+
CREATE POLICY "views_ws_isolation" ON "mod_quire"."views"
|
|
75
|
+
USING (workspace_id::text = current_setting('app.workspace_id', true))
|
|
76
|
+
WITH CHECK (workspace_id::text = current_setting('app.workspace_id', true));--> statement-breakpoint
|
|
77
|
+
|
|
78
|
+
ALTER TABLE "mod_quire"."relations" ENABLE ROW LEVEL SECURITY;--> statement-breakpoint
|
|
79
|
+
ALTER TABLE "mod_quire"."relations" FORCE ROW LEVEL SECURITY;--> statement-breakpoint
|
|
80
|
+
DROP POLICY IF EXISTS "relations_ws_isolation" ON "mod_quire"."relations";--> statement-breakpoint
|
|
81
|
+
CREATE POLICY "relations_ws_isolation" ON "mod_quire"."relations"
|
|
82
|
+
USING (workspace_id::text = current_setting('app.workspace_id', true))
|
|
83
|
+
WITH CHECK (workspace_id::text = current_setting('app.workspace_id', true));
|