aboutsummaryrefslogtreecommitdiff
path: root/src/mint/taler-mint-dbinit.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mint/taler-mint-dbinit.c')
-rw-r--r--src/mint/taler-mint-dbinit.c187
1 files changed, 1 insertions, 186 deletions
diff --git a/src/mint/taler-mint-dbinit.c b/src/mint/taler-mint-dbinit.c
index 7611802ea..c5b0ae4c3 100644
--- a/src/mint/taler-mint-dbinit.c
+++ b/src/mint/taler-mint-dbinit.c
@@ -36,192 +36,7 @@ static PGconn *db_conn;
36static char *TALER_MINT_db_connection_cfg_str; 36static char *TALER_MINT_db_connection_cfg_str;
37 37
38 38
39static int
40TALER_MINT_init_withdraw_tables (PGconn *conn)
41{
42 PGresult *result;
43 result = PQexec (conn,
44 "CREATE TABLE IF NOT EXISTS reserves"
45 "("
46 " reserve_pub BYTEA PRIMARY KEY"
47 ",balance_value INT4 NOT NULL"
48 ",balance_fraction INT4 NOT NULL"
49 ",balance_currency VARCHAR(4) NOT NULL"
50 ",status_sig BYTEA"
51 ",status_sign_pub BYTEA"
52 ",expiration_date INT8 NOT NULL"
53 ")");
54 if (PGRES_COMMAND_OK != PQresultStatus(result))
55 {
56 break_db_err (result);
57 return GNUNET_SYSERR;
58 }
59 PQclear (result);
60
61 result = PQexec (conn,
62 "CREATE TABLE IF NOT EXISTS collectable_blindcoins"
63 "("
64 "blind_ev BYTEA PRIMARY KEY"
65 ",blind_ev_sig BYTEA NOT NULL"
66 ",denom_pub BYTEA NOT NULL"
67 ",reserve_sig BYTEA NOT NULL"
68 ",reserve_pub BYTEA NOT NULL REFERENCES reserves (reserve_pub)"
69 ")");
70 if (PGRES_COMMAND_OK != PQresultStatus(result))
71 {
72 break_db_err (result);
73 return GNUNET_SYSERR;
74 }
75 PQclear (result);
76
77 result = PQexec (conn,
78 "CREATE TABLE IF NOT EXISTS known_coins "
79 "("
80 " coin_pub BYTEA NOT NULL PRIMARY KEY"
81 ",denom_pub BYTEA NOT NULL"
82 ",denom_sig BYTEA NOT NULL"
83 ",expended_value INT4 NOT NULL"
84 ",expended_fraction INT4 NOT NULL"
85 ",expended_currency VARCHAR(4) NOT NULL"
86 ",refresh_session_pub BYTEA"
87 ")");
88 if (PGRES_COMMAND_OK != PQresultStatus(result))
89 {
90 break_db_err (result);
91 return GNUNET_SYSERR;
92 }
93 PQclear (result);
94
95 result = PQexec (conn,
96 "CREATE TABLE IF NOT EXISTS refresh_sessions "
97 "("
98 " session_pub BYTEA PRIMARY KEY CHECK (length(session_pub) = 32)"
99 ",session_melt_sig BYTEA"
100 ",session_commit_sig BYTEA"
101 ",noreveal_index INT2 NOT NULL"
102 // non-zero if all reveals were ok
103 // and the new coin signatures are ready
104 ",reveal_ok BOOLEAN NOT NULL DEFAULT false"
105 ") ");
106 if (PGRES_COMMAND_OK != PQresultStatus(result))
107 {
108 break_db_err (result);
109 return GNUNET_SYSERR;
110 }
111 PQclear (result);
112
113 result = PQexec (conn,
114 "CREATE TABLE IF NOT EXISTS refresh_order "
115 "( "
116 " session_pub BYTEA NOT NULL REFERENCES refresh_sessions (session_pub)"
117 ",newcoin_index INT2 NOT NULL "
118 ",denom_pub BYTEA NOT NULL "
119 ",PRIMARY KEY (session_pub, newcoin_index)"
120 ") ");
121
122 if (PGRES_COMMAND_OK != PQresultStatus(result))
123 {
124 break_db_err (result);
125 return GNUNET_SYSERR;
126 }
127 PQclear (result);
128
129
130 result = PQexec (conn,
131 "CREATE TABLE IF NOT EXISTS refresh_commit_link"
132 "("
133 " session_pub BYTEA NOT NULL REFERENCES refresh_sessions (session_pub)"
134 ",transfer_pub BYTEA NOT NULL"
135 ",link_secret_enc BYTEA NOT NULL"
136 // index of the old coin in the customer's request
137 ",oldcoin_index INT2 NOT NULL"
138 // index for cut and choose,
139 // ranges from 0 to kappa-1
140 ",cnc_index INT2 NOT NULL"
141 ")");
142
143 if (PGRES_COMMAND_OK != PQresultStatus(result))
144 {
145 break_db_err (result);
146 return GNUNET_SYSERR;
147 }
148 PQclear (result);
149
150 result = PQexec (conn,
151 "CREATE TABLE IF NOT EXISTS refresh_commit_coin"
152 "("
153 " session_pub BYTEA NOT NULL REFERENCES refresh_sessions (session_pub) "
154 ",link_vector_enc BYTEA NOT NULL"
155 // index of the new coin in the customer's request
156 ",newcoin_index INT2 NOT NULL"
157 // index for cut and choose,
158 ",cnc_index INT2 NOT NULL"
159 ",coin_ev BYTEA NOT NULL"
160 ")");
161
162 if (PGRES_COMMAND_OK != PQresultStatus(result))
163 {
164 break_db_err (result);
165 return GNUNET_SYSERR;
166 }
167 PQclear (result);
168
169 result = PQexec (conn,
170 "CREATE TABLE IF NOT EXISTS refresh_melt"
171 "("
172 " session_pub BYTEA NOT NULL REFERENCES refresh_sessions (session_pub) "
173 ",coin_pub BYTEA NOT NULL REFERENCES known_coins (coin_pub) "
174 ",denom_pub BYTEA NOT NULL "
175 ",oldcoin_index INT2 NOT NULL"
176 ")");
177
178 if (PGRES_COMMAND_OK != PQresultStatus(result))
179 {
180 break_db_err (result);
181 return GNUNET_SYSERR;
182 }
183 PQclear (result);
184 39
185 result = PQexec (conn,
186 "CREATE TABLE IF NOT EXISTS refresh_collectable"
187 "("
188 " session_pub BYTEA NOT NULL REFERENCES refresh_sessions (session_pub) "
189 ",ev_sig BYTEA NOT NULL"
190 ",newcoin_index INT2 NOT NULL"
191 ")");
192
193 if (PGRES_COMMAND_OK != PQresultStatus(result))
194 {
195 break_db_err (result);
196 return GNUNET_SYSERR;
197 }
198 PQclear (result);
199
200 result = PQexec (conn,
201 "CREATE TABLE IF NOT EXISTS deposits "
202 "( "
203 " coin_pub BYTEA NOT NULL PRIMARY KEY CHECK (length(coin_pub)=32)"
204 ",denom_pub BYTEA NOT NULL CHECK (length(denom_pub)=32)"
205 ",transaction_id INT8 NOT NULL"
206 ",amount_currency VARCHAR(4) NOT NULL"
207 ",amount_value INT4 NOT NULL"
208 ",amount_fraction INT4 NOT NULL"
209 ",merchant_pub BYTEA NOT NULL"
210 ",h_contract BYTEA NOT NULL CHECK (length(h_contract)=64)"
211 ",h_wire BYTEA NOT NULL CHECK (length(h_wire)=64)"
212 ",coin_sig BYTEA NOT NULL CHECK (length(coin_sig)=64)"
213 ",wire TEXT NOT NULL"
214 ")");
215
216 if (PGRES_COMMAND_OK != PQresultStatus(result))
217 {
218 break_db_err (result);
219 return GNUNET_SYSERR;
220 }
221 PQclear (result);
222
223 return GNUNET_OK;
224}
225 40
226 41
227/** 42/**
@@ -271,7 +86,7 @@ main (int argc, char *const *argv)
271 return 1; 86 return 1;
272 } 87 }
273 88
274 if (GNUNET_OK != TALER_MINT_init_withdraw_tables (db_conn)) 89 if (GNUNET_OK != TALER_MINT_DB_create_tables (db_conn))
275 { 90 {
276 fprintf (stderr, "Failed to initialize database.\n"); 91 fprintf (stderr, "Failed to initialize database.\n");
277 return 1; 92 return 1;