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 }