@uasyraf/helm 0.1.2 → 0.1.3
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/dashboard/build/client/_app/immutable/assets/0.C_U6EcGX.css +1 -0
- package/dashboard/build/client/_app/immutable/assets/0.C_U6EcGX.css.br +0 -0
- package/dashboard/build/client/_app/immutable/assets/0.C_U6EcGX.css.gz +0 -0
- package/dashboard/build/client/_app/immutable/chunks/9-QirXaE.js +1 -0
- package/dashboard/build/client/_app/immutable/chunks/9-QirXaE.js.br +0 -0
- package/dashboard/build/client/_app/immutable/chunks/9-QirXaE.js.gz +0 -0
- package/dashboard/build/client/_app/immutable/chunks/BO5y_GWf.js +1 -0
- package/dashboard/build/client/_app/immutable/chunks/BO5y_GWf.js.br +0 -0
- package/dashboard/build/client/_app/immutable/chunks/BO5y_GWf.js.gz +0 -0
- package/dashboard/build/client/_app/immutable/chunks/BPuAFY6p.js +1 -0
- package/dashboard/build/client/_app/immutable/chunks/BPuAFY6p.js.br +0 -0
- package/dashboard/build/client/_app/immutable/chunks/BPuAFY6p.js.gz +0 -0
- package/dashboard/build/client/_app/immutable/chunks/BVbhX7IV.js +2 -0
- package/dashboard/build/client/_app/immutable/chunks/BVbhX7IV.js.br +0 -0
- package/dashboard/build/client/_app/immutable/chunks/BVbhX7IV.js.gz +0 -0
- package/dashboard/build/client/_app/immutable/chunks/C2WLVwTD.js +3 -0
- package/dashboard/build/client/_app/immutable/chunks/C2WLVwTD.js.br +0 -0
- package/dashboard/build/client/_app/immutable/chunks/C2WLVwTD.js.gz +0 -0
- package/dashboard/build/client/_app/immutable/chunks/C7hYKz2M.js +1 -0
- package/dashboard/build/client/_app/immutable/chunks/C7hYKz2M.js.br +0 -0
- package/dashboard/build/client/_app/immutable/chunks/C7hYKz2M.js.gz +0 -0
- package/dashboard/build/client/_app/immutable/chunks/{DYkFpqG7.js → Crvlw6v6.js} +1 -1
- package/dashboard/build/client/_app/immutable/chunks/Crvlw6v6.js.br +0 -0
- package/dashboard/build/client/_app/immutable/chunks/Crvlw6v6.js.gz +0 -0
- package/dashboard/build/client/_app/immutable/chunks/Cw9Pdt2b.js +1 -0
- package/dashboard/build/client/_app/immutable/chunks/Cw9Pdt2b.js.br +0 -0
- package/dashboard/build/client/_app/immutable/chunks/Cw9Pdt2b.js.gz +0 -0
- package/dashboard/build/client/_app/immutable/chunks/DM7ZjyFs.js +1 -0
- package/dashboard/build/client/_app/immutable/chunks/DM7ZjyFs.js.br +0 -0
- package/dashboard/build/client/_app/immutable/chunks/DM7ZjyFs.js.gz +0 -0
- package/dashboard/build/client/_app/immutable/chunks/{bJX5vhEj.js → DXH1e0MC.js} +1 -1
- package/dashboard/build/client/_app/immutable/chunks/DXH1e0MC.js.br +0 -0
- package/dashboard/build/client/_app/immutable/chunks/DXH1e0MC.js.gz +0 -0
- package/dashboard/build/client/_app/immutable/chunks/i4nhiUnk.js +1 -0
- package/dashboard/build/client/_app/immutable/chunks/i4nhiUnk.js.br +0 -0
- package/dashboard/build/client/_app/immutable/chunks/i4nhiUnk.js.gz +0 -0
- package/dashboard/build/client/_app/immutable/entry/app.Dy41QFU8.js +2 -0
- package/dashboard/build/client/_app/immutable/entry/app.Dy41QFU8.js.br +0 -0
- package/dashboard/build/client/_app/immutable/entry/app.Dy41QFU8.js.gz +0 -0
- package/dashboard/build/client/_app/immutable/entry/start.BcPFfpW6.js +1 -0
- package/dashboard/build/client/_app/immutable/entry/start.BcPFfpW6.js.br +2 -0
- package/dashboard/build/client/_app/immutable/entry/start.BcPFfpW6.js.gz +0 -0
- package/dashboard/build/client/_app/immutable/nodes/0.gT1IrBAt.js +1 -0
- package/dashboard/build/client/_app/immutable/nodes/0.gT1IrBAt.js.br +0 -0
- package/dashboard/build/client/_app/immutable/nodes/0.gT1IrBAt.js.gz +0 -0
- package/dashboard/build/client/_app/immutable/nodes/1.C1pxwGz8.js +1 -0
- package/dashboard/build/client/_app/immutable/nodes/1.C1pxwGz8.js.br +0 -0
- package/dashboard/build/client/_app/immutable/nodes/1.C1pxwGz8.js.gz +0 -0
- package/dashboard/build/client/_app/immutable/nodes/2.PAkYASQF.js +1 -0
- package/dashboard/build/client/_app/immutable/nodes/2.PAkYASQF.js.br +0 -0
- package/dashboard/build/client/_app/immutable/nodes/2.PAkYASQF.js.gz +0 -0
- package/dashboard/build/client/_app/immutable/nodes/3.qPGHwS98.js +1 -0
- package/dashboard/build/client/_app/immutable/nodes/3.qPGHwS98.js.br +0 -0
- package/dashboard/build/client/_app/immutable/nodes/3.qPGHwS98.js.gz +0 -0
- package/dashboard/build/client/_app/immutable/nodes/4.BY3c2oP3.js +1 -0
- package/dashboard/build/client/_app/immutable/nodes/4.BY3c2oP3.js.br +0 -0
- package/dashboard/build/client/_app/immutable/nodes/4.BY3c2oP3.js.gz +0 -0
- package/dashboard/build/client/_app/immutable/nodes/5.BJmkMCzP.js +1 -0
- package/dashboard/build/client/_app/immutable/nodes/5.BJmkMCzP.js.br +0 -0
- package/dashboard/build/client/_app/immutable/nodes/5.BJmkMCzP.js.gz +0 -0
- package/dashboard/build/client/_app/immutable/nodes/6.BQBCuyRo.js +1 -0
- package/dashboard/build/client/_app/immutable/nodes/6.BQBCuyRo.js.br +0 -0
- package/dashboard/build/client/_app/immutable/nodes/6.BQBCuyRo.js.gz +0 -0
- package/dashboard/build/client/_app/immutable/nodes/7.CGn9hdJ7.js +1 -0
- package/dashboard/build/client/_app/immutable/nodes/7.CGn9hdJ7.js.br +0 -0
- package/dashboard/build/client/_app/immutable/nodes/7.CGn9hdJ7.js.gz +0 -0
- package/dashboard/build/client/_app/immutable/nodes/8.CbXx0M8r.js +1 -0
- package/dashboard/build/client/_app/immutable/nodes/8.CbXx0M8r.js.br +0 -0
- package/dashboard/build/client/_app/immutable/nodes/8.CbXx0M8r.js.gz +0 -0
- package/dashboard/build/client/_app/version.json +1 -1
- package/dashboard/build/client/_app/version.json.br +0 -0
- package/dashboard/build/client/_app/version.json.gz +0 -0
- package/dashboard/build/server/chunks/0-CuCI8vso.js +33 -0
- package/dashboard/build/server/chunks/0-CuCI8vso.js.map +1 -0
- package/dashboard/build/server/chunks/1-BRujd2KF.js +9 -0
- package/dashboard/build/server/chunks/{1-BDkdOGL6.js.map → 1-BRujd2KF.js.map} +1 -1
- package/dashboard/build/server/chunks/2-CdivLqAU.js +36 -0
- package/dashboard/build/server/chunks/2-CdivLqAU.js.map +1 -0
- package/dashboard/build/server/chunks/3-D2TMWb8-.js +41 -0
- package/dashboard/build/server/chunks/3-D2TMWb8-.js.map +1 -0
- package/dashboard/build/server/chunks/{2-BLt1vNET.js → 4-CATS6czN.js} +17 -13
- package/dashboard/build/server/chunks/4-CATS6czN.js.map +1 -0
- package/dashboard/build/server/chunks/5-DmUG37hB.js +45 -0
- package/dashboard/build/server/chunks/5-DmUG37hB.js.map +1 -0
- package/dashboard/build/server/chunks/6--04CRhxN.js +43 -0
- package/dashboard/build/server/chunks/6--04CRhxN.js.map +1 -0
- package/dashboard/build/server/chunks/7--ahyXjMz.js +34 -0
- package/dashboard/build/server/chunks/7--ahyXjMz.js.map +1 -0
- package/dashboard/build/server/chunks/8-B8pO7UFU.js +56 -0
- package/dashboard/build/server/chunks/8-B8pO7UFU.js.map +1 -0
- package/dashboard/build/server/chunks/_layout.svelte-gEHTl1KG.js +36 -0
- package/dashboard/build/server/chunks/_layout.svelte-gEHTl1KG.js.map +1 -0
- package/dashboard/build/server/chunks/_layout.svelte-vH4YFBaG.js +45 -0
- package/dashboard/build/server/chunks/_layout.svelte-vH4YFBaG.js.map +1 -0
- package/dashboard/build/server/chunks/_page.svelte-2co8EQvy.js +25 -0
- package/dashboard/build/server/chunks/_page.svelte-2co8EQvy.js.map +1 -0
- package/dashboard/build/server/chunks/{_page.svelte-C_NO0kPy.js → _page.svelte-BF5kOI2R.js} +2 -2
- package/dashboard/build/server/chunks/_page.svelte-BF5kOI2R.js.map +1 -0
- package/dashboard/build/server/chunks/_page.svelte-BGS-bwra.js.map +1 -1
- package/dashboard/build/server/chunks/_page.svelte-BiRjdIbl.js.map +1 -1
- package/dashboard/build/server/chunks/_page.svelte-DvSQBjcA.js.map +1 -1
- package/dashboard/build/server/chunks/_page.svelte-ZUq8J-ew.js.map +1 -1
- package/dashboard/build/server/chunks/db-GHaWnz-k.js +806 -0
- package/dashboard/build/server/chunks/db-GHaWnz-k.js.map +1 -0
- package/dashboard/build/server/chunks/{error.svelte-DJ3O9Tia.js → error.svelte-B8bxgmvK.js} +3 -3
- package/dashboard/build/server/chunks/{error.svelte-DJ3O9Tia.js.map → error.svelte-B8bxgmvK.js.map} +1 -1
- package/dashboard/build/server/chunks/{exports-BnaAAAnL.js → exports-CzH4-eZs.js} +41 -9
- package/dashboard/build/server/chunks/exports-CzH4-eZs.js.map +1 -0
- package/dashboard/build/server/chunks/{index-DwR_KaNY.js → index-CfWSWN1f.js} +8 -3
- package/dashboard/build/server/chunks/index-CfWSWN1f.js.map +1 -0
- package/dashboard/build/server/chunks/{index-lhTMmBNn.js → index-NcxaM188.js} +31 -2
- package/dashboard/build/server/chunks/{index-lhTMmBNn.js.map → index-NcxaM188.js.map} +1 -1
- package/dashboard/build/server/chunks/queries-OsSUm9xY.js +58 -0
- package/dashboard/build/server/chunks/queries-OsSUm9xY.js.map +1 -0
- package/dashboard/build/server/index.js +3 -3
- package/dashboard/build/server/index.js.map +1 -1
- package/dashboard/build/server/manifest.js +34 -25
- package/dashboard/build/server/manifest.js.map +1 -1
- package/dist/bin/helm.js +20 -1
- package/dist/bin/helm.js.map +1 -1
- package/dist/server/src/db/bootstrap.js +19 -0
- package/dist/server/src/db/bootstrap.js.map +1 -1
- package/dist/server/src/db/open-repo.js +2 -2
- package/dist/server/src/db/open-repo.js.map +1 -1
- package/dist/server/src/db/pg-bootstrap.js +14 -0
- package/dist/server/src/db/pg-bootstrap.js.map +1 -1
- package/dist/server/src/db/repo-pg.js +6 -2
- package/dist/server/src/db/repo-pg.js.map +1 -1
- package/dist/server/src/db/repo-sqlite.js +5 -2
- package/dist/server/src/db/repo-sqlite.js.map +1 -1
- package/dist/server/src/db/repo.d.ts +1 -0
- package/dist/server/src/db/schema-pg.d.ts +34 -0
- package/dist/server/src/db/schema-pg.js +1 -0
- package/dist/server/src/db/schema-pg.js.map +1 -1
- package/dist/server/src/db/schema.d.ts +34 -0
- package/dist/server/src/db/schema.js +1 -0
- package/dist/server/src/db/schema.js.map +1 -1
- package/dist/server/src/install.js +6 -7
- package/dist/server/src/install.js.map +1 -1
- package/dist/server/src/migrate.d.ts +13 -0
- package/dist/server/src/migrate.js +99 -0
- package/dist/server/src/migrate.js.map +1 -0
- package/dist/server/src/tools/story.js +1 -0
- package/dist/server/src/tools/story.js.map +1 -1
- package/dist/server/src/util/paths.d.ts +2 -1
- package/dist/server/src/util/paths.js +4 -1
- package/dist/server/src/util/paths.js.map +1 -1
- package/hooks/hooks.json +0 -5
- package/package.json +1 -1
- package/dashboard/build/client/_app/immutable/assets/0.DPthOi2j.css +0 -1
- package/dashboard/build/client/_app/immutable/assets/0.DPthOi2j.css.br +0 -0
- package/dashboard/build/client/_app/immutable/assets/0.DPthOi2j.css.gz +0 -0
- package/dashboard/build/client/_app/immutable/chunks/B3NJzl7g.js +0 -1
- package/dashboard/build/client/_app/immutable/chunks/B3NJzl7g.js.br +0 -0
- package/dashboard/build/client/_app/immutable/chunks/B3NJzl7g.js.gz +0 -0
- package/dashboard/build/client/_app/immutable/chunks/Bvgn0Gys.js +0 -1
- package/dashboard/build/client/_app/immutable/chunks/Bvgn0Gys.js.br +0 -0
- package/dashboard/build/client/_app/immutable/chunks/Bvgn0Gys.js.gz +0 -0
- package/dashboard/build/client/_app/immutable/chunks/C72aErMY.js +0 -3
- package/dashboard/build/client/_app/immutable/chunks/C72aErMY.js.br +0 -0
- package/dashboard/build/client/_app/immutable/chunks/C72aErMY.js.gz +0 -0
- package/dashboard/build/client/_app/immutable/chunks/CjpPs8iz.js +0 -1
- package/dashboard/build/client/_app/immutable/chunks/CjpPs8iz.js.br +0 -0
- package/dashboard/build/client/_app/immutable/chunks/CjpPs8iz.js.gz +0 -0
- package/dashboard/build/client/_app/immutable/chunks/DNLp8810.js +0 -1
- package/dashboard/build/client/_app/immutable/chunks/DNLp8810.js.br +0 -0
- package/dashboard/build/client/_app/immutable/chunks/DNLp8810.js.gz +0 -0
- package/dashboard/build/client/_app/immutable/chunks/DYkFpqG7.js.br +0 -0
- package/dashboard/build/client/_app/immutable/chunks/DYkFpqG7.js.gz +0 -0
- package/dashboard/build/client/_app/immutable/chunks/DsiL0ppy.js +0 -2
- package/dashboard/build/client/_app/immutable/chunks/DsiL0ppy.js.br +0 -0
- package/dashboard/build/client/_app/immutable/chunks/DsiL0ppy.js.gz +0 -0
- package/dashboard/build/client/_app/immutable/chunks/bJX5vhEj.js.br +0 -0
- package/dashboard/build/client/_app/immutable/chunks/bJX5vhEj.js.gz +0 -0
- package/dashboard/build/client/_app/immutable/chunks/gQDp4_Ul.js +0 -1
- package/dashboard/build/client/_app/immutable/chunks/gQDp4_Ul.js.br +0 -0
- package/dashboard/build/client/_app/immutable/chunks/gQDp4_Ul.js.gz +0 -0
- package/dashboard/build/client/_app/immutable/entry/app.D4j9hUjJ.js +0 -2
- package/dashboard/build/client/_app/immutable/entry/app.D4j9hUjJ.js.br +0 -0
- package/dashboard/build/client/_app/immutable/entry/app.D4j9hUjJ.js.gz +0 -0
- package/dashboard/build/client/_app/immutable/entry/start.D59wIHuS.js +0 -1
- package/dashboard/build/client/_app/immutable/entry/start.D59wIHuS.js.br +0 -2
- package/dashboard/build/client/_app/immutable/entry/start.D59wIHuS.js.gz +0 -0
- package/dashboard/build/client/_app/immutable/nodes/0.HocD0HAQ.js +0 -1
- package/dashboard/build/client/_app/immutable/nodes/0.HocD0HAQ.js.br +0 -0
- package/dashboard/build/client/_app/immutable/nodes/0.HocD0HAQ.js.gz +0 -0
- package/dashboard/build/client/_app/immutable/nodes/1.xo_a-jPh.js +0 -1
- package/dashboard/build/client/_app/immutable/nodes/1.xo_a-jPh.js.br +0 -0
- package/dashboard/build/client/_app/immutable/nodes/1.xo_a-jPh.js.gz +0 -0
- package/dashboard/build/client/_app/immutable/nodes/2.BwywD4n3.js +0 -1
- package/dashboard/build/client/_app/immutable/nodes/2.BwywD4n3.js.br +0 -0
- package/dashboard/build/client/_app/immutable/nodes/2.BwywD4n3.js.gz +0 -0
- package/dashboard/build/client/_app/immutable/nodes/3.BGY0bNfC.js +0 -1
- package/dashboard/build/client/_app/immutable/nodes/3.BGY0bNfC.js.br +0 -0
- package/dashboard/build/client/_app/immutable/nodes/3.BGY0bNfC.js.gz +0 -0
- package/dashboard/build/client/_app/immutable/nodes/4.C7uIivCS.js +0 -1
- package/dashboard/build/client/_app/immutable/nodes/4.C7uIivCS.js.br +0 -0
- package/dashboard/build/client/_app/immutable/nodes/4.C7uIivCS.js.gz +0 -0
- package/dashboard/build/client/_app/immutable/nodes/5.YszfczJW.js +0 -1
- package/dashboard/build/client/_app/immutable/nodes/5.YszfczJW.js.br +0 -0
- package/dashboard/build/client/_app/immutable/nodes/5.YszfczJW.js.gz +0 -0
- package/dashboard/build/client/_app/immutable/nodes/6.7fhKcbBK.js +0 -1
- package/dashboard/build/client/_app/immutable/nodes/6.7fhKcbBK.js.br +0 -0
- package/dashboard/build/client/_app/immutable/nodes/6.7fhKcbBK.js.gz +0 -0
- package/dashboard/build/server/chunks/0-DUUsxI66.js +0 -40
- package/dashboard/build/server/chunks/0-DUUsxI66.js.map +0 -1
- package/dashboard/build/server/chunks/1-BDkdOGL6.js +0 -9
- package/dashboard/build/server/chunks/2-BLt1vNET.js.map +0 -1
- package/dashboard/build/server/chunks/3-B-4sxMk4.js +0 -41
- package/dashboard/build/server/chunks/3-B-4sxMk4.js.map +0 -1
- package/dashboard/build/server/chunks/4-CRZIwHJO.js +0 -39
- package/dashboard/build/server/chunks/4-CRZIwHJO.js.map +0 -1
- package/dashboard/build/server/chunks/5-CwiVOtz6.js +0 -30
- package/dashboard/build/server/chunks/5-CwiVOtz6.js.map +0 -1
- package/dashboard/build/server/chunks/6-mID2_gX2.js +0 -53
- package/dashboard/build/server/chunks/6-mID2_gX2.js.map +0 -1
- package/dashboard/build/server/chunks/_layout.svelte-DeOKequ-.js +0 -31
- package/dashboard/build/server/chunks/_layout.svelte-DeOKequ-.js.map +0 -1
- package/dashboard/build/server/chunks/_page.svelte-C_NO0kPy.js.map +0 -1
- package/dashboard/build/server/chunks/exports-BnaAAAnL.js.map +0 -1
- package/dashboard/build/server/chunks/index-DwR_KaNY.js.map +0 -1
- package/dashboard/build/server/chunks/queries-DGWi-KlP.js +0 -198
- package/dashboard/build/server/chunks/queries-DGWi-KlP.js.map +0 -1
|
@@ -1,198 +0,0 @@
|
|
|
1
|
-
import { createClient } from '@libsql/client';
|
|
2
|
-
import { drizzle } from 'drizzle-orm/libsql';
|
|
3
|
-
import { join } from 'node:path';
|
|
4
|
-
import { homedir } from 'node:os';
|
|
5
|
-
import { eq, and, sql, isNull, desc } from 'drizzle-orm';
|
|
6
|
-
import { sqliteTable, text, integer } from 'drizzle-orm/sqlite-core';
|
|
7
|
-
|
|
8
|
-
const project = sqliteTable("project", {
|
|
9
|
-
id: text("id").primaryKey(),
|
|
10
|
-
slug: text("slug").notNull().unique(),
|
|
11
|
-
name: text("name").notNull(),
|
|
12
|
-
gitRemote: text("git_remote"),
|
|
13
|
-
dod: text("dod"),
|
|
14
|
-
sprintLengthDays: integer("sprint_length_days").notNull().default(14),
|
|
15
|
-
wipEnabled: integer("wip_enabled", { mode: "boolean" }).notNull().default(false),
|
|
16
|
-
estimationEnabled: integer("estimation_enabled", { mode: "boolean" }).notNull().default(true),
|
|
17
|
-
createdAt: text("created_at").notNull()
|
|
18
|
-
});
|
|
19
|
-
const developer = sqliteTable("developer", {
|
|
20
|
-
id: text("id").primaryKey(),
|
|
21
|
-
projectId: text("project_id").notNull().references(() => project.id),
|
|
22
|
-
handle: text("handle").notNull(),
|
|
23
|
-
email: text("email"),
|
|
24
|
-
lastSeenAt: text("last_seen_at").notNull()
|
|
25
|
-
});
|
|
26
|
-
const sprint = sqliteTable("sprint", {
|
|
27
|
-
id: text("id").primaryKey(),
|
|
28
|
-
projectId: text("project_id").notNull().references(() => project.id),
|
|
29
|
-
name: text("name").notNull(),
|
|
30
|
-
goal: text("goal"),
|
|
31
|
-
startedAt: text("started_at").notNull(),
|
|
32
|
-
endedAt: text("ended_at"),
|
|
33
|
-
status: text("status").notNull(),
|
|
34
|
-
wipLimit: integer("wip_limit")
|
|
35
|
-
});
|
|
36
|
-
const epic = sqliteTable("epic", {
|
|
37
|
-
id: text("id").primaryKey(),
|
|
38
|
-
projectId: text("project_id").notNull().references(() => project.id),
|
|
39
|
-
title: text("title").notNull(),
|
|
40
|
-
description: text("description"),
|
|
41
|
-
status: text("status").notNull().default("open"),
|
|
42
|
-
priority: integer("priority").notNull().default(3),
|
|
43
|
-
targetSprintId: text("target_sprint_id").references(() => sprint.id),
|
|
44
|
-
createdAt: text("created_at").notNull()
|
|
45
|
-
});
|
|
46
|
-
const story = sqliteTable("story", {
|
|
47
|
-
id: text("id").primaryKey(),
|
|
48
|
-
epicId: text("epic_id").references(() => epic.id),
|
|
49
|
-
sprintId: text("sprint_id").references(() => sprint.id),
|
|
50
|
-
title: text("title").notNull(),
|
|
51
|
-
description: text("description"),
|
|
52
|
-
acceptance: text("acceptance"),
|
|
53
|
-
status: text("status").notNull().default("backlog"),
|
|
54
|
-
size: text("size"),
|
|
55
|
-
assigneeId: text("assignee_id").references(() => developer.id),
|
|
56
|
-
priority: integer("priority").notNull().default(3),
|
|
57
|
-
startedAt: text("started_at"),
|
|
58
|
-
completedAt: text("completed_at"),
|
|
59
|
-
createdAt: text("created_at").notNull()
|
|
60
|
-
});
|
|
61
|
-
const task = sqliteTable("task", {
|
|
62
|
-
id: text("id").primaryKey(),
|
|
63
|
-
storyId: text("story_id").notNull().references(() => story.id),
|
|
64
|
-
assigneeId: text("assignee_id").references(() => developer.id),
|
|
65
|
-
title: text("title").notNull(),
|
|
66
|
-
status: text("status").notNull().default("todo"),
|
|
67
|
-
blockedBy: text("blocked_by"),
|
|
68
|
-
createdAt: text("created_at").notNull()
|
|
69
|
-
});
|
|
70
|
-
const techDebt = sqliteTable("tech_debt", {
|
|
71
|
-
id: text("id").primaryKey(),
|
|
72
|
-
projectId: text("project_id").notNull().references(() => project.id),
|
|
73
|
-
title: text("title").notNull(),
|
|
74
|
-
description: text("description"),
|
|
75
|
-
severity: text("severity").notNull().default("med"),
|
|
76
|
-
location: text("location"),
|
|
77
|
-
ownerId: text("owner_id").references(() => developer.id),
|
|
78
|
-
expiresAt: text("expires_at"),
|
|
79
|
-
openedAt: text("opened_at").notNull(),
|
|
80
|
-
closedAt: text("closed_at"),
|
|
81
|
-
linkedStoryId: text("linked_story_id").references(() => story.id)
|
|
82
|
-
});
|
|
83
|
-
const decision = sqliteTable("decision", {
|
|
84
|
-
id: text("id").primaryKey(),
|
|
85
|
-
projectId: text("project_id").notNull().references(() => project.id),
|
|
86
|
-
title: text("title").notNull(),
|
|
87
|
-
context: text("context"),
|
|
88
|
-
decision: text("decision").notNull(),
|
|
89
|
-
status: text("status").notNull().default("accepted"),
|
|
90
|
-
decidedAt: text("decided_at").notNull()
|
|
91
|
-
});
|
|
92
|
-
const progressEvent = sqliteTable("progress_event", {
|
|
93
|
-
id: text("id").primaryKey(),
|
|
94
|
-
projectId: text("project_id").notNull().references(() => project.id),
|
|
95
|
-
developerId: text("developer_id").references(() => developer.id),
|
|
96
|
-
sprintId: text("sprint_id").references(() => sprint.id),
|
|
97
|
-
kind: text("kind").notNull(),
|
|
98
|
-
refId: text("ref_id"),
|
|
99
|
-
summary: text("summary").notNull(),
|
|
100
|
-
ts: text("ts").notNull()
|
|
101
|
-
});
|
|
102
|
-
const schema = {
|
|
103
|
-
project,
|
|
104
|
-
developer,
|
|
105
|
-
sprint,
|
|
106
|
-
epic,
|
|
107
|
-
story,
|
|
108
|
-
task,
|
|
109
|
-
techDebt,
|
|
110
|
-
decision,
|
|
111
|
-
progressEvent
|
|
112
|
-
};
|
|
113
|
-
let cached = null;
|
|
114
|
-
function helmHome() {
|
|
115
|
-
return process.env.HELM_HOME ?? join(homedir(), ".helm");
|
|
116
|
-
}
|
|
117
|
-
function activeSlug() {
|
|
118
|
-
const slug = process.env.HELM_PROJECT_SLUG;
|
|
119
|
-
if (!slug) {
|
|
120
|
-
throw new Error("HELM_PROJECT_SLUG not set — start the dashboard via `helm dashboard`.");
|
|
121
|
-
}
|
|
122
|
-
return slug;
|
|
123
|
-
}
|
|
124
|
-
function db() {
|
|
125
|
-
if (cached) return cached;
|
|
126
|
-
const slug = activeSlug();
|
|
127
|
-
const path = join(helmHome(), `${slug}.db`);
|
|
128
|
-
const syncUrl = process.env.HELM_SYNC_URL;
|
|
129
|
-
const syncToken = process.env.HELM_SYNC_TOKEN;
|
|
130
|
-
const syncIntervalSec = Number(process.env.HELM_SYNC_INTERVAL_MS ?? "5000") / 1e3;
|
|
131
|
-
const client = syncUrl ? createClient({ url: `file:${path}`, syncUrl, authToken: syncToken, syncInterval: syncIntervalSec }) : createClient({ url: `file:${path}` });
|
|
132
|
-
cached = drizzle(client, { schema });
|
|
133
|
-
return cached;
|
|
134
|
-
}
|
|
135
|
-
async function loadProject(db2, slug) {
|
|
136
|
-
const rows = await db2.select().from(project).where(eq(project.slug, slug)).limit(1);
|
|
137
|
-
return rows[0] ?? null;
|
|
138
|
-
}
|
|
139
|
-
async function loadActiveSprint(db2, projectId) {
|
|
140
|
-
const rows = await db2.select().from(sprint).where(and(eq(sprint.projectId, projectId), eq(sprint.status, "active"))).limit(1);
|
|
141
|
-
return rows[0] ?? null;
|
|
142
|
-
}
|
|
143
|
-
async function loadAllSprints(db2, projectId) {
|
|
144
|
-
return db2.select().from(sprint).where(eq(sprint.projectId, projectId)).orderBy(desc(sprint.startedAt));
|
|
145
|
-
}
|
|
146
|
-
async function loadSprintById(db2, sprintId) {
|
|
147
|
-
const rows = await db2.select().from(sprint).where(eq(sprint.id, sprintId)).limit(1);
|
|
148
|
-
return rows[0] ?? null;
|
|
149
|
-
}
|
|
150
|
-
async function loadStoriesInSprint(db2, sprintId) {
|
|
151
|
-
return db2.select().from(story).where(eq(story.sprintId, sprintId)).orderBy(story.priority);
|
|
152
|
-
}
|
|
153
|
-
async function loadOpenDebt(db2, projectId, limit = 100) {
|
|
154
|
-
return db2.select().from(techDebt).where(and(eq(techDebt.projectId, projectId), isNull(techDebt.closedAt))).orderBy(sql`severity desc, opened_at desc`).limit(limit);
|
|
155
|
-
}
|
|
156
|
-
async function loadAllDebt(db2, projectId, limit = 500) {
|
|
157
|
-
return db2.select().from(techDebt).where(eq(techDebt.projectId, projectId)).orderBy(sql`closed_at is null desc, severity desc, opened_at desc`).limit(limit);
|
|
158
|
-
}
|
|
159
|
-
async function loadRecentEvents(db2, projectId, limit = 30) {
|
|
160
|
-
return db2.select().from(progressEvent).where(eq(progressEvent.projectId, projectId)).orderBy(desc(progressEvent.ts)).limit(limit);
|
|
161
|
-
}
|
|
162
|
-
async function loadSprintMetrics(db2, projectId) {
|
|
163
|
-
const sprints = await loadAllSprints(db2, projectId);
|
|
164
|
-
const out = [];
|
|
165
|
-
for (const s of sprints) {
|
|
166
|
-
out.push(await computeSprintMetric(db2, s));
|
|
167
|
-
}
|
|
168
|
-
return out;
|
|
169
|
-
}
|
|
170
|
-
async function computeSprintMetric(db2, s) {
|
|
171
|
-
const total = await db2.select({ c: sql`count(*)` }).from(story).where(eq(story.sprintId, s.id));
|
|
172
|
-
const done = await db2.select({ c: sql`count(*)` }).from(story).where(and(eq(story.sprintId, s.id), eq(story.status, "done")));
|
|
173
|
-
const opened = await db2.select({ c: sql`count(*)` }).from(progressEvent).where(and(eq(progressEvent.sprintId, s.id), eq(progressEvent.kind, "debt.opened")));
|
|
174
|
-
const closed = await db2.select({ c: sql`count(*)` }).from(progressEvent).where(and(eq(progressEvent.sprintId, s.id), eq(progressEvent.kind, "debt.closed")));
|
|
175
|
-
const o = opened[0]?.c ?? 0;
|
|
176
|
-
const c = closed[0]?.c ?? 0;
|
|
177
|
-
return {
|
|
178
|
-
sprintId: s.id,
|
|
179
|
-
name: s.name,
|
|
180
|
-
status: s.status,
|
|
181
|
-
startedAt: s.startedAt,
|
|
182
|
-
endedAt: s.endedAt,
|
|
183
|
-
storiesTotal: total[0]?.c ?? 0,
|
|
184
|
-
storiesDone: done[0]?.c ?? 0,
|
|
185
|
-
debtOpened: o,
|
|
186
|
-
debtClosed: c,
|
|
187
|
-
debtDelta: o - c
|
|
188
|
-
};
|
|
189
|
-
}
|
|
190
|
-
async function loadEventsForSprint(db2, sprintId, limit = 100) {
|
|
191
|
-
return db2.select().from(progressEvent).where(eq(progressEvent.sprintId, sprintId)).orderBy(desc(progressEvent.ts)).limit(limit);
|
|
192
|
-
}
|
|
193
|
-
async function loadDecisions(db2, projectId, limit = 50) {
|
|
194
|
-
return db2.select().from(decision).where(eq(decision.projectId, projectId)).orderBy(desc(decision.decidedAt)).limit(limit);
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
export { activeSlug as a, loadAllDebt as b, computeSprintMetric as c, db as d, loadDecisions as e, loadEventsForSprint as f, loadOpenDebt as g, loadProject as h, loadRecentEvents as i, loadSprintById as j, loadSprintMetrics as k, loadActiveSprint as l, loadStoriesInSprint as m };
|
|
198
|
-
//# sourceMappingURL=queries-DGWi-KlP.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"queries-DGWi-KlP.js","sources":["../../../.svelte-kit/adapter-node/chunks/queries.js"],"sourcesContent":["import { createClient } from \"@libsql/client\";\nimport { drizzle } from \"drizzle-orm/libsql\";\nimport { join } from \"node:path\";\nimport { homedir } from \"node:os\";\nimport { eq, and, sql, isNull, desc } from \"drizzle-orm\";\nimport { sqliteTable, text, integer } from \"drizzle-orm/sqlite-core\";\nconst project = sqliteTable(\"project\", {\n id: text(\"id\").primaryKey(),\n slug: text(\"slug\").notNull().unique(),\n name: text(\"name\").notNull(),\n gitRemote: text(\"git_remote\"),\n dod: text(\"dod\"),\n sprintLengthDays: integer(\"sprint_length_days\").notNull().default(14),\n wipEnabled: integer(\"wip_enabled\", { mode: \"boolean\" }).notNull().default(false),\n estimationEnabled: integer(\"estimation_enabled\", { mode: \"boolean\" }).notNull().default(true),\n createdAt: text(\"created_at\").notNull()\n});\nconst developer = sqliteTable(\"developer\", {\n id: text(\"id\").primaryKey(),\n projectId: text(\"project_id\").notNull().references(() => project.id),\n handle: text(\"handle\").notNull(),\n email: text(\"email\"),\n lastSeenAt: text(\"last_seen_at\").notNull()\n});\nconst sprint = sqliteTable(\"sprint\", {\n id: text(\"id\").primaryKey(),\n projectId: text(\"project_id\").notNull().references(() => project.id),\n name: text(\"name\").notNull(),\n goal: text(\"goal\"),\n startedAt: text(\"started_at\").notNull(),\n endedAt: text(\"ended_at\"),\n status: text(\"status\").notNull(),\n wipLimit: integer(\"wip_limit\")\n});\nconst epic = sqliteTable(\"epic\", {\n id: text(\"id\").primaryKey(),\n projectId: text(\"project_id\").notNull().references(() => project.id),\n title: text(\"title\").notNull(),\n description: text(\"description\"),\n status: text(\"status\").notNull().default(\"open\"),\n priority: integer(\"priority\").notNull().default(3),\n targetSprintId: text(\"target_sprint_id\").references(() => sprint.id),\n createdAt: text(\"created_at\").notNull()\n});\nconst story = sqliteTable(\"story\", {\n id: text(\"id\").primaryKey(),\n epicId: text(\"epic_id\").references(() => epic.id),\n sprintId: text(\"sprint_id\").references(() => sprint.id),\n title: text(\"title\").notNull(),\n description: text(\"description\"),\n acceptance: text(\"acceptance\"),\n status: text(\"status\").notNull().default(\"backlog\"),\n size: text(\"size\"),\n assigneeId: text(\"assignee_id\").references(() => developer.id),\n priority: integer(\"priority\").notNull().default(3),\n startedAt: text(\"started_at\"),\n completedAt: text(\"completed_at\"),\n createdAt: text(\"created_at\").notNull()\n});\nconst task = sqliteTable(\"task\", {\n id: text(\"id\").primaryKey(),\n storyId: text(\"story_id\").notNull().references(() => story.id),\n assigneeId: text(\"assignee_id\").references(() => developer.id),\n title: text(\"title\").notNull(),\n status: text(\"status\").notNull().default(\"todo\"),\n blockedBy: text(\"blocked_by\"),\n createdAt: text(\"created_at\").notNull()\n});\nconst techDebt = sqliteTable(\"tech_debt\", {\n id: text(\"id\").primaryKey(),\n projectId: text(\"project_id\").notNull().references(() => project.id),\n title: text(\"title\").notNull(),\n description: text(\"description\"),\n severity: text(\"severity\").notNull().default(\"med\"),\n location: text(\"location\"),\n ownerId: text(\"owner_id\").references(() => developer.id),\n expiresAt: text(\"expires_at\"),\n openedAt: text(\"opened_at\").notNull(),\n closedAt: text(\"closed_at\"),\n linkedStoryId: text(\"linked_story_id\").references(() => story.id)\n});\nconst decision = sqliteTable(\"decision\", {\n id: text(\"id\").primaryKey(),\n projectId: text(\"project_id\").notNull().references(() => project.id),\n title: text(\"title\").notNull(),\n context: text(\"context\"),\n decision: text(\"decision\").notNull(),\n status: text(\"status\").notNull().default(\"accepted\"),\n decidedAt: text(\"decided_at\").notNull()\n});\nconst progressEvent = sqliteTable(\"progress_event\", {\n id: text(\"id\").primaryKey(),\n projectId: text(\"project_id\").notNull().references(() => project.id),\n developerId: text(\"developer_id\").references(() => developer.id),\n sprintId: text(\"sprint_id\").references(() => sprint.id),\n kind: text(\"kind\").notNull(),\n refId: text(\"ref_id\"),\n summary: text(\"summary\").notNull(),\n ts: text(\"ts\").notNull()\n});\nconst schema = {\n project,\n developer,\n sprint,\n epic,\n story,\n task,\n techDebt,\n decision,\n progressEvent\n};\nlet cached = null;\nfunction helmHome() {\n return process.env.HELM_HOME ?? join(homedir(), \".helm\");\n}\nfunction activeSlug() {\n const slug = process.env.HELM_PROJECT_SLUG;\n if (!slug) {\n throw new Error(\"HELM_PROJECT_SLUG not set — start the dashboard via `helm dashboard`.\");\n }\n return slug;\n}\nfunction db() {\n if (cached) return cached;\n const slug = activeSlug();\n const path = join(helmHome(), `${slug}.db`);\n const syncUrl = process.env.HELM_SYNC_URL;\n const syncToken = process.env.HELM_SYNC_TOKEN;\n const syncIntervalSec = Number(process.env.HELM_SYNC_INTERVAL_MS ?? \"5000\") / 1e3;\n const client = syncUrl ? createClient({ url: `file:${path}`, syncUrl, authToken: syncToken, syncInterval: syncIntervalSec }) : createClient({ url: `file:${path}` });\n cached = drizzle(client, { schema });\n return cached;\n}\nasync function loadProject(db2, slug) {\n const rows = await db2.select().from(project).where(eq(project.slug, slug)).limit(1);\n return rows[0] ?? null;\n}\nasync function loadActiveSprint(db2, projectId) {\n const rows = await db2.select().from(sprint).where(and(eq(sprint.projectId, projectId), eq(sprint.status, \"active\"))).limit(1);\n return rows[0] ?? null;\n}\nasync function loadAllSprints(db2, projectId) {\n return db2.select().from(sprint).where(eq(sprint.projectId, projectId)).orderBy(desc(sprint.startedAt));\n}\nasync function loadSprintById(db2, sprintId) {\n const rows = await db2.select().from(sprint).where(eq(sprint.id, sprintId)).limit(1);\n return rows[0] ?? null;\n}\nasync function loadStoriesInSprint(db2, sprintId) {\n return db2.select().from(story).where(eq(story.sprintId, sprintId)).orderBy(story.priority);\n}\nasync function loadOpenDebt(db2, projectId, limit = 100) {\n return db2.select().from(techDebt).where(and(eq(techDebt.projectId, projectId), isNull(techDebt.closedAt))).orderBy(sql`severity desc, opened_at desc`).limit(limit);\n}\nasync function loadAllDebt(db2, projectId, limit = 500) {\n return db2.select().from(techDebt).where(eq(techDebt.projectId, projectId)).orderBy(sql`closed_at is null desc, severity desc, opened_at desc`).limit(limit);\n}\nasync function loadRecentEvents(db2, projectId, limit = 30) {\n return db2.select().from(progressEvent).where(eq(progressEvent.projectId, projectId)).orderBy(desc(progressEvent.ts)).limit(limit);\n}\nasync function loadSprintMetrics(db2, projectId) {\n const sprints = await loadAllSprints(db2, projectId);\n const out = [];\n for (const s of sprints) {\n out.push(await computeSprintMetric(db2, s));\n }\n return out;\n}\nasync function computeSprintMetric(db2, s) {\n const total = await db2.select({ c: sql`count(*)` }).from(story).where(eq(story.sprintId, s.id));\n const done = await db2.select({ c: sql`count(*)` }).from(story).where(and(eq(story.sprintId, s.id), eq(story.status, \"done\")));\n const opened = await db2.select({ c: sql`count(*)` }).from(progressEvent).where(and(eq(progressEvent.sprintId, s.id), eq(progressEvent.kind, \"debt.opened\")));\n const closed = await db2.select({ c: sql`count(*)` }).from(progressEvent).where(and(eq(progressEvent.sprintId, s.id), eq(progressEvent.kind, \"debt.closed\")));\n const o = opened[0]?.c ?? 0;\n const c = closed[0]?.c ?? 0;\n return {\n sprintId: s.id,\n name: s.name,\n status: s.status,\n startedAt: s.startedAt,\n endedAt: s.endedAt,\n storiesTotal: total[0]?.c ?? 0,\n storiesDone: done[0]?.c ?? 0,\n debtOpened: o,\n debtClosed: c,\n debtDelta: o - c\n };\n}\nasync function loadEventsForSprint(db2, sprintId, limit = 100) {\n return db2.select().from(progressEvent).where(eq(progressEvent.sprintId, sprintId)).orderBy(desc(progressEvent.ts)).limit(limit);\n}\nasync function loadDecisions(db2, projectId, limit = 50) {\n return db2.select().from(decision).where(eq(decision.projectId, projectId)).orderBy(desc(decision.decidedAt)).limit(limit);\n}\nexport {\n activeSlug as a,\n loadAllDebt as b,\n computeSprintMetric as c,\n db as d,\n loadDecisions as e,\n loadEventsForSprint as f,\n loadOpenDebt as g,\n loadProject as h,\n loadRecentEvents as i,\n loadSprintById as j,\n loadSprintMetrics as k,\n loadActiveSprint as l,\n loadStoriesInSprint as m\n};\n"],"names":[],"mappings":"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"}
|