feat: add Member entity, mapper, and sub-entity classes (Closes #20) #69

Merged
shahondin1624 merged 1 commits from feature/issue-20-create-member-entity-and-mapper into main 2026-04-07 11:37:05 +02:00
Owner

Summary

  • Creates Member entity class with all oc_mv_members columns mapped, including JsonSerializable implementation
  • Creates MemberMapper with query methods: findById, findAll, findByFamily, findByStatus, findByStufe, search, countAll
  • Creates Address, Phone, Email entities and their mappers with findByMemberId and deleteByMemberId methods
  • All mappers use Nextcloud's QBMapper with parameterized queries

Files Created

  • lib/Db/Member.php / MemberMapper.php
  • lib/Db/Address.php / AddressMapper.php
  • lib/Db/Phone.php / PhoneMapper.php
  • lib/Db/Email.php / EmailMapper.php

Closes #20

## Summary - Creates `Member` entity class with all `oc_mv_members` columns mapped, including `JsonSerializable` implementation - Creates `MemberMapper` with query methods: `findById`, `findAll`, `findByFamily`, `findByStatus`, `findByStufe`, `search`, `countAll` - Creates `Address`, `Phone`, `Email` entities and their mappers with `findByMemberId` and `deleteByMemberId` methods - All mappers use Nextcloud's `QBMapper` with parameterized queries ## Files Created - `lib/Db/Member.php` / `MemberMapper.php` - `lib/Db/Address.php` / `AddressMapper.php` - `lib/Db/Phone.php` / `PhoneMapper.php` - `lib/Db/Email.php` / `EmailMapper.php` Closes #20
shahondin1624 added 1 commit 2026-04-07 11:37:00 +02:00
Create Member, Address, Phone, and Email entities with their QBMapper
classes. MemberMapper provides findById, findAll, findByFamily,
findByStatus, findByStufe, search, and countAll methods. Sub-entity
mappers include findByMemberId and deleteByMemberId for related data
management.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
shahondin1624 merged commit fec34f2aa9 into main 2026-04-07 11:37:05 +02:00
shahondin1624 deleted branch feature/issue-20-create-member-entity-and-mapper 2026-04-07 11:37:05 +02:00
Sign in to join this conversation.