Mercurial > sci
comparison scid/crud.c @ 29:695637f1d8a7
scid: first index page in javascript
author | David Demelier <markand@malikania.fr> |
---|---|
date | Thu, 04 Aug 2022 14:13:58 +0200 |
parents | dae2de19ca5d |
children | 081e1c258e64 |
comparison
equal
deleted
inserted
replaced
28:4c16bb25e4f1 | 29:695637f1d8a7 |
---|---|
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | 14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | 15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | 16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
17 */ | 17 */ |
18 | 18 |
19 #include <assert.h> | |
20 | |
21 #include "crud.h" | |
19 #include "log.h" | 22 #include "log.h" |
20 #include "page.h" | 23 #include "pageutil.h" |
21 | 24 |
22 static int | 25 static int |
23 save(struct kreq *r, int (*saver)(json_t *), const char *topic) | 26 save(struct kreq *r, int (*saver)(json_t *), const char *topic) |
24 { | 27 { |
25 json_t *doc; | 28 json_t *doc; |
41 } | 44 } |
42 | 45 |
43 void | 46 void |
44 crud_insert(struct kreq *r, int (*saver)(json_t *), const char *topic) | 47 crud_insert(struct kreq *r, int (*saver)(json_t *), const char *topic) |
45 { | 48 { |
49 assert(r); | |
50 assert(saver); | |
51 assert(topic); | |
52 | |
46 if (r->fieldsz < 1) | 53 if (r->fieldsz < 1) |
47 page(r, KHTTP_400, KMIME_APP_JSON, NULL, NULL); | 54 pageutil_json(r, KHTTP_400, NULL); |
48 else if (save(r, saver, topic) < 0) | 55 else if (save(r, saver, topic) < 0) |
49 page(r, KHTTP_500, KMIME_APP_JSON, NULL, NULL); | 56 pageutil_json(r, KHTTP_500, NULL); |
50 else { | 57 else |
51 khttp_head(r, kresps[KRESP_CONTENT_TYPE], "%s", kmimetypes[KMIME_APP_JSON]); | 58 /* TODO: Maybe we should send the updated model. */ |
52 khttp_head(r, kresps[KRESP_STATUS], "%s", khttps[KHTTP_200]); | 59 pageutil_json(r, KHTTP_200, NULL); |
53 khttp_body(r); | |
54 khttp_free(r); | |
55 } | |
56 } | 60 } |
57 | 61 |
58 void | 62 void |
59 crud_list(struct kreq *r, json_t *doc) | 63 crud_list(struct kreq *r, json_t *doc) |
60 { | 64 { |
61 char *str; | 65 assert(r); |
62 | 66 |
63 if (!doc) | 67 if (!doc) |
64 page(r, KHTTP_500, KMIME_APP_JSON, NULL, NULL); | 68 pageutil_json(r, KHTTP_500, NULL); |
65 else { | 69 else |
66 if (!(str = json_dumps(doc, JSON_COMPACT))) | 70 pageutil_json(r, KHTTP_200, doc); |
67 page(r, KHTTP_500, KMIME_APP_JSON, NULL, NULL); | |
68 else { | |
69 khttp_head(r, kresps[KRESP_CONTENT_TYPE], "%s", kmimetypes[KMIME_APP_JSON]); | |
70 khttp_head(r, kresps[KRESP_STATUS], "%s", khttps[KHTTP_200]); | |
71 khttp_body(r); | |
72 khttp_printf(r, "%s", str); | |
73 khttp_free(r); | |
74 json_decref(doc); | |
75 } | |
76 | |
77 free(str); | |
78 } | |
79 } | 71 } |