36 lines
2.2 KiB
C++
36 lines
2.2 KiB
C++
#ifndef __DATABASE_H__
|
|
#define __DATABASE_H__
|
|
|
|
#include <string>
|
|
#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__
|