Tags in json
This commit is contained in:
parent
24b6ca74ee
commit
f23cab4b01
6
db.c
6
db.c
@ -246,7 +246,7 @@ db_assign_book_tags(struct booktag *list)
|
||||
p = list;
|
||||
while (NULL != p) {
|
||||
if (NULL != p->b && NULL == p->b->tags && p->b->tsize > 0) {
|
||||
p->b->tags = kcalloc(p->b->tsize, sizeof(char));
|
||||
p->b->tags = kcalloc(p->b->tsize, sizeof(char*));
|
||||
p->b->tsize = 0; // use as counter for insert
|
||||
}
|
||||
p->b->tags[p->b->tsize] = p->tag;
|
||||
@ -362,6 +362,7 @@ db_books_load(struct kreq *r, BookAdv **books, int limit, int offset)
|
||||
books[count] = kcalloc(1, sizeof(BookAdv));
|
||||
db_book_fill(&books[count]->b,stmt);
|
||||
books[count]->asize = 0;
|
||||
books[count]->tsize = 0;
|
||||
count++;
|
||||
}
|
||||
ksql_stmt_free(stmt);
|
||||
@ -372,8 +373,6 @@ db_books_load(struct kreq *r, BookAdv **books, int limit, int offset)
|
||||
p_t = db_load_books_tags(r, books, count, limit, offset);
|
||||
db_assign_book_tags(p_t);
|
||||
|
||||
ksql_stmt_free(stmt);
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
@ -393,6 +392,7 @@ db_book_full_tags(BookAdv *b, struct kreq *r, int64_t id)
|
||||
item->tag = kstrdup(ksql_stmt_str(stmt, 0));
|
||||
item->b = b;
|
||||
item->b->tsize++;
|
||||
|
||||
item->p = p;
|
||||
p = item;
|
||||
}
|
||||
|
14
main.c
14
main.c
@ -143,6 +143,18 @@ putbookdata(struct kjsonreq *req, BookFull *b)
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
puttags(struct kjsonreq *req, BookAdv *b)
|
||||
{
|
||||
if (b->tsize > 0) {
|
||||
kjson_arrayp_open(req, "tags");
|
||||
for (size_t i=0; i<b->tsize;i++) {
|
||||
kjson_putstring(req, b->tags[i]);
|
||||
}
|
||||
kjson_array_close(req);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
putauthors(struct kjsonreq *req, BookAdv *b)
|
||||
{
|
||||
@ -202,6 +214,7 @@ sendbooks(struct kreq *r)
|
||||
} else if (NULL != b) {
|
||||
putbookfull(&req, b);
|
||||
putauthors(&req, &b->ba);
|
||||
puttags(&req, &b->ba);
|
||||
putbookdata(&req, b);
|
||||
kjson_obj_close(&req);
|
||||
db_book_full_free(b);
|
||||
@ -213,6 +226,7 @@ sendbooks(struct kreq *r)
|
||||
Book b = books[i]->b;
|
||||
putbook(&req, &b);
|
||||
putauthors(&req, books[i]);
|
||||
puttags(&req, books[i]);
|
||||
kjson_obj_close(&req);
|
||||
db_book_adv_free(books[i]);
|
||||
i++;
|
||||
|
Loading…
Reference in New Issue
Block a user