A social knowledge tool for researchers built on ATProto
1import { Result, ok, err } from 'src/shared/core/Result';
2import { User } from '../../domain/User';
3import { IUserRepository } from '../../domain/repositories/IUserRepository';
4import { DID } from '../../domain/value-objects/DID';
5
6export class InMemoryUserRepository implements IUserRepository {
7 private users: Map<string, User> = new Map();
8
9 async findByDID(did: DID): Promise<Result<User | null>> {
10 try {
11 const user = this.users.get(did.value);
12 return ok(user || null);
13 } catch (error: any) {
14 return err(error);
15 }
16 }
17
18 async save(user: User): Promise<Result<void>> {
19 try {
20 this.users.set(user.did.value, user);
21 return ok(undefined);
22 } catch (error: any) {
23 return err(error);
24 }
25 }
26
27 // Helper method for testing
28 clear(): void {
29 this.users.clear();
30 }
31}