예제 #1
0
        public async Task Do(string[] args)
        {
            foreach (var item in await _connection.QueryAsync <CollectionItem>("select * from \"CollectionItems\""))
            {
                var entity = await _entityStore.GetEntity(item.ElementId);

                var newState = DeliveryService.IsPublic(entity.Data) || entity.Data.Type.Contains("https://www.w3.org/ns/activitystreams#Person");
                if (newState != item.IsPublic)
                {
                    await _connection.ExecuteAsync("update \"CollectionItems\" set \"IsPublic\" = @IsPublic where \"CollectionItemId\" = @Id", new { IsPublic = newState, Id = item.CollectionItemId });
                }
            }
        }
예제 #2
0
        public async Task <int> Count(string id)
        {
            var entity = await _entityStore.GetEntity(id, true);

            if (entity.IsOwner)
            {
                return(await _connection.ExecuteScalarAsync <int>("select count(*) from \"CollectionItems\" where \"CollectionId\" = @Id", new { Id = entity.DbId }));
            }

            var data = entity.Data;

            if (data["totalItems"].Any())
            {
                var prim = data["totalItems"].Single().Primitive;
                if (prim is string)
                {
                    return(int.Parse((string)prim));
                }
                return((int)prim);
            }

            return(-1);
        }