From 0bfd6efd4a5330e2a598e330b95bf6b52f3f40a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20K=C3=BChn?= Date: Mon, 29 Nov 2021 09:50:43 +0100 Subject: [PATCH 1/3] updated coding guide --- Docs/coding guide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Docs/coding guide.md b/Docs/coding guide.md index a77adf9..c5cc8c8 100644 --- a/Docs/coding guide.md +++ b/Docs/coding guide.md @@ -1,6 +1,6 @@ # 1 Formatting ## 1.1 General -Maximal 80-100 letters in one line +Maximal 80-100 letters in one line We use the default build in Formatter from 'IntelliJ IDEA' (Ctr+Alt+L) ## 1.2 Brackets From 59f3728d6f445d541757e89a3e12224cfb6b147f Mon Sep 17 00:00:00 2001 From: Marc Beyer Date: Mon, 29 Nov 2021 15:49:07 +0100 Subject: [PATCH 2/3] updated DB docs --- Docs/DB/schema.db | 50 +++++++++++++++++++++++++-------------------- Docs/DB/schema.png | Bin 8861 -> 28884 bytes 2 files changed, 28 insertions(+), 22 deletions(-) diff --git a/Docs/DB/schema.db b/Docs/DB/schema.db index e2c3e12..729afc8 100644 --- a/Docs/DB/schema.db +++ b/Docs/DB/schema.db @@ -1,30 +1,36 @@ https://dbdiagram.io/d/ -Table "user" { - "id" INT(10) [pk] - "name" VARCHAR(20) - "forename" VARCHAR(20) - "password" VARCHAR(20) - "token" VARCHAR(20) - "is_admin" BIT -} - Table "event" { - "id" INT(10) [pk] - "name" VARCHAR(20) - "priority" TINYINT(2) - "is_full_day" BIT - "start" TIME - "end" TIME + "id" bigint(20) [pk, not null, increment] + "name" varchar(255) [default: NULL] + "start" time [default: NULL] + "end" time [default: NULL] + "is_full_day" bit(1) [not null] + "is_private" bit(1) [not null] + "priority" int(11) [default: NULL] } -Table "event_list" { - "id" INT(10) [pk] - "user_id" NT(10) - "event_id" NT(10) - "date" date +Table "user" { + "id" bigint(20) [pk, not null, increment] + "forename" varchar(255) [default: NULL] + "name" varchar(255) [default: NULL] + "is_admin" bit(1) [not null] + "password" varchar(255) [default: NULL] + "token" varchar(255) [default: NULL] } -Ref:"event_list"."user_id" < "user"."id" -Ref:"event_list"."event_id" < "event"."id" \ No newline at end of file +Table "user_event" { + "date" date [not null, default: `curdate()`] + "event_id" bigint(20) [not null] + "user_id" bigint(20) [not null] + +Indexes { + event_id [name: "FKspe8srtv69gubpphvrnd7wekt"] + user_id [name: "FKk3smcqwou8absq8qjt3wk4vy9"] + (date, event_id, user_id) [pk] +} +} + +Ref:"event"."id" < "user_event"."event_id" +Ref:"user"."id" < "user_event"."user_id" \ No newline at end of file diff --git a/Docs/DB/schema.png b/Docs/DB/schema.png index bd05eff3810b5652f90d6366e849d92420a681bc..a2b36c0377a18d003faab23d75832cc6ab9c152e 100644 GIT binary patch literal 28884 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 From 87514c664c57e4b8101435cd3c34f198179a246e Mon Sep 17 00:00:00 2001 From: Marc Beyer Date: Tue, 30 Nov 2021 10:17:09 +0100 Subject: [PATCH 3/3] added API Reference --- .gitignore | 3 +- Docs/REST-API/API Reference.md | 113 +++++++++++++++++++++++++++++++++ 2 files changed, 115 insertions(+), 1 deletion(-) create mode 100644 Docs/REST-API/API Reference.md diff --git a/.gitignore b/.gitignore index 894cfc1..a63783e 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -*.bak* \ No newline at end of file +*.bak* +*.lck \ No newline at end of file diff --git a/Docs/REST-API/API Reference.md b/Docs/REST-API/API Reference.md new file mode 100644 index 0000000..bfca8d9 --- /dev/null +++ b/Docs/REST-API/API Reference.md @@ -0,0 +1,113 @@ +# API Reference + +The vpr Api ist created around REST. Our Api has several different endpoint, that are URL based and accept standard form-encoded request bodies. +It returns JSON-encoded responses and uses standard HTTP response codes. + +--- + +## The Endpoints at "/vpr/" +GET: +- /all-users + +POST: +- /all-events +- /add-user +- /add-event +- /del-event + +--- + +## Status-codes dan HTTP-responses + +| STATUS | meaning | +| --- | --- | +| 200 | OK. The Request was successful | +| 400 | Bad request. Check if you send all parameter | +| 404 | endpoint not found. The Url might contain a spelling mistake | +| 405 | Request-Method not allowed. Check if the endpoint requires an GET or POST request | +| 500 | Internal Server error. The request failed due to an exception at the server, the Request-parameter might be in a wrong format, or the database might be unreachable | + +--- + +## /all-users + +Request (GET): + + curl localhost:8080/vpr/all-users + +Response: + + [ + [ + userId: int, + forename: string, + name: string + ] + ] + +--- + +## /all-events + +Request (POST): + + curl localhost:8080/vpr/all-events -X POST -d "userId=" + +Response: + + [ + [ + eventId: int, + name: string, + start: string, + priority: int, + isFullDay: boolean, + date: string, + userId: int, + forename: string, + name: string + + ] + ] + +--- + +## /add-user + +Request (POST): + + curl localhost:8080/vpr/add-user -X POST -d "name=&forename=&password=&isAdmin=" + +Response: + + status 200 if request is ok + + And String "Saved" + +--- + +## /add-event + +Request (POST): + + curl localhost:8080/vpr/add-event -X POST -d "userId=&date=&name=&start=&end=&prority=&isFullDay=&isPrivate=" + +Response: + + status 200 if request is ok + + And String "Saved" + +--- + +## /del-event + +Request (POST): + + curl localhost:8080/vpr/del-event -X POST -d "eventId=" + +Response: + + status 200 if request is ok + + And String "Deleted" \ No newline at end of file