LiteSQL 0.3.10
persistent.hpp
Go to the documentation of this file.
1/* LiteSQL
2 *
3 * The list of contributors at http://litesql.sf.net/
4 *
5 * See LICENSE for copyright information. */
6
7#ifndef litesql_persistent_hpp
8#define litesql_persistent_hpp
9
10#include <memory>
11#include <string>
12#include <vector>
13#include <functional>
14#include <map>
15#include "litesql/utils.hpp"
16#include "litesql/database.hpp"
17#include "litesql/cursor.hpp"
18#include "litesql/expr.hpp"
20#include "litesql/relation.hpp"
22
26
27namespace litesql {
28
34protected:
35 typedef std::map<std::string, std::vector<pair<FieldType, std::string> > > Updates;
37 std::string insert(Record& tables,
38 Records& fieldRecs,
39 Records& values,
40 const std::string& sequence);
41 void update(const Updates& updates);
42 template <class T>
43 void updateField(litesql::Persistent::Updates& updates,
44 const std::string& table,
46 if (fld.modified()) {
47 updates[table].push_back(make_pair(fld.fieldType(),
49 fld.setModified(false);
50 }
51 }
52 void prepareUpdate(Updates& updates, const std::string& table);
53 void deleteFromTable(const std::string& table, const std::string& id);
57 const Database *db;
64 int oldKey;
65public:
67 const Database & getDatabase() const {
68 return *db;
69 }
70
71 bool isInDatabase() const {
72 return inDatabase;
73 }
74
75 const Persistent & operator=(const Persistent & p);
79 Persistent(const Database & _db, const Record & row)
80 : db(&_db), inDatabase(true), oldKey(0) {
81 if (row.size() > 0)
82 oldKey = atoi(row[0]);
83 }
85 Persistent(const Database & _db)
86 : db(&_db), inDatabase(false), oldKey(0) {}
87 virtual void onDelete() {}
89 virtual ~Persistent() {}
92 static Split getTablesFromFieldTypes(const std::vector<FieldType> & fdatas);
93
96// virtual void getTables(Split & tables) const =0 ;
97};
98
99}
100#endif
A base class of databases.
Definition database.hpp:37
holds field value
Definition field.hpp:73
An abstract base class of persistents objects.
Definition persistent.hpp:33
const Persistent & operator=(const Persistent &p)
copies values and keeps fields unchanged
Definition persistent.cpp:14
bool inDatabase
flag that indicates that object is stored in some database.
Definition persistent.hpp:60
virtual ~Persistent()
empty
Definition persistent.hpp:89
bool isInDatabase() const
returns true if object is in database
Definition persistent.hpp:71
const Database * db
pointer to current Database Persistent is assigned to.
Definition persistent.hpp:57
Persistent(const Database &_db)
creates empty Persistent
Definition persistent.hpp:85
const Database & getDatabase() const
returns reference to Database the object is in
Definition persistent.hpp:67
int oldKey
used to keep track of ID changes.
Definition persistent.hpp:64
std::string insert(Record &tables, Records &fieldRecs, Records &values, const std::string &sequence)
executed when object is created into database
Definition persistent.cpp:23
Persistent(const Persistent &p)
copies values and registers Field-objects to fields
Definition persistent.hpp:77
static Split getTablesFromFieldTypes(const std::vector< FieldType > &fdatas)
selectObjectQuery uses this to list tables used by Persistent
SQL data row wrapper.
Definition types.hpp:20
splits and joins strings.
Definition split.hpp:15
Contains class Cursor.
Database-class.
Contains Expr-class hierarchy and operator overloadings for them.
To convert(From value)
convert function
select<T>, intersect<T>, union_<T>, except<T>
See Using Relations.
contains SelectQuery-class.
int atoi(const std::string &s)
string version of atoi
std::vector< Record > Records
shortcut
Definition types.hpp:26
includes string.hpp and split.hpp

SourceForge.net Logo