Add make-api package

This commit is contained in:
2024-08-04 20:04:18 +02:00
parent c30d10e67a
commit 4210f2168a
26 changed files with 613 additions and 35 deletions

View File

@@ -3,12 +3,27 @@
"license": "UNLICENSED",
"private": true,
"type": "module",
"exports": {
".": {
"types": "./dist/index.d.ts",
"import": "./dist/index.js"
},
"./api": {
"types": "./dist/api.d.ts",
"import": "./dist/api.js"
},
"./db": {
"types": "./dist/db.d.ts",
"import": "./dist/db.js"
}
},
"devDependencies": {
"typescript": "catalog:"
},
"dependencies": {
"@effect/schema": "catalog:",
"effect": "catalog:",
"fast-check": "catalog:"
"fast-check": "catalog:",
"make-api": "workspace:^"
}
}

View File

@@ -1,13 +1,19 @@
import { Api } from "make-api";
import { Schema as S } from "@effect/schema";
import { UserId } from "common";
import { pipe } from "effect";
export const LoginRequest = S.Struct({
username: S.NonEmptyString,
password: S.NonEmptyString,
});
export const LoginResponse = S.Struct({
userId: UserId,
username: S.NonEmptyString,
admin: S.Boolean,
});
export const Login = pipe(
Api.make("POST", "login"),
Api.requestBodyJson(S.Struct({
username: S.NonEmptyString,
password: S.NonEmptyString,
})),
Api.responseBodyJson(200, S.Struct({
userId: UserId,
username: S.NonEmptyString,
admin: S.Boolean,
})),
Api.responseBodyText(400, S.String),
Api.responseBodyText(401, S.String),
);

View File

@@ -1,3 +1,6 @@
{
"extends": "../../tsconfig.base.json",
"references": [
{ "path": "../make-api" },
],
}