Skip to content

Issue #64 — Backend: Member Enums, DTOs & Users Module Updates #662

@yusuftomilola

Description

@yusuftomilola

Location:

  • backend/src/users/enums/membership-status.enum.ts
  • backend/src/users/dto/member-query.dto.ts
  • backend/src/users/dto/update-member-status.dto.ts
  • backend/src/users/users.module.ts

Description

Before any members management endpoints can be built, the supporting types and data transfer objects need to be in place. This issue also introduces a MembershipStatus enum that represents whether a member's account is active, suspended, or pending — separate from the user's role. A dedicated MembersController needs to be scaffolded and registered alongside the existing UsersController.

Acceptance Criteria

  • A MembershipStatus enum is created at backend/src/users/enums/membership-status.enum.ts with values: ACTIVE, SUSPENDED, PENDING
  • The User entity at backend/src/users/entities/user.entity.ts has a membershipStatus column added: @Column({ type: 'enum', enum: MembershipStatus, default: MembershipStatus.ACTIVE })
  • A MemberQueryDto is created at backend/src/users/dto/member-query.dto.ts with optional fields:
    • page?: number — default 1
    • limit?: number — default 15
    • search?: string — searches firstname, lastname, and email
    • role?: UserRole — filters by role
    • status?: MembershipStatus — filters by membership status
  • An UpdateMemberStatusDto is created at backend/src/users/dto/update-member-status.dto.ts with:
    • action: 'suspend' | 'activate' | 'promote' | 'demote' — required, validated with @IsIn(['suspend', 'activate', 'promote', 'demote'])
  • A MembersController stub is created at backend/src/users/members.controller.ts with the @Controller('members') decorator
  • MembersController is registered in UsersModule alongside the existing UsersController
  • npx tsc --noEmit passes with no errors

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions