Wed, 10 Dec 2025 18:36:02 +0100
implement json child object serialization
|
0
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1 | /* |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2 | * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
3 | * |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
4 | * Copyright 2017 Olaf Wintermann. All rights reserved. |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
5 | * |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
6 | * Redistribution and use in source and binary forms, with or without |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
7 | * modification, are permitted provided that the following conditions are met: |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
8 | * |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
9 | * 1. Redistributions of source code must retain the above copyright |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
10 | * notice, this list of conditions and the following disclaimer. |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
11 | * |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
12 | * 2. Redistributions in binary form must reproduce the above copyright |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
13 | * notice, this list of conditions and the following disclaimer in the |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
14 | * documentation and/or other materials provided with the distribution. |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
15 | * |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
16 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
17 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
18 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
19 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
20 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
21 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
22 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
23 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
24 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
25 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
26 | * POSSIBLIITY OF SUCH DAMAGE. |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
27 | */ |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
28 | |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
29 | #include <stdio.h> |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
30 | #include <sqlite3.h> |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
31 | |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
32 | #include <dbutils/dbutils.h> |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
33 | #include <dbutils/sqlite.h> |
|
3
69ea9040d896
add DB abstraction layer
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
0
diff
changeset
|
34 | #include <dbutils/db.h> |
|
0
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
35 | |
| 23 | 36 | #include <cx/test.h> |
|
8
bd08116b8af4
add support for list members to the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
7
diff
changeset
|
37 | #include <cx/buffer.h> |
|
bd08116b8af4
add support for list members to the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
7
diff
changeset
|
38 | #include <cx/printf.h> |
|
bd08116b8af4
add support for list members to the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
7
diff
changeset
|
39 | |
| 23 | 40 | #include "database.h" |
|
26
dc36aa437249
implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
25
diff
changeset
|
41 | #include "json.h" |
| 23 | 42 | |
|
0
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
43 | const char *sql_create_table_person = |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
44 | "create table if not exists Person (" |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
45 | "person_id integer primary key autoincrement, " |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
46 | "name text, " |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
47 | "email text, " |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
48 | "age integer, " |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
49 | "iscustomer integer , " |
|
5
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
50 | "hash integer, " |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
51 | "address_id integer);"; |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
52 | |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
53 | const char *sql_create_table_address = |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
54 | "create table if not exists Address (" |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
55 | "address_id integer primary key autoincrement, " |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
56 | "street text, " |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
57 | "zip text, " |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
58 | "city text);"; |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
59 | |
|
7
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
60 | const char *sql_create_table_role = |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
61 | "create table if not exists Role (" |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
62 | "role_id integer primary key autoincrement, " |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
63 | "person_id integer, " |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
64 | "name text);"; |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
65 | |
|
0
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
66 | |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
67 | const char *sql_check_table = |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
68 | "select person_id from Person limit 1;"; |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
69 | |
|
5
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
70 | const char *sql_create_test_data1 = |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
71 | "insert into address (street, zip, city) " |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
72 | "values " |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
73 | "('street 1', '12343', 'city 17'), " |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
74 | "('street 2', '23456', 'city 18');"; |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
75 | |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
76 | const char *sql_create_test_data2 = |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
77 | "insert into person (name, email, age, iscustomer, hash, address_id) " |
|
0
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
78 | "values " |
|
7
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
79 | "('alice', 'alice@example.com', 30, 0, 123456789, (select address_id from address where street = 'street 1')), " |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
80 | "('bob', 'bob@example.com', 25, 1, 987654321, (select address_id from address where street = 'street 2'));"; |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
81 | |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
82 | const char *sql_create_test_data3 = |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
83 | "insert into role (person_id, name) " |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
84 | "values " |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
85 | "(1, 'finance'), " |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
86 | "(1, 'dev'), " |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
87 | "(1, 'manager'), " |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
88 | "(2, 'extern');"; |
|
5
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
89 | |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
90 | typedef struct Address { |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
91 | int64_t address_id; |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
92 | |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
93 | cxmutstr street; |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
94 | cxmutstr zip; |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
95 | cxmutstr city; |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
96 | } Address; |
|
0
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
97 | |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
98 | typedef struct Person { |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
99 | int64_t person_id; |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
100 | |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
101 | cxmutstr name; |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
102 | cxmutstr email; |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
103 | int age; |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
104 | bool iscustomer; |
|
5
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
105 | uint64_t hash; |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
106 | |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
107 | Address *address; |
|
7
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
108 | |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
109 | CxList *roles; |
|
0
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
110 | } Person; |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
111 | |
|
7
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
112 | typedef struct Role { |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
113 | int64_t role_id; |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
114 | int64_t person_id; |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
115 | cxmutstr name; |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
116 | } Role; |
|
5
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
117 | |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
118 | |
|
0
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
119 | static int create_test_data(sqlite3 *db); |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
120 | |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
121 | int main(int argc, char **argv) { |
| 23 | 122 | CxTestSuite *suite = cx_test_suite_new("dbu"); |
|
0
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
123 | |
|
26
dc36aa437249
implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
25
diff
changeset
|
124 | init_json_tests(); |
| 23 | 125 | #ifdef DBU_SQLITE |
| 126 | if(init_test_db() || init_db_tests()) { | |
| 127 | return 1; | |
| 128 | } | |
| 129 | ||
| 130 | cx_test_register(suite, testSqliteConnection); | |
| 131 | cx_test_register(suite, testConnectionExec); | |
| 132 | cx_test_register(suite, testSingleValueQuery); | |
|
24
df671b62538e
add dbuSqlExec API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
23
diff
changeset
|
133 | cx_test_register(suite, testSqlExec); |
|
df671b62538e
add dbuSqlExec API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
23
diff
changeset
|
134 | cx_test_register(suite, testSqlExecParam); |
|
25
0bb91d1f9bba
add single table query test
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
24
diff
changeset
|
135 | cx_test_register(suite, testSingleTableQuery); |
| 23 | 136 | #endif |
|
26
dc36aa437249
implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
25
diff
changeset
|
137 | cx_test_register(suite, testObjectToJsonSimple); |
|
28
e46f9f254fcd
implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
26
diff
changeset
|
138 | cx_test_register(suite, testObjectToJsonChildObj); |
| 23 | 139 | |
| 140 | cx_test_run_stdout(suite); | |
| 141 | ||
| 142 | ||
| 143 | #ifdef DBU_SQLITE | |
| 144 | cleanup_db_tests(); | |
| 145 | #endif | |
|
26
dc36aa437249
implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
25
diff
changeset
|
146 | cleanup_json_tests(); |
| 23 | 147 | |
| 148 | /* | |
|
0
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
149 | |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
150 | DBUContext *ctx = dbuContextCreate(); |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
151 | |
|
5
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
152 | DBUClass *address = dbuRegisterClass(ctx, "address", Address, address_id); |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
153 | dbuClassAdd(address, Address, street); |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
154 | dbuClassAdd(address, Address, zip); |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
155 | dbuClassAdd(address, Address, city); |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
156 | |
|
7
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
157 | DBUClass *role = dbuRegisterClass(ctx, "role", Role, role_id); |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
158 | |
|
0
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
159 | DBUClass *person = dbuRegisterClass(ctx, "person", Person, person_id); |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
160 | dbuClassAdd(person, Person, name); |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
161 | dbuClassAdd(person, Person, email); |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
162 | dbuClassAdd(person, Person, age); |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
163 | dbuClassAdd(person, Person, iscustomer); |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
164 | dbuClassAdd(person, Person, hash); |
|
5
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
165 | dbuClassAddObj(person, "address_id", offsetof(Person, address), address); |
|
7
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
166 | dbuClassAddCxLinkedList(person, "person_id", offsetof(Person, roles), role); |
|
0
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
167 | |
|
7
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
168 | dbuClassAddForeignKey(role, Role, person_id, person); |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
169 | dbuClassAdd(role, Role, name); |
|
0
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
170 | |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
171 | // Open or create the database |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
172 | sqlite3 *db; |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
173 | int rc = sqlite3_open("test.db", &db); |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
174 | if(rc != SQLITE_OK) { |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
175 | fprintf(stderr, "Cannot open database: %s\n", sqlite3_errmsg(db)); |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
176 | sqlite3_close(db); |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
177 | return 1; |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
178 | } |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
179 | |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
180 | if(create_test_data(db)) { |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
181 | return 1; |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
182 | } |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
183 | |
|
3
69ea9040d896
add DB abstraction layer
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
0
diff
changeset
|
184 | DBUConnection *conn = dbuSQLiteConnectionFromDB(db, true); |
|
12
421555fa9ce4
add dbuConnectionExec
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
11
diff
changeset
|
185 | |
|
421555fa9ce4
add dbuConnectionExec
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
11
diff
changeset
|
186 | // test dbuConnectionExec |
|
421555fa9ce4
add dbuConnectionExec
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
11
diff
changeset
|
187 | int execResult = dbuConnectionExec(conn, "drop table if exists test_table;"); |
|
421555fa9ce4
add dbuConnectionExec
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
11
diff
changeset
|
188 | printf("exec result: %d\n\n", execResult); |
|
421555fa9ce4
add dbuConnectionExec
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
11
diff
changeset
|
189 | |
|
14
59e62e65182c
add convenience functions for getting a single value from results
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
12
diff
changeset
|
190 | |
|
59e62e65182c
add convenience functions for getting a single value from results
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
12
diff
changeset
|
191 | // single value query |
|
59e62e65182c
add convenience functions for getting a single value from results
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
12
diff
changeset
|
192 | DBUQuery *q0 = conn->createQuery(conn, NULL); |
|
59e62e65182c
add convenience functions for getting a single value from results
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
12
diff
changeset
|
193 | dbuQuerySetSQL(q0, "select 'hello world';"); |
|
59e62e65182c
add convenience functions for getting a single value from results
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
12
diff
changeset
|
194 | q0->exec(q0); |
|
59e62e65182c
add convenience functions for getting a single value from results
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
12
diff
changeset
|
195 | DBUResult *r0 = q0->getResult(q0); |
|
59e62e65182c
add convenience functions for getting a single value from results
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
12
diff
changeset
|
196 | char *str; |
|
59e62e65182c
add convenience functions for getting a single value from results
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
12
diff
changeset
|
197 | if(!dbuResultAsValue(r0, &str)) { |
|
59e62e65182c
add convenience functions for getting a single value from results
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
12
diff
changeset
|
198 | printf("single query value: %s\n\n", str); |
|
59e62e65182c
add convenience functions for getting a single value from results
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
12
diff
changeset
|
199 | free(str); |
|
59e62e65182c
add convenience functions for getting a single value from results
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
12
diff
changeset
|
200 | } |
|
59e62e65182c
add convenience functions for getting a single value from results
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
12
diff
changeset
|
201 | |
|
3
69ea9040d896
add DB abstraction layer
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
0
diff
changeset
|
202 | DBUQuery *query = conn->createQuery(conn, NULL); |
|
5
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
203 | dbuQuerySetSQL(query, "select p.*, a.address_id as [__address__address_id], a.street, a.zip, a.city from Person p inner join Address a on p.address_id = a.address_id;"); |
|
4
1908c8b1599f
add new object builder API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
3
diff
changeset
|
204 | |
|
7
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
205 | DBUQuery *roleQuery = conn->createQuery(conn, NULL); |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
206 | dbuQuerySetSQL(roleQuery, "select * from role;"); |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
207 | |
|
10
80f9d007cb52
implement dense results
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
8
diff
changeset
|
208 | DBUQuery *query2 = conn->createQuery(conn, NULL); |
|
11
0aa8cbd7912e
refactor dbuObjectExecuteQuery: replace multiple lists with a single ll list
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
10
diff
changeset
|
209 | dbuQuerySetSQL(query2, "select p.*, a.address_id as [__address__address_id], a.street, a.zip, a.city, r.role_id as [__role__role_id], r.person_id, r.name from Person p inner join Address a on p.address_id = a.address_id left join Role r on p.person_id = r.person_id order by p.person_id, r.role_id;"); |
|
10
80f9d007cb52
implement dense results
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
8
diff
changeset
|
210 | |
|
80f9d007cb52
implement dense results
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
8
diff
changeset
|
211 | DBUObjectBuilder *builder = dbuObjectBuilder(person, query2, cxDefaultAllocator); |
|
80f9d007cb52
implement dense results
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
8
diff
changeset
|
212 | dbuObjectBuilderSetDenseResult(builder, true); |
|
80f9d007cb52
implement dense results
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
8
diff
changeset
|
213 | //dbuObjectBuilderAddAdditionalQuery(builder, role, roleQuery); |
|
4
1908c8b1599f
add new object builder API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
3
diff
changeset
|
214 | CxList *persons = dbuObjectBuilderGetList(builder); |
|
0
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
215 | if(persons) { |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
216 | CxIterator i = cxListIterator(persons); |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
217 | cx_foreach(Person *, p, i) { |
|
8
bd08116b8af4
add support for list members to the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
7
diff
changeset
|
218 | CxBuffer rolebuffer; |
|
bd08116b8af4
add support for list members to the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
7
diff
changeset
|
219 | cxBufferInit(&rolebuffer, NULL, 256, 0, CX_BUFFER_AUTO_EXTEND|CX_BUFFER_FREE_CONTENTS); |
|
bd08116b8af4
add support for list members to the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
7
diff
changeset
|
220 | cxBufferPut(&rolebuffer, '['); |
|
bd08116b8af4
add support for list members to the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
7
diff
changeset
|
221 | if(p->roles) { |
|
bd08116b8af4
add support for list members to the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
7
diff
changeset
|
222 | CxIterator r = cxListIterator(p->roles); |
|
bd08116b8af4
add support for list members to the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
7
diff
changeset
|
223 | char *addseparator = ""; |
|
bd08116b8af4
add support for list members to the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
7
diff
changeset
|
224 | cx_foreach(Role *, role, r) { |
|
bd08116b8af4
add support for list members to the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
7
diff
changeset
|
225 | cx_bprintf(&rolebuffer, "%s{ role_id = %d, name = \"%s\"}", addseparator, role->role_id, role->name.ptr); |
|
bd08116b8af4
add support for list members to the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
7
diff
changeset
|
226 | addseparator = ", "; |
|
bd08116b8af4
add support for list members to the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
7
diff
changeset
|
227 | } |
|
bd08116b8af4
add support for list members to the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
7
diff
changeset
|
228 | } |
|
bd08116b8af4
add support for list members to the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
7
diff
changeset
|
229 | cxBufferPut(&rolebuffer, ']'); |
|
bd08116b8af4
add support for list members to the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
7
diff
changeset
|
230 | cxBufferPut(&rolebuffer, 0); |
|
bd08116b8af4
add support for list members to the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
7
diff
changeset
|
231 | printf("{ person_id = %" PRId64 ", name = \"%s\", email = \"%s\", age = %d, iscustomer = %s, hash = %" PRIu64 " roles = %s }\n", |
|
bd08116b8af4
add support for list members to the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
7
diff
changeset
|
232 | p->person_id, p->name.ptr, p->email.ptr, p->age, p->iscustomer ? "true" : "false", p->hash, rolebuffer.space); |
|
bd08116b8af4
add support for list members to the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
7
diff
changeset
|
233 | |
|
bd08116b8af4
add support for list members to the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
7
diff
changeset
|
234 | cxBufferDestroy(&rolebuffer); |
|
0
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
235 | } |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
236 | } else { |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
237 | fprintf(stderr, "Error\n"); |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
238 | } |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
239 | |
|
3
69ea9040d896
add DB abstraction layer
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
0
diff
changeset
|
240 | conn->free(conn); |
|
0
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
241 | |
| 23 | 242 | */ |
| 243 | ||
|
0
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
244 | return 0; |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
245 | } |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
246 | |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
247 | static int create_test_data(sqlite3 *db) { |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
248 | char *err_msg = NULL; |
|
7
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
249 | sqlite3_stmt *stmt; |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
250 | int rc = sqlite3_prepare_v2(db, sql_check_table, -1, &stmt, 0); |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
251 | if(rc == SQLITE_OK) { |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
252 | return 0; |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
253 | } |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
254 | |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
255 | rc = sqlite3_exec(db, sql_create_table_person, 0, 0, &err_msg); |
|
0
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
256 | if(rc != SQLITE_OK) { |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
257 | fprintf(stderr, "SQLite error: %s\n", err_msg); |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
258 | sqlite3_free(err_msg); |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
259 | sqlite3_close(db); |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
260 | return 1; |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
261 | } |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
262 | |
|
5
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
263 | rc = sqlite3_exec(db, sql_create_table_address, 0, 0, &err_msg); |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
264 | if(rc != SQLITE_OK) { |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
265 | fprintf(stderr, "SQLite error: %s\n", err_msg); |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
266 | sqlite3_free(err_msg); |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
267 | sqlite3_close(db); |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
268 | return 1; |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
269 | } |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
270 | |
|
7
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
271 | rc = sqlite3_exec(db, sql_create_table_role, 0, 0, &err_msg); |
|
0
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
272 | if(rc != SQLITE_OK) { |
|
7
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
273 | fprintf(stderr, "SQLite error: %s\n", err_msg); |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
274 | sqlite3_free(err_msg); |
|
0
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
275 | sqlite3_close(db); |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
276 | return 1; |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
277 | } |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
278 | |
|
5
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
279 | rc = sqlite3_exec(db, sql_create_test_data1, 0, 0, &err_msg); |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
280 | if(rc != SQLITE_OK) { |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
281 | fprintf(stderr, "SQLite error: %s\n", err_msg); |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
282 | sqlite3_free(err_msg); |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
283 | sqlite3_close(db); |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
284 | return 1; |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
285 | } |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
286 | |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
287 | rc = sqlite3_exec(db, sql_create_test_data2, 0, 0, &err_msg); |
|
0
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
288 | if(rc != SQLITE_OK) { |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
289 | fprintf(stderr, "SQLite error: %s\n", err_msg); |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
290 | sqlite3_free(err_msg); |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
291 | sqlite3_close(db); |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
292 | return 1; |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
293 | } |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
294 | |
|
7
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
295 | rc = sqlite3_exec(db, sql_create_test_data3, 0, 0, &err_msg); |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
296 | if(rc != SQLITE_OK) { |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
297 | fprintf(stderr, "SQLite error: %s\n", err_msg); |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
298 | sqlite3_free(err_msg); |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
299 | sqlite3_close(db); |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
300 | return 1; |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
301 | } |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
302 | |
|
0
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
303 | return 0; |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
304 | } |