Data Context
The example app uses prisma
, which is an excellent ORM
. The benchmark app uses an in-memory solution.
For now lets make a simple implementation of the latter.
User Entity
Start by defining an entity interface.
src/domain/user.ts
interface IUser {
id: string;
name: string;
email: string;
createdAt: Date;
updatedAt: Date;
}
export default IUser;
Data Context Service
Add simple functionality to data context service.
src/services/data-context-service.ts
import { randomUUID } from 'crypto';
import {
injectService,
SingletonService,
type ILoggerService,
type IDataContextService,
} from '@lindeneg/funkallero';
import SERVICE from '@/enums/service';
import type User from '@/domain/user';
class DataContextService
extends SingletonService
implements IDataContextService
{
@injectService(SERVICE.LOGGER)
private readonly logger: ILoggerService;
public readonly userRepository = new Map<User['id'], User>();
public async createUser(
user: Omit<User, 'id' | 'createdAt' | 'updatedAt'>
) {
const id = randomUUID();
const now = new Date();
const createdUser = { ...user, id, createdAt: now, updatedAt: now };
this.userRepository.set(id, createdUser);
return createdUser;
}
}
export default DataContextService;