diff options
Diffstat (limited to 'src/mint/taler-mint-dbinit.c')
-rw-r--r-- | src/mint/taler-mint-dbinit.c | 187 |
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; | |||
36 | static char *TALER_MINT_db_connection_cfg_str; | 36 | static char *TALER_MINT_db_connection_cfg_str; |
37 | 37 | ||
38 | 38 | ||
39 | static int | ||
40 | TALER_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; |