feat: make general creation daemon-atomic

This commit is contained in:
2026-07-31 00:33:03 +00:00
parent 115218ded8
commit c6a2a0da93
34 changed files with 2227 additions and 655 deletions
@@ -20,9 +20,13 @@ const readObject = <T extends object>(value: unknown, fallback: T): T => {
const readLegacyMemberNo = (value: unknown): number | undefined => {
const legacyData = readObject<Record<string, unknown>>(value, {});
const memberNo = legacyData.memberNo;
return typeof memberNo === 'number' && Number.isSafeInteger(memberNo) && memberNo > 0
? memberNo
: undefined;
return typeof memberNo === 'number' && Number.isSafeInteger(memberNo) && memberNo > 0 ? memberNo : undefined;
};
const readLegacyGrade = (value: unknown): number | undefined => {
const legacyData = readObject<Record<string, unknown>>(value, {});
const grade = legacyData.grade;
return typeof grade === 'number' && Number.isSafeInteger(grade) ? grade : undefined;
};
const mapUser = (row: {
@@ -71,6 +75,7 @@ const mapUser = (row: {
passwordSalt: row.passwordSalt,
createdAt: row.createdAt.toISOString(),
legacyMemberNo: readLegacyMemberNo(row.legacyData),
legacyGrade: readLegacyGrade(row.legacyData),
});
export const createPostgresUserRepository = (
@@ -21,6 +21,7 @@ export interface UserRecord {
passwordSalt: string;
createdAt: string;
legacyMemberNo?: number;
legacyGrade?: number;
}
export interface PublicUser {
@@ -43,6 +44,7 @@ export interface UserSanctions {
notes?: string;
profileIconResetAt?: string;
serverRestrictions?: Record<string, UserServerRestriction>;
legacyPenalty?: Record<string, unknown>;
}
export interface UserServerRestriction {