feat: dedicated settings page for space

This commit is contained in:
juancwu 2026-02-07 19:16:16 -05:00
commit 1b5c57704e
No known key found for this signature in database
9 changed files with 516 additions and 0 deletions

View file

@ -20,6 +20,8 @@ type SpaceRepository interface {
AddMember(spaceID, userID string, role model.Role) error
RemoveMember(spaceID, userID string) error
IsMember(spaceID, userID string) (bool, error)
GetMembers(spaceID string) ([]*model.SpaceMemberWithProfile, error)
UpdateName(spaceID, name string) error
}
type spaceRepository struct {
@ -106,3 +108,23 @@ func (r *spaceRepository) IsMember(spaceID, userID string) (bool, error) {
}
return count > 0, nil
}
func (r *spaceRepository) GetMembers(spaceID string) ([]*model.SpaceMemberWithProfile, error) {
var members []*model.SpaceMemberWithProfile
query := `
SELECT sm.space_id, sm.user_id, sm.role, sm.joined_at,
p.name, u.email
FROM space_members sm
JOIN users u ON sm.user_id = u.id
JOIN profiles p ON sm.user_id = p.user_id
WHERE sm.space_id = $1
ORDER BY sm.role DESC, sm.joined_at ASC;`
err := r.db.Select(&members, query, spaceID)
return members, err
}
func (r *spaceRepository) UpdateName(spaceID, name string) error {
query := `UPDATE spaces SET name = $1, updated_at = $2 WHERE id = $3;`
_, err := r.db.Exec(query, name, time.Now(), spaceID)
return err
}