public ICursor <T> AsCursor() { var queryData = GetQueryData(); return(db.CreateStatement <T>(queryData.Query , bindVars: queryData.BindVars)); }
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]); }
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()); }
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)); }
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)); }