botnote 0.1.56 → 0.2.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/cli.js +3 -1
- package/dist/cli.js.map +1 -1
- package/dist/db/migrations/0029_drop_global_uniques.sql +38 -0
- package/dist/db/schema.d.ts +4 -4
- package/dist/db/schema.js +6 -6
- package/dist/db/schema.js.map +1 -1
- package/dist/rest/routes.js +58 -58
- package/dist/rest/routes.js.map +1 -1
- package/dist/rest/server.d.ts +11 -1
- package/dist/rest/server.js +19 -3
- package/dist/rest/server.js.map +1 -1
- package/dist/service/embedding.d.ts +5 -0
- package/dist/service/embedding.js +6 -1
- package/dist/service/embedding.js.map +1 -1
- package/dist/service/embedding_settings.d.ts +4 -3
- package/dist/service/embedding_settings.js +13 -16
- package/dist/service/embedding_settings.js.map +1 -1
- package/dist/service/entities.d.ts +29 -20
- package/dist/service/entities.js +101 -60
- package/dist/service/entities.js.map +1 -1
- package/dist/service/feedback.d.ts +3 -2
- package/dist/service/feedback.js +8 -4
- package/dist/service/feedback.js.map +1 -1
- package/dist/service/opening_brief.d.ts +2 -1
- package/dist/service/opening_brief.js +6 -7
- package/dist/service/opening_brief.js.map +1 -1
- package/dist/service/projects.d.ts +6 -5
- package/dist/service/projects.js +25 -13
- package/dist/service/projects.js.map +1 -1
- package/dist/service/recurrence.d.ts +7 -6
- package/dist/service/recurrence.js +36 -14
- package/dist/service/recurrence.js.map +1 -1
- package/dist/service/scope.d.ts +14 -0
- package/dist/service/scope.js +19 -0
- package/dist/service/scope.js.map +1 -0
- package/dist/service/search.d.ts +3 -2
- package/dist/service/search.js +12 -9
- package/dist/service/search.js.map +1 -1
- package/dist/service/sessions.d.ts +7 -8
- package/dist/service/sessions.js +8 -8
- package/dist/service/sessions.js.map +1 -1
- package/dist/service/tasks.d.ts +2 -1
- package/dist/service/tasks.js +13 -6
- package/dist/service/tasks.js.map +1 -1
- package/dist/service/tokens.d.ts +7 -6
- package/dist/service/tokens.js +17 -10
- package/dist/service/tokens.js.map +1 -1
- package/dist/service/workspace_settings.d.ts +3 -2
- package/dist/service/workspace_settings.js +11 -15
- package/dist/service/workspace_settings.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/service/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAEpD,OAAO,EAAE,KAAK,EAAE,QAAQ,IAAI,aAAa,EAAe,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/service/search.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { sql } from "drizzle-orm";
|
|
2
1
|
import type { Database } from "../db/client.js";
|
|
3
2
|
import { type Session } from "../db/schema.js";
|
|
3
|
+
import type { Scope } from "./scope.js";
|
|
4
4
|
/** Verify a candidate master password against BOTNOTE_PASSWORD env. Returns
|
|
5
5
|
* false (not throws) when the env is unset, so callers can degrade safely. */
|
|
6
6
|
export declare function verifyMasterPassword(candidate: string): boolean;
|
|
@@ -8,18 +8,17 @@ export interface CreatedSession {
|
|
|
8
8
|
session: Session;
|
|
9
9
|
plaintext: string;
|
|
10
10
|
}
|
|
11
|
-
export declare function createSession(db: Database["db"], opts?: {
|
|
11
|
+
export declare function createSession(scope: Scope, db: Database["db"], opts?: {
|
|
12
12
|
userAgent?: string | null;
|
|
13
13
|
ttlDays?: number;
|
|
14
14
|
}): Promise<CreatedSession>;
|
|
15
15
|
/** Look up a session by cookie plaintext. Returns the row if it exists and
|
|
16
|
-
* has not expired; otherwise null. Bumps last_used_at on hit.
|
|
16
|
+
* has not expired; otherwise null. Bumps last_used_at on hit. Unscoped by
|
|
17
|
+
* design: the row's workspaceId becomes the request Scope. */
|
|
17
18
|
export declare function consumeSession(db: Database["db"], plaintext: string): Promise<Session | null>;
|
|
18
19
|
/** Revoke a single session by cookie plaintext. No-op when the cookie does
|
|
19
|
-
* not match any row. */
|
|
20
|
+
* not match any row. The plaintext is the credential, so no scope is needed. */
|
|
20
21
|
export declare function revokeSession(db: Database["db"], plaintext: string): Promise<boolean>;
|
|
21
|
-
/**
|
|
22
|
-
* table doesn't bloat over months. */
|
|
22
|
+
/** Daemon-level maintenance across all workspaces: deletes expired rows so
|
|
23
|
+
* the table doesn't bloat over months. */
|
|
23
24
|
export declare function pruneExpiredSessions(db: Database["db"]): Promise<number>;
|
|
24
|
-
/** Drizzle helper to noop a linter complaint when sql is unused. */
|
|
25
|
-
export declare const _sql: typeof sql;
|
package/dist/service/sessions.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createHash, randomBytes, timingSafeEqual } from "node:crypto";
|
|
2
|
-
import { and, eq, gt, lt
|
|
2
|
+
import { and, eq, gt, lt } from "drizzle-orm";
|
|
3
3
|
import { sessions } from "../db/schema.js";
|
|
4
4
|
const DEFAULT_TTL_DAYS = 30;
|
|
5
5
|
function hashToken(plaintext) {
|
|
@@ -30,7 +30,7 @@ export function verifyMasterPassword(candidate) {
|
|
|
30
30
|
return false;
|
|
31
31
|
return constantTimeEqual(candidate, expected);
|
|
32
32
|
}
|
|
33
|
-
export async function createSession(db, opts = {}) {
|
|
33
|
+
export async function createSession(scope, db, opts = {}) {
|
|
34
34
|
const ttlDays = opts.ttlDays ?? DEFAULT_TTL_DAYS;
|
|
35
35
|
const plaintext = randomBytes(32).toString("hex");
|
|
36
36
|
const tokenHash = hashToken(plaintext);
|
|
@@ -38,6 +38,7 @@ export async function createSession(db, opts = {}) {
|
|
|
38
38
|
const [row] = await db
|
|
39
39
|
.insert(sessions)
|
|
40
40
|
.values({
|
|
41
|
+
workspaceId: scope.workspaceId,
|
|
41
42
|
tokenHash,
|
|
42
43
|
expiresAt,
|
|
43
44
|
userAgent: opts.userAgent ?? null
|
|
@@ -46,7 +47,8 @@ export async function createSession(db, opts = {}) {
|
|
|
46
47
|
return { session: row, plaintext };
|
|
47
48
|
}
|
|
48
49
|
/** Look up a session by cookie plaintext. Returns the row if it exists and
|
|
49
|
-
* has not expired; otherwise null. Bumps last_used_at on hit.
|
|
50
|
+
* has not expired; otherwise null. Bumps last_used_at on hit. Unscoped by
|
|
51
|
+
* design: the row's workspaceId becomes the request Scope. */
|
|
50
52
|
export async function consumeSession(db, plaintext) {
|
|
51
53
|
if (typeof plaintext !== "string" || plaintext.length === 0)
|
|
52
54
|
return null;
|
|
@@ -66,7 +68,7 @@ export async function consumeSession(db, plaintext) {
|
|
|
66
68
|
return row;
|
|
67
69
|
}
|
|
68
70
|
/** Revoke a single session by cookie plaintext. No-op when the cookie does
|
|
69
|
-
* not match any row. */
|
|
71
|
+
* not match any row. The plaintext is the credential, so no scope is needed. */
|
|
70
72
|
export async function revokeSession(db, plaintext) {
|
|
71
73
|
if (typeof plaintext !== "string" || plaintext.length === 0)
|
|
72
74
|
return false;
|
|
@@ -77,13 +79,11 @@ export async function revokeSession(db, plaintext) {
|
|
|
77
79
|
const r = result;
|
|
78
80
|
return r.rowCount === undefined ? true : r.rowCount > 0;
|
|
79
81
|
}
|
|
80
|
-
/**
|
|
81
|
-
* table doesn't bloat over months. */
|
|
82
|
+
/** Daemon-level maintenance across all workspaces: deletes expired rows so
|
|
83
|
+
* the table doesn't bloat over months. */
|
|
82
84
|
export async function pruneExpiredSessions(db) {
|
|
83
85
|
const result = await db.delete(sessions).where(lt(sessions.expiresAt, new Date()));
|
|
84
86
|
const r = result;
|
|
85
87
|
return r.rowCount ?? 0;
|
|
86
88
|
}
|
|
87
|
-
/** Drizzle helper to noop a linter complaint when sql is unused. */
|
|
88
|
-
export const _sql = sql;
|
|
89
89
|
//# sourceMappingURL=sessions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../src/service/sessions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../src/service/sessions.ts"],"names":[],"mappings":"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"}
|
package/dist/service/tasks.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Database } from "../db/client.js";
|
|
2
2
|
import { type Entity } from "../db/schema.js";
|
|
3
|
+
import type { Scope } from "./scope.js";
|
|
3
4
|
import type { TasksRangeInput } from "./types.js";
|
|
4
5
|
export interface VirtualOccurrence {
|
|
5
6
|
virtual: true;
|
|
@@ -35,4 +36,4 @@ export interface TasksRangeResult {
|
|
|
35
36
|
* when no range start is supplied), so a task scheduled inside the active day
|
|
36
37
|
* cannot also appear in the overdue alert.
|
|
37
38
|
*/
|
|
38
|
-
export declare function tasksRange(db: Database["db"], input: TasksRangeInput): Promise<TasksRangeResult>;
|
|
39
|
+
export declare function tasksRange(scope: Scope, db: Database["db"], input: TasksRangeInput): Promise<TasksRangeResult>;
|
package/dist/service/tasks.js
CHANGED
|
@@ -29,16 +29,18 @@ function materializationHorizon(input, now) {
|
|
|
29
29
|
* when no range start is supplied), so a task scheduled inside the active day
|
|
30
30
|
* cannot also appear in the overdue alert.
|
|
31
31
|
*/
|
|
32
|
-
export async function tasksRange(db, input) {
|
|
32
|
+
export async function tasksRange(scope, db, input) {
|
|
33
33
|
const now = new Date();
|
|
34
34
|
await materializeScheduledRecurrences(db, materializationHorizon(input, now));
|
|
35
|
+
const inWorkspace = eq(entities.workspaceId, scope.workspaceId);
|
|
35
36
|
const projectFilter = input.projectIds?.length
|
|
36
37
|
? inArray(entities.projectId, input.projectIds)
|
|
37
38
|
: undefined;
|
|
38
39
|
const activeProjectFilter = projectFilter
|
|
39
40
|
? undefined
|
|
40
41
|
: sql `(${entities.projectId} IS NULL OR ${entities.projectId} IN (
|
|
41
|
-
SELECT id FROM projects
|
|
42
|
+
SELECT id FROM projects
|
|
43
|
+
WHERE status <> 'archived' AND workspace_id = ${scope.workspaceId}::uuid
|
|
42
44
|
))`;
|
|
43
45
|
const notStatus = (status) => or(ne(entities.status, status), isNull(entities.status));
|
|
44
46
|
// Base filter applied to every bucket: only tasks, optional project filter,
|
|
@@ -46,6 +48,7 @@ export async function tasksRange(db, input) {
|
|
|
46
48
|
// includeDone means "show completion history", not "show abandoned work",
|
|
47
49
|
// and a cancelled task with a leftover dueAt is not scheduled for anything.
|
|
48
50
|
const baseConds = [
|
|
51
|
+
inWorkspace,
|
|
49
52
|
eq(entities.kind, "task"),
|
|
50
53
|
isNull(entities.deletedAt),
|
|
51
54
|
notStatus("rejected"),
|
|
@@ -87,6 +90,7 @@ export async function tasksRange(db, input) {
|
|
|
87
90
|
let doneByCompleted = [];
|
|
88
91
|
if (input.includeDone) {
|
|
89
92
|
const doneByCompletedConds = [
|
|
93
|
+
inWorkspace,
|
|
90
94
|
eq(entities.kind, "task"),
|
|
91
95
|
isNull(entities.deletedAt),
|
|
92
96
|
eq(entities.status, "done"),
|
|
@@ -103,6 +107,7 @@ export async function tasksRange(db, input) {
|
|
|
103
107
|
.where(and(...doneByCompletedConds))
|
|
104
108
|
.orderBy(asc(entities.completedAt));
|
|
105
109
|
const legacyDoneConds = [
|
|
110
|
+
inWorkspace,
|
|
106
111
|
eq(entities.kind, "task"),
|
|
107
112
|
isNull(entities.deletedAt),
|
|
108
113
|
eq(entities.status, "done"),
|
|
@@ -127,6 +132,7 @@ export async function tasksRange(db, input) {
|
|
|
127
132
|
(!input.to || now < new Date(input.to));
|
|
128
133
|
if (todayInRange) {
|
|
129
134
|
const ipConds = [
|
|
135
|
+
inWorkspace,
|
|
130
136
|
eq(entities.kind, "task"),
|
|
131
137
|
isNull(entities.deletedAt),
|
|
132
138
|
eq(entities.status, "in_progress")
|
|
@@ -156,6 +162,7 @@ export async function tasksRange(db, input) {
|
|
|
156
162
|
// later in the same day.
|
|
157
163
|
const overdueCutoff = input.from ?? now;
|
|
158
164
|
const overdueConds = [
|
|
165
|
+
inWorkspace,
|
|
159
166
|
eq(entities.kind, "task"),
|
|
160
167
|
isNull(entities.deletedAt),
|
|
161
168
|
isNotNull(entities.dueAt),
|
|
@@ -183,7 +190,7 @@ export async function tasksRange(db, input) {
|
|
|
183
190
|
.orderBy(desc(entities.createdAt))
|
|
184
191
|
.limit(200);
|
|
185
192
|
}
|
|
186
|
-
const virtualOccurrences = await expandVirtualOccurrences(db, input, scheduled);
|
|
193
|
+
const virtualOccurrences = await expandVirtualOccurrences(scope, db, input, scheduled);
|
|
187
194
|
return { scheduled, overdue, backlog, virtualOccurrences };
|
|
188
195
|
}
|
|
189
196
|
/**
|
|
@@ -195,7 +202,7 @@ export async function tasksRange(db, input) {
|
|
|
195
202
|
* The window is clamped to [max(input.from, now), input.to) so only strictly
|
|
196
203
|
* future ghosts are returned.
|
|
197
204
|
*/
|
|
198
|
-
async function expandVirtualOccurrences(db, input, realScheduled) {
|
|
205
|
+
async function expandVirtualOccurrences(scope, db, input, realScheduled) {
|
|
199
206
|
// Guard: feature must be explicitly requested and a horizon must be present.
|
|
200
207
|
if (!input.includeVirtualRecurrences || !input.to)
|
|
201
208
|
return [];
|
|
@@ -208,7 +215,7 @@ async function expandVirtualOccurrences(db, input, realScheduled) {
|
|
|
208
215
|
const candidateRules = await db
|
|
209
216
|
.select()
|
|
210
217
|
.from(recurrenceRules)
|
|
211
|
-
.where(and(eq(recurrenceRules.enabled, true), eq(recurrenceRules.anchor, "scheduled"), lte(recurrenceRules.dtstart, windowEnd), or(isNull(recurrenceRules.endedAt),
|
|
218
|
+
.where(and(eq(recurrenceRules.workspaceId, scope.workspaceId), eq(recurrenceRules.enabled, true), eq(recurrenceRules.anchor, "scheduled"), lte(recurrenceRules.dtstart, windowEnd), or(isNull(recurrenceRules.endedAt),
|
|
212
219
|
// endedAt >= windowStart means rule may still have occurrences in window
|
|
213
220
|
gte(recurrenceRules.endedAt, windowStart))));
|
|
214
221
|
if (candidateRules.length === 0)
|
|
@@ -220,7 +227,7 @@ async function expandVirtualOccurrences(db, input, realScheduled) {
|
|
|
220
227
|
const displaySourceRows = await db
|
|
221
228
|
.select()
|
|
222
229
|
.from(entities)
|
|
223
|
-
.where(inArray(entities.id, uniqueDisplaySourceIds));
|
|
230
|
+
.where(and(eq(entities.workspaceId, scope.workspaceId), inArray(entities.id, uniqueDisplaySourceIds)));
|
|
224
231
|
const displaySourceById = new Map(displaySourceRows.map((e) => [e.id, e]));
|
|
225
232
|
// --- Query 3: batch-fetch this-only baselines for display sources ---
|
|
226
233
|
// These are 'modified' exceptions where the baseline records what the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../src/service/tasks.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../src/service/tasks.ts"],"names":[],"mappings":"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"}
|
package/dist/service/tokens.d.ts
CHANGED
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
import type { Database } from "../db/client.js";
|
|
2
2
|
import { type Token } from "../db/schema.js";
|
|
3
|
+
import type { Scope } from "./scope.js";
|
|
3
4
|
export interface CreatedToken {
|
|
4
5
|
token: Token;
|
|
5
6
|
/** The recoverable plaintext token. NULL only for tokens created before 0014. */
|
|
6
7
|
plaintext: string;
|
|
7
8
|
}
|
|
8
|
-
export declare function createToken(db: Database["db"], input: {
|
|
9
|
+
export declare function createToken(scope: Scope, db: Database["db"], input: {
|
|
9
10
|
name: string;
|
|
10
11
|
}): Promise<CreatedToken>;
|
|
11
|
-
export declare function listTokens(db: Database["db"]): Promise<Token[]>;
|
|
12
|
-
export declare function revokeToken(db: Database["db"], id: string): Promise<boolean>;
|
|
12
|
+
export declare function listTokens(scope: Scope, db: Database["db"]): Promise<Token[]>;
|
|
13
|
+
export declare function revokeToken(scope: Scope, db: Database["db"], id: string): Promise<boolean>;
|
|
13
14
|
/**
|
|
14
|
-
* Look up a token by its plaintext. Returns null if not found.
|
|
15
|
-
*
|
|
16
|
-
*
|
|
15
|
+
* Look up a token by its plaintext. Returns null if not found. Bumps
|
|
16
|
+
* last_used_at on success. Unscoped by design: the returned row's workspaceId
|
|
17
|
+
* is what the transport turns into the request Scope.
|
|
17
18
|
*/
|
|
18
19
|
export declare function consumeToken(db: Database["db"], plaintext: string): Promise<Token | null>;
|
package/dist/service/tokens.js
CHANGED
|
@@ -1,33 +1,40 @@
|
|
|
1
1
|
import { createHash, randomBytes } from "node:crypto";
|
|
2
|
-
import { desc, eq } from "drizzle-orm";
|
|
2
|
+
import { and, desc, eq } from "drizzle-orm";
|
|
3
3
|
import { tokens } from "../db/schema.js";
|
|
4
4
|
const TOKEN_PREFIX = "bn_";
|
|
5
5
|
function sha256(input) {
|
|
6
6
|
return createHash("sha256").update(input).digest("hex");
|
|
7
7
|
}
|
|
8
|
-
export async function createToken(db, input) {
|
|
8
|
+
export async function createToken(scope, db, input) {
|
|
9
9
|
const plaintext = `${TOKEN_PREFIX}${randomBytes(24).toString("hex")}`;
|
|
10
10
|
const tokenHash = sha256(plaintext);
|
|
11
11
|
const prefix = plaintext.slice(0, 11); // bn_ + first 8 hex
|
|
12
12
|
const [row] = await db
|
|
13
13
|
.insert(tokens)
|
|
14
|
-
.values({ name: input.name, tokenHash, prefix, plaintext })
|
|
14
|
+
.values({ workspaceId: scope.workspaceId, name: input.name, tokenHash, prefix, plaintext })
|
|
15
15
|
.returning();
|
|
16
16
|
if (!row)
|
|
17
17
|
throw new Error("token insert returned no row");
|
|
18
18
|
return { token: row, plaintext };
|
|
19
19
|
}
|
|
20
|
-
export async function listTokens(db) {
|
|
21
|
-
return db
|
|
20
|
+
export async function listTokens(scope, db) {
|
|
21
|
+
return db
|
|
22
|
+
.select()
|
|
23
|
+
.from(tokens)
|
|
24
|
+
.where(eq(tokens.workspaceId, scope.workspaceId))
|
|
25
|
+
.orderBy(desc(tokens.createdAt));
|
|
22
26
|
}
|
|
23
|
-
export async function revokeToken(db, id) {
|
|
24
|
-
const res = await db
|
|
27
|
+
export async function revokeToken(scope, db, id) {
|
|
28
|
+
const res = await db
|
|
29
|
+
.delete(tokens)
|
|
30
|
+
.where(and(eq(tokens.id, id), eq(tokens.workspaceId, scope.workspaceId)))
|
|
31
|
+
.returning({ id: tokens.id });
|
|
25
32
|
return res.length > 0;
|
|
26
33
|
}
|
|
27
34
|
/**
|
|
28
|
-
* Look up a token by its plaintext. Returns null if not found.
|
|
29
|
-
*
|
|
30
|
-
*
|
|
35
|
+
* Look up a token by its plaintext. Returns null if not found. Bumps
|
|
36
|
+
* last_used_at on success. Unscoped by design: the returned row's workspaceId
|
|
37
|
+
* is what the transport turns into the request Scope.
|
|
31
38
|
*/
|
|
32
39
|
export async function consumeToken(db, plaintext) {
|
|
33
40
|
const tokenHash = sha256(plaintext);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/service/tokens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/service/tokens.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import type { Database } from "../db/client.js";
|
|
2
2
|
import { type WorkspaceSettings } from "../db/schema.js";
|
|
3
|
+
import type { Scope } from "./scope.js";
|
|
3
4
|
import type { UpdateWorkspaceSettingsInput } from "./types.js";
|
|
4
5
|
export declare const WORKSPACE_SETTINGS_ID = "default";
|
|
5
6
|
export declare const DEFAULT_WORKSPACE_TIMEZONE = "UTC";
|
|
6
7
|
export declare function isValidTimezone(tz: string): boolean;
|
|
7
|
-
export declare function getWorkspaceSettings(db: Database["db"]): Promise<WorkspaceSettings>;
|
|
8
|
-
export declare function updateWorkspaceSettings(db: Database["db"], input: UpdateWorkspaceSettingsInput): Promise<WorkspaceSettings>;
|
|
8
|
+
export declare function getWorkspaceSettings(scope: Scope, db: Database["db"]): Promise<WorkspaceSettings>;
|
|
9
|
+
export declare function updateWorkspaceSettings(scope: Scope, db: Database["db"], input: UpdateWorkspaceSettingsInput): Promise<WorkspaceSettings>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { eq } from "drizzle-orm";
|
|
1
|
+
import { and, eq } from "drizzle-orm";
|
|
2
2
|
import { workspaceSettings } from "../db/schema.js";
|
|
3
3
|
export const WORKSPACE_SETTINGS_ID = "default";
|
|
4
4
|
export const DEFAULT_WORKSPACE_TIMEZONE = "UTC";
|
|
@@ -11,32 +11,28 @@ export function isValidTimezone(tz) {
|
|
|
11
11
|
return false;
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
.limit(1);
|
|
14
|
+
function rowFilter(scope) {
|
|
15
|
+
return and(eq(workspaceSettings.id, WORKSPACE_SETTINGS_ID), eq(workspaceSettings.workspaceId, scope.workspaceId));
|
|
16
|
+
}
|
|
17
|
+
export async function getWorkspaceSettings(scope, db) {
|
|
18
|
+
const [existing] = await db.select().from(workspaceSettings).where(rowFilter(scope)).limit(1);
|
|
20
19
|
if (existing)
|
|
21
20
|
return existing;
|
|
22
21
|
await db
|
|
23
22
|
.insert(workspaceSettings)
|
|
24
23
|
.values({
|
|
25
24
|
id: WORKSPACE_SETTINGS_ID,
|
|
25
|
+
workspaceId: scope.workspaceId,
|
|
26
26
|
timezone: DEFAULT_WORKSPACE_TIMEZONE
|
|
27
27
|
})
|
|
28
28
|
.onConflictDoNothing();
|
|
29
|
-
const [created] = await db
|
|
30
|
-
.select()
|
|
31
|
-
.from(workspaceSettings)
|
|
32
|
-
.where(eq(workspaceSettings.id, WORKSPACE_SETTINGS_ID))
|
|
33
|
-
.limit(1);
|
|
29
|
+
const [created] = await db.select().from(workspaceSettings).where(rowFilter(scope)).limit(1);
|
|
34
30
|
if (!created)
|
|
35
31
|
throw new Error("workspace settings row missing after insert");
|
|
36
32
|
return created;
|
|
37
33
|
}
|
|
38
|
-
export async function updateWorkspaceSettings(db, input) {
|
|
39
|
-
const current = await getWorkspaceSettings(db);
|
|
34
|
+
export async function updateWorkspaceSettings(scope, db, input) {
|
|
35
|
+
const current = await getWorkspaceSettings(scope, db);
|
|
40
36
|
const timezone = input.timezone ?? current.timezone;
|
|
41
37
|
if (input.timezone !== undefined && !isValidTimezone(input.timezone)) {
|
|
42
38
|
throw new Error(`Invalid IANA timezone: "${input.timezone}"`);
|
|
@@ -44,7 +40,7 @@ export async function updateWorkspaceSettings(db, input) {
|
|
|
44
40
|
const [updated] = await db
|
|
45
41
|
.update(workspaceSettings)
|
|
46
42
|
.set({ timezone })
|
|
47
|
-
.where(
|
|
43
|
+
.where(rowFilter(scope))
|
|
48
44
|
.returning();
|
|
49
45
|
if (!updated)
|
|
50
46
|
throw new Error("workspace settings update returned no row");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace_settings.js","sourceRoot":"","sources":["../../src/service/workspace_settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"workspace_settings.js","sourceRoot":"","sources":["../../src/service/workspace_settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAEtC,OAAO,EAAE,iBAAiB,EAA0B,MAAM,iBAAiB,CAAC;AAI5E,MAAM,CAAC,MAAM,qBAAqB,GAAG,SAAS,CAAC;AAC/C,MAAM,CAAC,MAAM,0BAA0B,GAAG,KAAK,CAAC;AAEhD,MAAM,UAAU,eAAe,CAAC,EAAU;IACxC,IAAI,CAAC;QACH,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,KAAY;IAC7B,OAAO,GAAG,CACR,EAAE,CAAC,iBAAiB,CAAC,EAAE,EAAE,qBAAqB,CAAC,EAC/C,EAAE,CAAC,iBAAiB,CAAC,WAAW,EAAE,KAAK,CAAC,WAAW,CAAC,CACrD,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,KAAY,EACZ,EAAkB;IAElB,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC9F,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAE9B,MAAM,EAAE;SACL,MAAM,CAAC,iBAAiB,CAAC;SACzB,MAAM,CAAC;QACN,EAAE,EAAE,qBAAqB;QACzB,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,QAAQ,EAAE,0BAA0B;KACrC,CAAC;SACD,mBAAmB,EAAE,CAAC;IAEzB,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC7F,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IAC7E,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,KAAY,EACZ,EAAkB,EAClB,KAAmC;IAEnC,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAEtD,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC;IACpD,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrE,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,EAAE;SACvB,MAAM,CAAC,iBAAiB,CAAC;SACzB,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC;SACjB,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;SACvB,SAAS,EAAE,CAAC;IACf,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC3E,OAAO,OAAO,CAAC;AACjB,CAAC"}
|