parsav  Diff

Differences From Artifact [bd352a7166]:

To Artifact [96ec125a09]:


   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