feat: manufacturer service with list, get, create
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
42
src/server/services/manufacturer.service.ts
Normal file
42
src/server/services/manufacturer.service.ts
Normal file
@@ -0,0 +1,42 @@
|
||||
import { asc, eq } from "drizzle-orm";
|
||||
import { db as prodDb } from "../../db/index.ts";
|
||||
import { manufacturers } from "../../db/schema.ts";
|
||||
|
||||
type Db = typeof prodDb;
|
||||
|
||||
export type CreateManufacturerInput = {
|
||||
name: string;
|
||||
slug: string;
|
||||
website: string;
|
||||
tier?: number;
|
||||
country?: string;
|
||||
};
|
||||
|
||||
export async function listManufacturers(db: Db = prodDb) {
|
||||
return db.select().from(manufacturers).orderBy(asc(manufacturers.name));
|
||||
}
|
||||
|
||||
export async function getManufacturerBySlug(db: Db = prodDb, slug: string) {
|
||||
const [row] = await db
|
||||
.select()
|
||||
.from(manufacturers)
|
||||
.where(eq(manufacturers.slug, slug));
|
||||
return row ?? null;
|
||||
}
|
||||
|
||||
export async function createManufacturer(
|
||||
db: Db = prodDb,
|
||||
data: CreateManufacturerInput,
|
||||
) {
|
||||
const [row] = await db
|
||||
.insert(manufacturers)
|
||||
.values({
|
||||
name: data.name,
|
||||
slug: data.slug,
|
||||
website: data.website,
|
||||
tier: data.tier ?? 1,
|
||||
country: data.country ?? null,
|
||||
})
|
||||
.returning();
|
||||
return row!;
|
||||
}
|
||||
Reference in New Issue
Block a user