Files
Epicnabbo-Catalogus-Updated…/src/lib/housekeeping-preferences-repository.ts
T

44 lines
1.2 KiB
TypeScript

import { eq } from "drizzle-orm";
import {
createHousekeepingPreferencesRepository,
type HousekeepingPreferencesStorage,
} from "@/features/housekeeping/foundation/preferences/repository";
import { type Db, db, HousekeepingUserPreferences } from "@/lib/db";
type HousekeepingPreferencesDb = Pick<Db, "select" | "insert">;
export function createDrizzleHousekeepingPreferencesStorage(
database: HousekeepingPreferencesDb,
): HousekeepingPreferencesStorage {
return {
async findByUserId(userId) {
const rows = await database
.select({
schemaVersion: HousekeepingUserPreferences.schemaVersion,
payload: HousekeepingUserPreferences.payload,
})
.from(HousekeepingUserPreferences)
.where(eq(HousekeepingUserPreferences.userId, userId))
.limit(1);
return rows[0] ?? null;
},
async upsert(row) {
await database
.insert(HousekeepingUserPreferences)
.values(row)
.onDuplicateKeyUpdate({
set: {
schemaVersion: row.schemaVersion,
payload: row.payload,
updatedAt: new Date(),
},
});
},
};
}
export const housekeepingPreferencesRepository =
createHousekeepingPreferencesRepository(
createDrizzleHousekeepingPreferencesStorage(db),
);