aboutsummaryrefslogtreecommitdiff
path: root/src/lib/server/services/projects.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/server/services/projects.ts')
-rw-r--r--src/lib/server/services/projects.ts55
1 files changed, 24 insertions, 31 deletions
diff --git a/src/lib/server/services/projects.ts b/src/lib/server/services/projects.ts
index b58c2f1..d389aa5 100644
--- a/src/lib/server/services/projects.ts
+++ b/src/lib/server/services/projects.ts
@@ -1,38 +1,31 @@
-import { db as defaultDb } from '$lib/server/db';
import { projects } from '$lib/server/db/schema';
-import { asc, eq } from 'drizzle-orm';
-import type { AppDatabase } from './groceries';
+import { eq } from 'drizzle-orm';
+import type { AppDatabase } from '$lib/server/db/types';
import type { Project } from './types';
-export async function loadAll(db = defaultDb): Promise<Project[]> {
- return db
- .select()
- .from(projects)
- .where(eq(projects.archived, false))
- .orderBy(asc(projects.name));
-}
+export class ProjectsService {
+ constructor(private readonly db: AppDatabase) {}
-export async function add(name: string, db = defaultDb): Promise<Project> {
- const [inserted] = await db.insert(projects).values({ name }).returning();
- return inserted;
-}
+ async add(name: string): Promise<Project> {
+ const [inserted] = await this.db
+ .insert(projects)
+ .values({ name })
+ .returning();
+ return inserted;
+ }
-export async function rename(
- id: number,
- name: string,
- db = defaultDb,
-): Promise<void> {
- await db.update(projects).set({ name }).where(eq(projects.id, id));
-}
-
-export async function archive(id: number, db = defaultDb): Promise<void> {
- await db.update(projects).set({ archived: true }).where(eq(projects.id, id));
-}
+ async archive(id: number): Promise<void> {
+ await this.db
+ .update(projects)
+ .set({ archived: true })
+ .where(eq(projects.id, id));
+ }
-export async function getById(
- id: number,
- db = defaultDb,
-): Promise<Project | undefined> {
- const [project] = await db.select().from(projects).where(eq(projects.id, id));
- return project;
+ async getById(id: number): Promise<Project | undefined> {
+ const [project] = await this.db
+ .select()
+ .from(projects)
+ .where(eq(projects.id, id));
+ return project;
+ }
}