OpenDNSSEC-enforcer 2.1.13
database_version.c
Go to the documentation of this file.
1/*
2 * Copyright (c) 2014 Jerry Lundström <lundstrom.jerry@gmail.com>
3 * Copyright (c) 2014 .SE (The Internet Infrastructure Foundation).
4 * Copyright (c) 2014 OpenDNSSEC AB (svb)
5 * All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
9 * are met:
10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
17 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
22 * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
24 * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
25 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
26 * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 *
28*/
29
30#include "database_version.h"
31#include "db_error.h"
32
33
34#include <string.h>
35
41static db_object_t* __database_version_new_object(const db_connection_t* connection) {
42 db_object_field_list_t* object_field_list;
43 db_object_field_t* object_field;
44 db_object_t* object;
45
46 if (!(object = db_object_new())
47 || db_object_set_connection(object, connection)
48 || db_object_set_table(object, "databaseVersion")
49 || db_object_set_primary_key_name(object, "id")
50 || !(object_field_list = db_object_field_list_new()))
51 {
52 db_object_free(object);
53 return NULL;
54 }
55
56 if (!(object_field = db_object_field_new())
57 || db_object_field_set_name(object_field, "id")
59 || db_object_field_list_add(object_field_list, object_field))
60 {
61 db_object_field_free(object_field);
62 db_object_field_list_free(object_field_list);
63 db_object_free(object);
64 return NULL;
65 }
66
67 if (!(object_field = db_object_field_new())
68 || db_object_field_set_name(object_field, "rev")
70 || db_object_field_list_add(object_field_list, object_field))
71 {
72 db_object_field_free(object_field);
73 db_object_field_list_free(object_field_list);
74 db_object_free(object);
75 return NULL;
76 }
77
78 if (!(object_field = db_object_field_new())
79 || db_object_field_set_name(object_field, "version")
81 || db_object_field_list_add(object_field_list, object_field))
82 {
83 db_object_field_free(object_field);
84 db_object_field_list_free(object_field_list);
85 db_object_free(object);
86 return NULL;
87 }
88
89 if (db_object_set_object_field_list(object, object_field_list)) {
90 db_object_field_list_free(object_field_list);
91 db_object_free(object);
92 return NULL;
93 }
94
95 return object;
96}
97
98/* DATABASE VERSION */
99
100
101
104 (database_version_t*)calloc(1, sizeof(database_version_t));
105
106 if (database_version) {
107 if (!(database_version->dbo = __database_version_new_object(connection))) {
108 free(database_version);
109 return NULL;
110 }
113 }
114
115 return database_version;
116}
117
128
130 const db_value_set_t* value_set;
131
132 if (!database_version) {
133 return DB_ERROR_UNKNOWN;
134 }
135 if (!result) {
136 return DB_ERROR_UNKNOWN;
137 }
138
141 if (!(value_set = db_result_value_set(result))
142 || db_value_set_size(value_set) != 3
143 || db_value_copy(&(database_version->id), db_value_set_at(value_set, 0))
146 {
147 return DB_ERROR_UNKNOWN;
148 }
149
150 return DB_OK;
151}
152
154 if (!database_version) {
155 return 0;
156 }
157
159}
160
161/* DATABASE VERSION LIST */
162
163
164
168
170 if (!(database_version_list->dbo = __database_version_new_object(connection))) {
172 return NULL;
173 }
174 }
175
177}
178
203
204static int database_version_list_get_associated(database_version_list_t* database_version_list) {
206 return DB_OK;
207}
208
247
250
251 if (!connection) {
252 return NULL;
253 }
254
257 {
259 return NULL;
260 }
261
263}
264
266 const db_result_t* result;
267
269 return NULL;
270 }
271
275 return NULL;
276 }
278 return NULL;
279 }
281 return NULL;
282 }
285 }
289 }
290 else {
292 }
294 return NULL;
295 }
298 return NULL;
299 }
301 return NULL;
302 }
304 return NULL;
305 }
307 return NULL;
308 }
309 }
311 } else {
314 }
315
317 return NULL;
318 }
319
321 return NULL;
322 }
325 return NULL;
326 }
327 }
329 return NULL;
330 }
332}
unsigned int database_version_version(const database_version_t *database_version)
int database_version_list_get(database_version_list_t *database_version_list)
void database_version_list_free(database_version_list_t *database_version_list)
int database_version_from_result(database_version_t *database_version, const db_result_t *result)
const database_version_t * database_version_list_next(database_version_list_t *database_version_list)
database_version_list_t * database_version_list_new_get(const db_connection_t *connection)
database_version_t * database_version_new(const db_connection_t *connection)
database_version_list_t * database_version_list_new(const db_connection_t *connection)
void database_version_free(database_version_t *database_version)
#define DB_ERROR_UNKNOWN
Definition db_error.h:40
#define DB_OK
Definition db_error.h:36
const db_connection_t * db_object_connection(const db_object_t *object)
Definition db_object.c:320
db_object_field_t * db_object_field_new(void)
Definition db_object.c:40
int db_object_field_list_add(db_object_field_list_t *object_field_list, db_object_field_t *object_field)
Definition db_object.c:254
db_object_t * db_object_new(void)
Definition db_object.c:304
int db_object_set_table(db_object_t *object, const char *table)
Definition db_object.c:356
int db_object_field_set_name(db_object_field_t *object_field, const char *name)
Definition db_object.c:110
int db_object_set_connection(db_object_t *object, const db_connection_t *connection)
Definition db_object.c:341
db_result_list_t * db_object_read(const db_object_t *object, const db_join_list_t *join_list, const db_clause_list_t *clause_list)
Definition db_object.c:424
int db_object_field_set_type(db_object_field_t *object_field, db_type_t type)
Definition db_object.c:122
void db_object_free(db_object_t *object)
Definition db_object.c:311
db_object_field_list_t * db_object_field_list_new(void)
Definition db_object.c:174
int db_object_set_object_field_list(db_object_t *object, db_object_field_list_t *object_field_list)
Definition db_object.c:386
void db_object_field_free(db_object_field_t *object_field)
Definition db_object.c:69
void db_object_field_list_free(db_object_field_list_t *object_field_list)
Definition db_object.c:199
int db_object_set_primary_key_name(db_object_t *object, const char *primary_key_name)
Definition db_object.c:371
int db_result_list_fetch_all(db_result_list_t *result_list)
Definition db_result.c:341
size_t db_result_list_size(const db_result_list_t *result_list)
Definition db_result.c:333
const db_result_t * db_result_list_next(db_result_list_t *result_list)
Definition db_result.c:310
void db_result_list_free(db_result_list_t *result_list)
Definition db_result.c:160
const db_value_set_t * db_result_value_set(const db_result_t *result)
Definition db_result.c:97
@ DB_TYPE_PRIMARY_KEY
Definition db_type.h:62
@ DB_TYPE_REVISION
Definition db_type.h:97
@ DB_TYPE_UINT32
Definition db_type.h:70
const db_value_t * db_value_set_at(const db_value_set_t *value_set, size_t at)
Definition db_value.c:742
int db_value_copy(db_value_t *value, const db_value_t *from_value)
Definition db_value.c:77
size_t db_value_set_size(const db_value_set_t *value_set)
Definition db_value.c:734
int db_value_to_uint32(const db_value_t *value, db_type_uint32_t *to_uint32)
Definition db_value.c:372
void db_value_reset(db_value_t *value)
Definition db_value.c:60
db_result_list_t * result_list
database_version_t * database_version
database_version_t ** object_list
db_object_t * dbo
unsigned int version