#ifndef __DATABASE_H__ #define __DATABASE_H__ #include #include "sqlite_orm.h" #include "ShadowrunDb.hpp" #include "loginDb.hpp" inline auto make_database(const std::string& path) { auto storage = sqlite_orm::make_storage(path, sqlite_orm::make_table("users", sqlite_orm::make_column("id", &login::User::id, sqlite_orm::primary_key()), sqlite_orm::make_column("username", &login::User::username, sqlite_orm::unique() ), sqlite_orm::make_column("salt", &login::User::salt, sqlite_orm::not_null()), sqlite_orm::make_column("password_hash", &login::User::password_hash, sqlite_orm::not_null()), sqlite_orm::make_column("created_at", &login::User::created_at, sqlite_orm::default_value("CURRENT_TIMESTAMP")) ), sqlite_orm::make_table("shadowrun_characters", sqlite_orm::make_column("id", &shadowrun::ShadowrunCharacter::id, sqlite_orm::primary_key()), sqlite_orm::make_column("name", &shadowrun::ShadowrunCharacter::name, sqlite_orm::not_null()), sqlite_orm::make_column("created_at", &shadowrun::ShadowrunCharacter::created_at, sqlite_orm::default_value("CURRENT_TIMESTAMP")) ), sqlite_orm::make_table("shadowrun_characters_data", sqlite_orm::make_column("id", &shadowrun::ShadowrunCharacterData::id, sqlite_orm::primary_key()), sqlite_orm::make_column("character_id", &shadowrun::ShadowrunCharacterData::character_id, sqlite_orm::not_null()), sqlite_orm::make_column("type", &shadowrun::ShadowrunCharacterData::type, sqlite_orm::not_null()), sqlite_orm::make_column("json", &shadowrun::ShadowrunCharacterData::json), sqlite_orm::make_column("created_at", &shadowrun::ShadowrunCharacterData::created_at, sqlite_orm::default_value("CURRENT_TIMESTAMP")), sqlite_orm::make_column("updated_at", &shadowrun::ShadowrunCharacterData::updated_at, sqlite_orm::default_value("CURRENT_TIMESTAMP")), sqlite_orm::foreign_key(&shadowrun::ShadowrunCharacterData::character_id).references(&shadowrun::ShadowrunCharacter::id).on_delete.cascade() )); return storage; } #endif // __DATABASE_H__