2025-03-14 13:40:00 +01:00

40 lines
1.0 KiB
C

#pragma once
#include "../collections/collection.h"
#include "../models/models.h"
#include <stdbool.h>
#include <stdint.h>
DEFINE_VEC(int64_t, Ids, ids)
DEFINE_VEC(Product, ProductVec, product_vec)
typedef enum {
DbRes_Ok,
DbRes_NotFound,
DbRes_Error,
} DbRes;
typedef struct Db Db;
/// `user.id` field is ignored.
DbRes db_user_insert(Db* db, const User* user);
/// `user` field is an out parameter.
DbRes db_user_with_id(Db* db, User* user, int64_t id);
DbRes db_user_with_email_exists(Db* db, bool* exists, const char* email);
/// `user` is an out parameter.
DbRes db_user_with_email(Db* db, User* user, const char* email);
/// Expects `vec` to be constructed.
DbRes db_product_all(Db* db, ProductVec* vec);
/// `product_price` is an out parameter.
DbRes db_product_price_of_product(
Db* db, ProductPrice* product_price, int64_t product_id);
/// `receipt.id`, `receipt.timestamp` and `receipt.products[i].id`
/// are ignored.
/// `id` is an out parameter.
DbRes db_receipt_insert(Db* db, const Receipt* receipt, int64_t* id);