fix(housekeeping): harden preference persistence
This commit is contained in:
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),
|
||||
);
|
||||
Reference in new issue
Block a user