diff --git a/internal/user.go b/internal/user.go index f7f4ee8..a5ed26d 100644 --- a/internal/user.go +++ b/internal/user.go @@ -213,3 +213,41 @@ func GetAnthroveUser(ctx context.Context, driver neo4j.DriverWithContext, anthro return &anthroveUser, nil } + +func GetAllAnthroveUserIDs(ctx context.Context, driver neo4j.DriverWithContext) ([]models.AnthroveUserID, error) { + var err error + var anthroveUsers []models.AnthroveUserID + + query := ` + MATCH (anthroveUser:User) + RETURN anthroveUser + ` + result, err := neo4j.ExecuteQuery(ctx, driver, query, nil, neo4j.EagerResultTransformer) + if err != nil { + return nil, err + } + + if len(result.Records) == 0 { + log.Warnf("No users found, this should not be happening!") + return []models.AnthroveUserID{}, nil + + } + + for i := range result.Records { + record := result.Records[i] + + user, _, err := neo4j.GetRecordValue[neo4j.Node](record, "anthroveUser") + if err != nil { + return nil, err + } + + anthroveUsers = append(anthroveUsers, models.AnthroveUserID(fmt.Sprintf(user.Props["user_id"].(string)))) + } + + log.WithFields(log.Fields{ + "anthrove_user_id_count": len(anthroveUsers), + }).Trace("graph: got al anthrove user IDs") + + return anthroveUsers, nil + +} diff --git a/pkg/impl.go b/pkg/impl.go index 9b2ae41..d8e19c1 100644 --- a/pkg/impl.go +++ b/pkg/impl.go @@ -89,8 +89,7 @@ func (g *graphConnection) GetAnthroveUser(ctx context.Context, anthroveUserID mo } func (g *graphConnection) GetAllAnthroveUserIDs(ctx context.Context) ([]models.AnthroveUserID, error) { - //TODO implement me - panic("implement me") + return internal.GetAllAnthroveUserIDs(ctx, g.driver) } func logger(graphDebug bool) func(config *config.Config) {