Database | Notes | |
---|---|---|
Purpose | Hold private member notes. | |
Cardinality |
one Notes database per member in the engagement
at most one item per associated member |
|
Source Code | ||
Items | src/ts/dbitems/Notes.ts | |
Zod Models | ||
item | NotesItem |
|
item.item | NotesRecord |
|
Attributes | ||
itemId | number of member in the Members database (first is 1) | |
item: | NotesRecord |
|
kind | 'note' | |
mnum | number of member in the Members db (same as itemId) | |
note | member note text | |
Description
Each member may record a short private text note about another member which only the author can see.
The Notes database holds these notes.
(see userbase-js/types/index.d.ts) export interface Item { itemId: string item: any ◄────────────────┐ createdBy: Attribution │ updatedBy?: Attribution │ fileId?: string │ fileName?: string │ fileSize?: number │ fileUploadedBy?: Attribution │ writeAccess?: AccessControl │ } │ │ NotesRecord represents the specific type of Item.item for a member note.
Ownership and Access
The each member owns their own Notes database.
The Notes databases are not shared and are only accessible by the owner.
Zod models
The following Zod models show how the Userbase items are represented in memory.
Note that in addition to the values specified by the Userbase Item interface the kind and database attributes are added during deserialization.
export type NotesItem = z.infer<typeof NotesItem>;
export const NotesItem = z.object({
kind: z.literal('notesitem'),
itemId: z.string(),
item: NotesRecord,
updatedBy: z.custom<Attribution>(),
database: z.custom<Database>()
}).strip();
export type NotesRecord = z.infer<typeof NotesRecord>;
export const NotesRecord = z.object({
kind: z.literal('note'),
mnum: z.number(),
note: z.string()
}).strip();