GnuCashew ~ Web Application compatible with GnuCash sql data files.
GCW
Loading...
Searching...
No Matches
Dbo/Commodities/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*/
13namespace 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*/
28template<> struct Wt::Dbo::dbo_traits< GCW::Dbo::Commodities::Item >
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
37template<> 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*/
43namespace 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*/
80class 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)
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
auto nameSpace() const -> const std::string &
Name.
void persist(Action &action)
persist the data
auto guid() const -> const std::string &
GUID.
Item(const std::string &_guid)
ctor with guid.
void id(Action &action, V &value, const std::string &name="id", int size=-1)
void field(Action &action, V &value, const std::string &name, int size=-1)
const Wt::WFormModel::Field cusip
const Wt::WFormModel::Field fullname
const Wt::WFormModel::Field nameSpace
const Wt::WFormModel::Field guid
const Wt::WFormModel::Field fraction
const Wt::WFormModel::Field mnemonic
const Wt::WFormModel::Field quote_source
const Wt::WFormModel::Field quote_tz
const Wt::WFormModel::Field quote_flag
Definition App.h:18