46 lines
1.0 KiB
TypeScript
46 lines
1.0 KiB
TypeScript
import { Injectable, NotFoundException } from '@nestjs/common';
|
|
|
|
export interface Item {
|
|
id: number;
|
|
name: string;
|
|
description: string;
|
|
}
|
|
|
|
@Injectable()
|
|
export class ItemsService {
|
|
private readonly store = new Map<number, Item>();
|
|
private counter = 1;
|
|
|
|
findAll(): Item[] {
|
|
return [...this.store.values()];
|
|
}
|
|
|
|
create(name: string, description = ''): Item {
|
|
const item: Item = { id: this.counter++, name, description };
|
|
this.store.set(item.id, item);
|
|
return item;
|
|
}
|
|
|
|
findOne(id: number): Item {
|
|
const item = this.store.get(id);
|
|
if (!item) throw new NotFoundException(`Item ${id} not found`);
|
|
return item;
|
|
}
|
|
|
|
update(id: number, name?: string, description?: string): Item {
|
|
const item = this.findOne(id);
|
|
const updated: Item = {
|
|
id,
|
|
name: name ?? item.name,
|
|
description: description ?? item.description,
|
|
};
|
|
this.store.set(id, updated);
|
|
return updated;
|
|
}
|
|
|
|
remove(id: number): { deleted: number } {
|
|
this.store.delete(id);
|
|
return { deleted: id };
|
|
}
|
|
}
|