2025-03-13 17:25:24 +01:00

40 lines
1.0 KiB
C

#include "../models/models_json.h"
#include "../util/str.h"
#include "controllers.h"
void route_get_cart_items_from_session(HttpCtx* ctx)
{
Cx* cx = http_ctx_user_ctx(ctx);
const Session* session = middleware_session(ctx);
if (!session)
return;
CartItemVec cart_items;
cart_item_vec_construct(&cart_items);
DbRes db_res
= db_cart_items_with_user_id(cx->db, &cart_items, session->user_id);
if (db_res != DbRes_Ok) {
RESPOND_BAD_REQUEST(ctx, "Could not find cart for user");
return;
}
String res;
string_construct(&res);
string_push_str(&res, "{\"ok\":true,\"products\":[");
for (size_t i = 0; i < cart_items.size; ++i) {
if (i != 0) {
string_push_str(&res, ",");
}
char* json = cart_item_to_json_string(&cart_items.data[i]);
string_push_str(&res, json);
free(json);
}
string_push_str(&res, "]}");
cart_item_vec_destroy(&cart_items);
RESPOND_JSON(ctx, 200, "%s", res.data);
string_destroy(&res);
}