Implement DB interface for Piece CRUD

This commit is contained in:
2024-08-13 23:17:48 +02:00
parent 1bd323bdd6
commit ac091b1dc9
5 changed files with 171 additions and 11 deletions

View File

@@ -1,7 +1,48 @@
import { Api } from "make-api";
import { Schema as S } from "@effect/schema";
import { UserId } from "common";
import { PieceId, UserId } from "common";
import { pipe } from "effect";
import { Piece } from "./db";
// --- PIECES ------------------------------------------------------------------
export const CreatePiece = pipe(
Api.make("POST", "piece"),
Api.requestBodyJson(S.Struct({
name: S.NonEmptyString,
composer: S.Union(S.NonEmptyString, S.Null),
lyricist: S.Union(S.NonEmptyString, S.Null),
arranger: S.Union(S.NonEmptyString, S.Null),
})),
Api.responseBodyJson(201, Piece),
Api.responseBodyText(400, S.String),
);
export const GetPieces = pipe(
Api.make("GET", "piece"),
Api.responseBodyJson(200, S.Array(Piece)),
);
export const UpdatePiece = pipe(
Api.make("PUT", "piece", ["pieceId", PieceId]),
Api.requestBodyJson(S.Struct({
name: S.NonEmptyString,
composer: S.Union(S.NonEmptyString, S.Null),
lyricist: S.Union(S.NonEmptyString, S.Null),
arranger: S.Union(S.NonEmptyString, S.Null),
})),
Api.responseBodyJson(200, Piece),
Api.responseBodyText(400, S.String),
);
export const DeletePiece = pipe(
Api.make("DELETE", "piece", ["pieceId", PieceId]),
Api.responseBodyNone(200),
Api.responseBodyText(400, S.String),
Api.responseBodyText(404, S.String),
);
// --- AUTHENTICATION ----------------------------------------------------------
export const Me = pipe(
Api.make("GET", "me"),