GnuCashew ~ GnuCash Enabled Web
GCW
Item.h
Go to the documentation of this file.
1 #line 2 "src/Dbo/Commodities/Item.h"
2 
3 #ifndef __DBO_COMMODITIES_ITEM_H___
4 #define __DBO_COMMODITIES_ITEM_H___
5 
6 #include "../BaseItem.h"
7 #include "Definition.h"
8 
9 /*
10 ** Predefine the Account class that fixin to come up.
11 **
12 */
13 namespace GCW {
14  namespace Dbo {
15  namespace Commodities {
16  class Item;
17  }
18  }
19 }
20 
21 /*
22 ** Define these dbo_traits to prevent the system from
23 ** automatically generating an ID field or a VERSION
24 ** field, and instead substitute the guid field
25 ** as the primary key.
26 **
27 */
28 template<> struct Wt::Dbo::dbo_traits< GCW::Dbo::Commodities::Item >
29 : public Wt::Dbo::dbo_default_traits
30 {
31  using IdType = std::string;
32  static auto invalidId()-> IdType { return std::string(); }
33  static auto surrogateIdField()-> const char * { return nullptr; }
34  static auto versionField()-> const char * { return nullptr; }
35 };
36 
37 template<> struct Wt::Dbo::dbo_traits< const GCW::Dbo::Commodities::Item > : Wt::Dbo::dbo_traits< GCW::Dbo::Commodities::Item > {};
38 
39 /*
40 ** Now we can start building our class!
41 **
42 */
43 namespace GCW {
44  namespace Dbo {
45  namespace Commodities {
46 
47 /*!
48 ** \brief Commodity Item Class
49 **
50 ** This class represents an 'commodity' within gnucash. This is a Dbo object
51 ** so this class is used as the interface between the gnucashew application
52 ** and the back-end database.
53 **
54 ** \dot
55 ** digraph AccountMap
56 ** {
57 ** CommodityItem;
58 ** }
59 ** \enddot
60 **
61 ** \par Native GnuCash Commodity Sqlite Schema
62 ** \code
63 ** CREATE TABLE commodities
64 ** (
65 ** guid text(32) PRIMARY KEY NOT NULL,
66 ** namespace text(2048) NOT NULL,
67 ** mnemonic text(2048) NOT NULL,
68 ** fullname text(2048),
69 ** cusip text(2048),
70 ** fraction integer NOT NULL,
71 ** quote_flag integer NOT NULL,
72 ** quote_source text(2048),
73 ** quote_tz text(2048)
74 ** );
75 ** sqlite> select * from "commodities";
76 ** 0824002aba074c8aa1326c6697649d65|CURRENCY|USD|US Dollar|840|100|1|currency|
77 ** \endcode
78 **
79 */
80 class Item
81 : public GCW::Dbo::BaseItem< Item >
82 {
83  public:
84 
85  /*!
86  ** \brief ctor
87  */
88  Item(){}
89 
90  /*!
91  ** \brief ctor with guid.
92  */
93  Item( const std::string & _guid ): m_guid( _guid ){}
94 
95  /*!
96  ** \brief GUID
97  **
98  ** Return account 'guid' value - the primary key for the account
99  */
100  auto guid() const-> const std::string & { return m_guid; }
101 
102  /*!
103  ** \brief Name
104  **
105  ** Return account printable 'name' value
106  */
107  auto nameSpace() const-> const std::string & { return m_nameSpace; }
108 
109  /*!
110  ** \brief persist the data
111  **
112  ** This connects this object to the back-end database.
113  */
114  template< class Action > void persist( Action & action )
115  {
116  Wt::Dbo::id ( action, m_guid , GCW::Dbo::Commodities::Field::guid , 32 ); // text(32) PRIMARY KEY NOT NULL
117  Wt::Dbo::field( action, m_nameSpace , GCW::Dbo::Commodities::Field::nameSpace , 2048 ); // text(2048) NOT NULL
118  Wt::Dbo::field( action, m_mnemonic , GCW::Dbo::Commodities::Field::mnemonic , 2048 ); // text(2048) NOT NULL
119  Wt::Dbo::field( action, m_fullname , GCW::Dbo::Commodities::Field::fullname , 2048 ); // text(2048)
120  Wt::Dbo::field( action, m_cusip , GCW::Dbo::Commodities::Field::cusip , 2048 ); // text(2048)
121  Wt::Dbo::field( action, m_fraction , GCW::Dbo::Commodities::Field::fraction ); // integer NOT NULL
122  Wt::Dbo::field( action, m_quote_flag , GCW::Dbo::Commodities::Field::quote_flag ); // integer NOT NULL
123  Wt::Dbo::field( action, m_quote_source , GCW::Dbo::Commodities::Field::quote_source , 2048 ); // text(2048)
124  Wt::Dbo::field( action, m_quote_tz , GCW::Dbo::Commodities::Field::quote_tz , 2048 ); // text(2048)
125  }
126 
127  private:
128 
129  std::string m_guid ;
130  std::string m_nameSpace ;
131  std::string m_mnemonic ;
132  std::string m_fullname ;
133  std::string m_cusip ;
136  std::string m_quote_source ;
137  std::string m_quote_tz ;
138 
139 }; // endclass Item
140 
141  } // endnamespace Commodities {
142  } // endnamespace Dbo {
143 } // endnamespace GCW {
144 
145 #endif // __COMMODITIES_H___
146 
147 
Commodity Item Class.
Definition: Item.h:82
std::string m_quote_source
Definition: Item.h:136
std::string m_quote_tz
Definition: Item.h:137
std::string m_cusip
Definition: Item.h:133
auto nameSpace() const -> const std::string &
Name.
Definition: Item.h:107
void persist(Action &action)
persist the data
Definition: Item.h:114
auto guid() const -> const std::string &
GUID.
Definition: Item.h:100
std::string m_nameSpace
Definition: Item.h:130
std::string m_mnemonic
Definition: Item.h:131
std::string m_guid
Definition: Item.h:129
Item(const std::string &_guid)
ctor with guid.
Definition: Item.h:93
std::string m_fullname
Definition: Item.h:132
const Wt::WFormModel::Field cusip
Definition: Commodities.cpp:40
const Wt::WFormModel::Field fullname
Definition: Commodities.cpp:39
const Wt::WFormModel::Field nameSpace
Definition: Commodities.cpp:37
const Wt::WFormModel::Field guid
Definition: Commodities.cpp:36
const Wt::WFormModel::Field fraction
Definition: Commodities.cpp:41
const Wt::WFormModel::Field mnemonic
Definition: Commodities.cpp:38
const Wt::WFormModel::Field quote_source
Definition: Commodities.cpp:43
const Wt::WFormModel::Field quote_tz
Definition: Commodities.cpp:44
const Wt::WFormModel::Field quote_flag
Definition: Commodities.cpp:42
const Wt::WFormModel::Field action
Definition: Entries.cpp:14
const Wt::WFormModel::Field id
Definition: Definition.h:17
Definition: App.h:17
Definition: guid.cpp:397
static auto surrogateIdField() -> const char *
Definition: Item.h:33
static auto versionField() -> const char *
Definition: Item.h:34