Implement DB interface for Piece CRUD
This commit is contained in:
@@ -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"),
|
||||
|
||||
Reference in New Issue
Block a user