mirror of
https://github.com/Mercantec-GHC/h4-projekt-gruppe-0-sm.git
synced 2025-04-28 00:34:06 +02:00
40 lines
1.0 KiB
C
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);
|