aboutsummaryrefslogtreecommitdiff
path: root/src/lib/server/services/projects.ts
blob: d389aa503ba8a85b36b21ab679f581b26a728fda (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

import { projects } from '$lib/server/db/schema';
import { eq } from 'drizzle-orm';
import type { AppDatabase } from '$lib/server/db/types';
import type { Project } from './types';

export class ProjectsService {
	constructor(private readonly db: AppDatabase) {}

	async add(name: string): Promise<Project> {
		const [inserted] = await this.db
			.insert(projects)
			.values({ name })
			.returning();
		return inserted;
	}

	async archive(id: number): Promise<void> {
		await this.db
			.update(projects)
			.set({ archived: true })
			.where(eq(projects.id, id));
	}

	async getById(id: number): Promise<Project | undefined> {
		const [project] = await this.db
			.select()
			.from(projects)
			.where(eq(projects.id, id));
		return project;
	}
}