3
3
#include " persister.h"
4
4
#include < iostream>
5
5
6
- EntityRegistry::EntityRegistry ()
7
- : db (" ./db/matrix.db" , SQLite::OPEN_READWRITE | SQLite::OPEN_CREATE)
8
- {
6
+ EntityRegistry::EntityRegistry () {
7
+ db = std::make_shared<SQLite::Database> (" ./db/matrix.db" ,
8
+ SQLite::OPEN_READWRITE | SQLite::OPEN_CREATE);
9
9
}
10
10
11
- SQLite::Database&
12
- EntityRegistry::getDatabase ()
11
+ SQLite::Database &EntityRegistry::getDatabase ()
13
12
{
14
- return db;
13
+ return * db;
15
14
}
16
15
17
16
void
18
17
EntityRegistry::createTablesIfNeeded ()
19
18
{
20
- db. exec (" CREATE TABLE IF NOT EXISTS Entity "
19
+ db-> exec (" CREATE TABLE IF NOT EXISTS Entity "
21
20
" (id INTEGER PRIMARY KEY)" );
22
21
23
22
for (auto persister : persisters) {
@@ -44,7 +43,7 @@ EntityRegistry::save(entt::entity e)
44
43
void
45
44
EntityRegistry::loadAll ()
46
45
{
47
- SQLite::Statement query (db, " SELECT * FROM Entity" );
46
+ SQLite::Statement query (* db, " SELECT * FROM Entity" );
48
47
while (query.executeStep ()) {
49
48
int entityId = query.getColumn (0 ).getInt ();
50
49
entt::entity newEntity = create ();
@@ -74,9 +73,9 @@ EntityRegistry::addPersister(std::shared_ptr<SQLPersister> p)
74
73
entt::entity
75
74
EntityRegistry::createPersistent ()
76
75
{
77
- SQLite::Statement query (db, " INSERT INTO Entity (id) VALUES (NULL)" );
76
+ SQLite::Statement query (* db, " INSERT INTO Entity (id) VALUES (NULL)" );
78
77
query.exec ();
79
- int64_t id = db. getLastInsertRowid ();
78
+ int64_t id = db-> getLastInsertRowid ();
80
79
auto rv = this ->create ();
81
80
emplace<Persistable>(rv, id);
82
81
entityLocator[id] = rv;
@@ -91,7 +90,7 @@ EntityRegistry::depersist(entt::entity entity)
91
90
for (auto persister : persisters) {
92
91
persister->depersist (entity);
93
92
}
94
- SQLite::Statement query (db, " DELETE FROM Entity WHERE id = ?" );
93
+ SQLite::Statement query (* db, " DELETE FROM Entity WHERE id = ?" );
95
94
query.bind (1 , persistable.entityId );
96
95
query.exec ();
97
96
destroy (entity);
0 commit comments