---
# System prepended metadata

title: LEX-3656

---

# LEX-3656
https://app.shortcut.com/lex/story/3656/load-chatmembers-from-postgres

## Affected endpoints
- listUserChatsV3
- getChatV3

## Repo & Model
```ts

class ShadowUserModel {
  id: UserId;
  username: string;
  firstName: string;
  pronoun: string; // not strtictly necessary, but need later in LEX-3583
  roles: UserRole[] = [];
  
  // temporary inactivated account functionality
  active: boolean;
  
  // whether the user is banned
  // ATTENTION: the firestore property is called `blocked`
  // Task: Document that in new model
  banned: boolean; 
  
  // soft deletion flag
  deleted: boolean;  
  
  // mutual blocks
  blocks: UserId[];
  blockedBy: UserId[];
 }
 
class ShadowUserRepository {
  // hard delete user entities
  // handle delete trigger
  deleteById(UserId id);
  
  // Update or insert user
  save(ShadowUserModel user): Promise<ShadowUserModel>;
  
  findOneById(UserId id): Promise<ShadowUserModel>;
  
  findByIds(UserId[] ids): Promise<ShadowUserModel[]>;
}

```

## Tasks
- Create model and repo (including migration to create table)
- Create migration script (in `functions/src/scripts`)
- Adjust controllers/tasks
