Differences From
Artifact [bd352a7166]:
282 282
283 283 actor_notice_enum = {
284 284 params = {uint64}, sql = [[
285 285 select (notice).* from pg_temp.parsavpg_notices
286 286 where rcpt = $1::bigint
287 287 ]];
288 288 };
289 +
290 + circle_search = {
291 + params = {uint64,uint64}, sql = [[
292 + select name, id, owner, array_length(members,1) from parsav_circles where
293 + ($1::bigint = 0 or $1::bigint = owner) and
294 + ($2::bigint = 0 or $2::bigint = id)
295 + ]];
296 + };
297 +
298 + circle_members_fetch_cid = {
299 + params = {uint64, uint64}, sql = [[
300 + select unnest(members) from parsav_circles where
301 + ($1::bigint = 0 or owner = $1::bigint) and
302 + id = $2::bigint
303 + ]];
304 + };
305 +
306 + circle_members_fetch_name = {
307 + params = {uint64, pstring}, sql = [[
308 + select unnest(members) from parsav_circles where
309 + ($1::bigint = 0 or owner = $1::bigint) and
310 + name = $2::text
311 + ]];
312 + };
289 313
290 314 auth_sigtime_user_fetch = {
291 315 params = {uint64}, sql = [[
292 316 select authtime::bigint
293 317 from parsav_actors where id = $1::bigint
294 318 ]];
295 319 };
................................................................................
2035 2059 end
2036 2060 return 0, false
2037 2061 end];
2038 2062 actor_conf_int_set = [terra(src: &lib.store.source, uid: uint64, key: rawstring, value: uint64): {}
2039 2063 queries.actor_conf_int_set.exec(src,uid,key,value) end];
2040 2064 actor_conf_int_reset = [terra(src: &lib.store.source, uid: uint64, key: rawstring): {}
2041 2065 queries.actor_conf_int_reset.exec(src,uid,key) end];
2066 +
2067 + circle_search = [terra(
2068 + src: &lib.store.source,
2069 + pool:&lib.mem.pool,
2070 + uid: uint64,
2071 + cid: uint64
2072 + ): lib.mem.ptr(lib.store.circle)
2073 + var res = queries.circle_search.exec(src, uid, cid)
2074 + if res.sz == 0 then return [lib.mem.ptr(lib.store.circle)].null() end
2075 + defer res:free()
2076 +
2077 + var rt = pool:alloc(lib.store.circle, res.sz)
2078 + for i = 0, res.sz do
2079 + var name = res:_string(i,0)
2080 + rt(i) = lib.store.circle {
2081 + name = name:pdup(pool);
2082 + cid = res:int(uint64,i,1);
2083 + owner = res:int(uint64,i,2);
2084 + memcount = res:int(uint64,i,3);
2085 + }
2086 + end
2087 +
2088 + return rt
2089 + end];
2090 +
2091 + circle_members_fetch_cid = [terra(
2092 + src: &lib.store.source,
2093 + pool:&lib.mem.pool,
2094 + uid: uint64,
2095 + cid: uint64
2096 + ): lib.mem.ptr(uint64)
2097 + var res = queries.circle_members_fetch_cid.exec(src,uid,cid)
2098 + if res.sz == 0 then return [lib.mem.ptr(uint64)].null() end
2099 + defer res:free()
2100 +
2101 + var rt = pool:alloc(uint64, res.sz)
2102 + for i = 0, res.sz do rt(i) = res:int(uint64,i,0) end
2103 +
2104 + return rt
2105 + end];
2042 2106
2043 2107 actor_auth_register_uid = nil; -- TODO better support non-view based auth
2044 2108 }
2045 2109
2046 2110 return b