Most servers handle CRUD operations primarily. Our server must handle five different requests: list
all notes of the current user, find
a specific note, insert
a new note, update
a note, and remove
a note.
First, we add a helper function that can be used on the server side and the client side. In lib/shared/note.ts
, we add a function that returns the title of a note—the first line, if available, or "Untitled":
export function getTitle(content: string) { const lineEnd = content.indexOf("\n"); if (content === "" || lineEnd === 0) { return "Untitled"; } if (lineEnd === -1) { // Note contains one line return content; } // Get first line return content.substring(0, lineEnd); }
We write the CRUD functions in lib/server/note.ts
. We start with imports and the Note
definition:
import { ServerRequest, ServerResponse, ServerError, StatusCode, validate } from "phaethon"; import...