parsav  Diff

Differences From Artifact [175b022aff]:

To Artifact [794844a9c8]:


     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