Ejemplo n.º 1
0
        public ICursor <T> AsCursor()
        {
            var queryData = GetQueryData();

            return(db.CreateStatement <T>(queryData.Query
                                          , bindVars: queryData.BindVars));
        }
Ejemplo n.º 2
0
        public static async Task <bool> IsAdmin(this IArangoDatabase database, string userId, string groupId)
        {
            var result = await database.CreateStatement <bool>(
                $@"LET isAdmin = (FOR v in 0..5000 INBOUND 'Group/{groupId}' Graph 'SubgroupGraph' 
PRUNE v.groupOwner == '{userId}' FILTER v.groupOwner == '{userId}' return v)
return isAdmin != []").ToListAsync();

            return(result.Count != 0 && result[0]);
        }
Ejemplo n.º 3
0
        public static async Task <Group> GetRootGroup(this IArangoDatabase database, string groupId)
        {
            var groups = database.CreateStatement <Group>($@"
                                FOR g in 0..10000 INBOUND 'Group/{groupId}' Graph 'SubgroupGraph' 
                                PRUNE g.isRoot == true 
                                FILTER g.isRoot == true
                                RETURN g");

            return((await groups.ToListAsync()).FirstOrDefault());
        }
Ejemplo n.º 4
0
        ICursor <T> GetCursor <T>(QueryModel queryModel)
        {
            var visitor = new AqlModelVisitor(db);

            visitor.VisitQueryModel(queryModel);

            visitor.QueryData.Query = visitor.QueryText.ToString();

            return(db.CreateStatement <T>(visitor.QueryData.Query,
                                          bindVars: visitor.QueryData.BindVars));
        }
Ejemplo n.º 5
0
        public static async Task <bool> IsGroupMember(this IArangoDatabase database, string userId, string groupId)
        {
            if (groupId == null || userId == null)
            {
                return(false);
            }
            var group = await database.Collection("Group").DocumentAsync <Group>(groupId);

            if (group == null)
            {
                return(false);
            }

            var isMember = await database.CreateStatement <bool>(
                $@"return (FOR v in 1 INBOUND 'Group/{groupId}' Graph 'GroupUsersGraph' 
FILTER v._key == '{userId}'
return v) != []").ToListAsync();

            return(isMember.FirstOr(false) || await database.IsAdmin(userId, groupId));
        }