feat(postgres): implement notes CRUD and export import
CI / lint (pull_request) Successful in 32s
CI / format (pull_request) Failing after 32s
CI / install-and-build (pull_request) Successful in 1m0s
CI / typecheck-tests (pull_request) Successful in 36s
CI / typecheck-source (pull_request) Successful in 37s
CI / test (pull_request) Successful in 41s
CI / lint (pull_request) Successful in 32s
CI / format (pull_request) Failing after 32s
CI / install-and-build (pull_request) Successful in 1m0s
CI / typecheck-tests (pull_request) Successful in 36s
CI / typecheck-source (pull_request) Successful in 37s
CI / test (pull_request) Successful in 41s
Co-Authored-By: gpt-5.6-luna <noreply@openai.com>
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import type { Abode } from "../types/Abode.js";
|
||||
import type { ApikeyPermissions, ClientApikey } from "../types/Apikey.js";
|
||||
import type { Resident, ResidentFlags } from "../types/Resident.js";
|
||||
import type { Note, NoteProperties, PartialNote, PartialNoteProperties } from "../types/Note.js";
|
||||
import type { ClientUser, PartialUser, UserFlags } from "../types/User.js";
|
||||
|
||||
export function pgToDate(d: Date | string): string {
|
||||
@@ -135,3 +136,66 @@ export function pgToClientApikey(apikey: {
|
||||
expires_at: apikey.expires_at ? pgToDate(apikey.expires_at) : null,
|
||||
};
|
||||
}
|
||||
|
||||
const validNoteTypes = new Set(["note"]);
|
||||
|
||||
function pgToNoteProperties(properties: unknown): NoteProperties {
|
||||
if (typeof properties !== "object" || !properties || Array.isArray(properties))
|
||||
return {};
|
||||
const value = properties as Record<string, unknown>;
|
||||
return validNoteTypes.has(value.type as string)
|
||||
? { type: value.type as "note" }
|
||||
: {};
|
||||
}
|
||||
|
||||
function pgToPartialNoteProperties(
|
||||
properties: unknown,
|
||||
): PartialNoteProperties {
|
||||
return { type: pgToNoteProperties(properties).type ?? "note" };
|
||||
}
|
||||
|
||||
export function pgToNote(note: {
|
||||
nid: string;
|
||||
aid: string;
|
||||
name: string;
|
||||
content: string;
|
||||
properties: unknown;
|
||||
created_at: Date | string;
|
||||
created_by: string | null;
|
||||
updated_at: Date | string;
|
||||
updated_by: string | null;
|
||||
}): Note {
|
||||
return {
|
||||
nid: note.nid,
|
||||
aid: note.aid,
|
||||
name: note.name,
|
||||
content: note.content,
|
||||
properties: pgToNoteProperties(note.properties),
|
||||
created_at: pgToDate(note.created_at),
|
||||
created_by: note.created_by,
|
||||
updated_at: pgToDate(note.updated_at),
|
||||
updated_by: note.updated_by,
|
||||
};
|
||||
}
|
||||
|
||||
export function pgToPartialNote(note: {
|
||||
nid: string;
|
||||
aid: string;
|
||||
name: string;
|
||||
properties: unknown;
|
||||
created_at: Date | string;
|
||||
created_by: string | null;
|
||||
updated_at: Date | string;
|
||||
updated_by: string | null;
|
||||
}): PartialNote {
|
||||
return {
|
||||
nid: note.nid,
|
||||
aid: note.aid,
|
||||
name: note.name,
|
||||
properties: pgToPartialNoteProperties(note.properties),
|
||||
created_at: pgToDate(note.created_at),
|
||||
created_by: note.created_by,
|
||||
updated_at: pgToDate(note.updated_at),
|
||||
updated_by: note.updated_by,
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user