commit 2a71b289333d6985e9ef370c4fde7731ced3a38b Author: Sijmen Schoon Date: Fri Nov 1 00:20:18 2019 +0100 help diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..dbf4200 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +database.db diff --git a/main.pl b/main.pl new file mode 100644 index 0000000..38f4f7a --- /dev/null +++ b/main.pl @@ -0,0 +1,19 @@ +:- use_module(library(http/http_server)). +:- use_module(library(http/http_client)). +:- use_module(library(http/http_json)). +:- use_module(library(http/json_convert)). +:- use_module(library(http/json)). +:- use_module(library(persistency)). + +:- initialization + http_server([port(8080)]). +:- initialization + absolute_file_name('database.db', File, [access(write)]), + db_attach(File, []). + +:- json_object + product(name:atom, price:integer). +:- persistent + product(name:atom, price:integer). + +:- consult('routes/products.pl'). diff --git a/routes/products.pl b/routes/products.pl new file mode 100644 index 0000000..03fcd8f --- /dev/null +++ b/routes/products.pl @@ -0,0 +1,19 @@ +:- http_handler( + root(products), + products_page, + [] +). + +% POST /products +products_page(Request) :- + member(method(post), Request), !, + http_read_data(Request, Json, []), + json_to_prolog(Json, product(Name, Price)), + assert_product(Name, Price), + reply_json(Json). + +% GET /products +products_page(_Request) :- + bagof(product(Name, Price), product(Name, Price), Products), + prolog_to_json(Products, Json), + reply_json(Json, []).