From c051210372dc92625e686b62c02aa58d69f5791b Mon Sep 17 00:00:00 2001 From: SimonFJ20 Date: Thu, 13 Mar 2025 17:13:57 +0100 Subject: [PATCH] move db* into db/ --- backend/src/controllers/controllers.h | 2 +- backend/src/{ => db}/db.h | 10 ++--- backend/src/{ => db}/db_sqlite.c | 64 ++++++++++++++++++--------- backend/src/{ => db}/db_sqlite.h | 0 backend/src/main.c | 2 +- 5 files changed, 48 insertions(+), 30 deletions(-) rename backend/src/{ => db}/db.h (89%) rename backend/src/{ => db}/db_sqlite.c (89%) rename backend/src/{ => db}/db_sqlite.h (100%) diff --git a/backend/src/controllers/controllers.h b/backend/src/controllers/controllers.h index 9d7ddcb..652301e 100644 --- a/backend/src/controllers/controllers.h +++ b/backend/src/controllers/controllers.h @@ -1,6 +1,6 @@ #pragma once -#include "../db.h" +#include "../db/db.h" #include "../http/http.h" #include #include diff --git a/backend/src/db.h b/backend/src/db/db.h similarity index 89% rename from backend/src/db.h rename to backend/src/db/db.h index 9770e62..20fbe45 100644 --- a/backend/src/db.h +++ b/backend/src/db/db.h @@ -1,14 +1,13 @@ #pragma once -#include "collection.h" -#include "models.h" +#include "../collection.h" +#include "../models.h" #include DEFINE_VEC(int64_t, Ids, ids, 8) DEFINE_VEC(Product, ProductVec, product_vec, 32) DEFINE_VEC(CartItem, CartItemVec, cart_item_vec, 32) - typedef enum { DbRes_Ok, DbRes_NotFound, @@ -19,14 +18,12 @@ typedef struct Db Db; /// `user.id` field is ignored. DbRes db_user_insert(Db* db, const User* user); -/// `user` field is an out parameter. +/// `user` field is an out parameter. DbRes db_user_with_id(Db* db, User* user, int64_t id); - /// Expects `ids` to be constructed. DbRes db_users_with_email(Db* db, Ids* ids, const char* email); - /// `user` is an out parameter. DbRes db_user_with_email(Db* db, User* user, const char* email); @@ -34,4 +31,3 @@ DbRes db_user_with_email(Db* db, User* user, const char* email); DbRes db_product_all(Db* db, ProductVec* vec); DbRes db_cart_items_with_user_id(Db* db, CartItemVec* vec, int64_t user_id); - diff --git a/backend/src/db_sqlite.c b/backend/src/db/db_sqlite.c similarity index 89% rename from backend/src/db_sqlite.c rename to backend/src/db/db_sqlite.c index a0d0633..05cd81e 100644 --- a/backend/src/db_sqlite.c +++ b/backend/src/db/db_sqlite.c @@ -1,7 +1,7 @@ #include "db_sqlite.h" +#include "../models.h" +#include "../str_util.h" #include "db.h" -#include "models.h" -#include "str_util.h" #include #include #include @@ -43,7 +43,8 @@ static inline DbRes connect(sqlite3** connection) { int res = sqlite3_open("database.db", connection); if (res != SQLITE_OK) { - fprintf(stderr, "error: could not open sqlite 'database.db'\n %s\n", + fprintf(stderr, + "error: could not open sqlite 'database.db'\n %s\n", sqlite3_errmsg(*connection)); return DbRes_Error; } @@ -79,7 +80,9 @@ DbRes db_user_insert(Db* db, const User* user) sqlite3_prepare_v2(connection, "INSERT INTO users (name, email, password_hash, balance_dkk_cent) " "VALUES (?, ?, ?, ?)", - -1, &stmt, NULL); + -1, + &stmt, + NULL); sqlite3_bind_text(stmt, 1, user->name, -1, SQLITE_STATIC); sqlite3_bind_text(stmt, 2, user->email, -1, SQLITE_STATIC); @@ -113,7 +116,9 @@ DbRes db_user_with_id(Db* db, User* user, int64_t id) sqlite3_prepare_v2(connection, "SELECT id, name, email, password_hash, balance_dkk_cent" " FROM users WHERE id = ?", - -1, &stmt, NULL); + -1, + &stmt, + NULL); sqlite3_bind_int64(stmt, 1, id); int step_res = sqlite3_step(stmt); @@ -185,10 +190,15 @@ DbRes db_user_with_email(Db* db, User* user, const char* email) int prepare_res = sqlite3_prepare_v2(connection, "SELECT id, name, email, password_hash, balance_dkk_cent" " FROM users WHERE email = ?", - -1, &stmt, NULL); + -1, + &stmt, + NULL); if (prepare_res != SQLITE_OK) { - fprintf(stderr, "error: %s\n at %s:%d\n", sqlite3_errmsg(connection), - __func__, __LINE__); + fprintf(stderr, + "error: %s\n at %s:%d\n", + sqlite3_errmsg(connection), + __func__, + __LINE__); res = DbRes_Error; goto l0_return; } @@ -200,8 +210,11 @@ DbRes db_user_with_email(Db* db, User* user, const char* email) goto l0_return; } else if (step_res != SQLITE_ROW) { printf("step_res = %d, email = '%s'\n", step_res, email); - fprintf(stderr, "error: %s\n at %s:%d\n", sqlite3_errmsg(connection), - __func__, __LINE__); + fprintf(stderr, + "error: %s\n at %s:%d\n", + sqlite3_errmsg(connection), + __func__, + __LINE__); res = DbRes_Error; goto l0_return; } @@ -231,8 +244,11 @@ DbRes db_product_all(Db* db, ProductVec* vec) sqlite3_stmt* stmt; sqlite_res = sqlite3_prepare_v2(connection, - "SELECT id, name, description, price_dkk_cent, coord, barcode FROM products", -1, - &stmt, NULL); + "SELECT id, name, description, price_dkk_cent, coord, barcode FROM " + "products", + -1, + &stmt, + NULL); if (sqlite_res != SQLITE_OK) { fprintf(stderr, "error: %s\n", sqlite3_errmsg(connection)); res = DbRes_Error; @@ -264,8 +280,8 @@ l0_return: return res; } - -DbRes db_cart_items_with_user_id(Db* db, CartItemVec* vec, int64_t user_id) { +DbRes db_cart_items_with_user_id(Db* db, CartItemVec* vec, int64_t user_id) +{ static_assert(sizeof(Cart) == 16, "model has changed"); static_assert(sizeof(CartItem) == 32, "model has changed"); @@ -277,10 +293,15 @@ DbRes db_cart_items_with_user_id(Db* db, CartItemVec* vec, int64_t user_id) { int sqlite_res = sqlite3_prepare_v2(connection, "SELECT id " " FROM carts WHERE user = ?", - -1, &stmt, NULL); + -1, + &stmt, + NULL); if (sqlite_res != SQLITE_OK) { - fprintf(stderr, "error: %s\n at %s:%d\n", sqlite3_errmsg(connection), - __func__, __LINE__); + fprintf(stderr, + "error: %s\n at %s:%d\n", + sqlite3_errmsg(connection), + __func__, + __LINE__); res = DbRes_Error; goto l0_return; } @@ -297,8 +318,11 @@ DbRes db_cart_items_with_user_id(Db* db, CartItemVec* vec, int64_t user_id) { } int64_t cart_id = GET_INT(0); - sqlite_res = sqlite3_prepare_v2( - connection, "SELECT id, cart, product, amount FROM cart_items WHERE cart = ?", -1, &stmt, NULL); + sqlite_res = sqlite3_prepare_v2(connection, + "SELECT id, cart, product, amount FROM cart_items WHERE cart = ?", + -1, + &stmt, + NULL); sqlite3_bind_int64(stmt, 1, cart_id); while ((sqlite_res = sqlite3_step(stmt)) == SQLITE_ROW) { @@ -322,6 +346,4 @@ l0_return: sqlite3_finalize(stmt); DISCONNECT; return res; - } - diff --git a/backend/src/db_sqlite.h b/backend/src/db/db_sqlite.h similarity index 100% rename from backend/src/db_sqlite.h rename to backend/src/db/db_sqlite.h diff --git a/backend/src/main.c b/backend/src/main.c index fd48688..ff6ed7f 100644 --- a/backend/src/main.c +++ b/backend/src/main.c @@ -1,5 +1,5 @@ #include "controllers/controllers.h" -#include "db_sqlite.h" +#include "db/db_sqlite.h" #include "http/http.h" #include "json.h" #include "models.h"