fix(housekeeping): harden preference persistence

This commit is contained in:
Simo committed 2026-08-27 17:44:53 +02:00
1 parent 64bb230de5
commit 4e0bf598ed
7 files changed
+272 -82

No files matched your search

@@ -0,0 +1,43 @@
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),
);