Differences From
Artifact [175b022aff]:
1 1 -- vim: ft=terra
2 2 local pstring = lib.mem.ptr(int8)
3 3 local binblob = lib.mem.ptr(uint8)
4 4 local queries = {
5 + server_setup_self = {
6 + params = {rawstring,binblob,int64}, cmd = true, sql = [[
7 + insert into parsav_servers (id, domain, key, parsav, knownsince)
8 + values (0, $1::text, $2::bytea, true, $3::bigint)
9 + ]];
10 + };
11 +
12 + server_fetch_sid = {
13 + params = {uint64}, sql = [[
14 + select domain, key, knownsince, parsav from parsav_servers
15 + where id = $1::bigint
16 + ]];
17 + };
18 +
5 19 conf_get = {
6 20 params = {rawstring}, sql = [[
7 21 select value from parsav_config
8 22 where key = $1::text limit 1
9 23 ]];
10 24 };
11 25
................................................................................
1146 1160 tx_enter = txdo, tx_complete = txdone;
1147 1161
1148 1162 conprep = [terra(src: &lib.store.source, mode: lib.store.prepmode.t): {}
1149 1163 var [con] = [&lib.pq.PGconn](src.handle)
1150 1164 if mode == lib.store.prepmode.full then [prep]
1151 1165 elseif mode == lib.store.prepmode.conf or
1152 1166 mode == lib.store.prepmode.admin then
1167 + queries.server_setup_self.prep(con)
1153 1168 queries.conf_get.prep(con)
1154 1169 queries.conf_set.prep(con)
1155 1170 queries.conf_reset.prep(con)
1156 1171 if mode == lib.store.prepmode.admin then
1172 + queries.server_fetch_sid.prep(con)
1173 + queries.actor_fetch_uid.prep(con)
1174 + queries.actor_fetch_xid.prep(con)
1175 + queries.actor_enum.prep(con)
1176 + queries.actor_enum_local.prep(con)
1177 + queries.actor_stats.prep(con)
1178 + queries.actor_powers_fetch.prep(con)
1179 + queries.actor_save.prep(con)
1180 + queries.actor_create.prep(con)
1181 + queries.actor_purge_uid.prep(con)
1157 1182 end
1158 1183 else lib.bail('unsupported connection preparation mode') end
1159 1184 end];
1185 +
1186 + server_setup_self = [terra(
1187 + src: &lib.store.source,
1188 + domain: rawstring,
1189 + key: binblob
1190 + ): {}
1191 + queries.server_setup_self.exec(src,domain,key,lib.osclock.time(nil))
1192 + end];
1160 1193
1161 1194 dbsetup = [terra(src: &lib.store.source): bool
1162 1195 var res = lib.pq.PQexec([&lib.pq.PGconn](src.handle), schema)
1163 1196 if lib.pq.PQresultStatus(res) == lib.pq.PGRES_COMMAND_OK then
1164 1197 lib.report('successfully instantiated schema in database')
1165 1198 return true
1166 1199 else