diff --git a/frontend/repositories/option/api.ts b/frontend/repositories/option/api.ts new file mode 100644 index 00000000..450bd409 --- /dev/null +++ b/frontend/repositories/option/api.ts @@ -0,0 +1,21 @@ +import { OptionItem } from '@/models/option' +import { OptionRepository } from './interface' + +export class LocalStorageOptionRepository implements OptionRepository { + + findById(projectId: string): OptionItem { + const checkpoint = this.loadCheckpoint() + return OptionItem.valueOf(checkpoint[projectId] ? checkpoint[projectId] : { page: 1 }) + } + + save(projectId: string, option: OptionItem): void { + const checkpoint = this.loadCheckpoint() + checkpoint[projectId] = option.toObject() + localStorage.setItem('checkpoint', JSON.stringify(checkpoint)) + } + + loadCheckpoint() { + const item = localStorage.getItem('checkpoint') || '{}' + return JSON.parse(item) + } +} diff --git a/frontend/repositories/option/interface.ts b/frontend/repositories/option/interface.ts new file mode 100644 index 00000000..5d1707fd --- /dev/null +++ b/frontend/repositories/option/interface.ts @@ -0,0 +1,7 @@ +import { OptionItem } from '@/models/option' + +export interface OptionRepository { + findById(projectId: string): OptionItem + + save(projectId: string, option: OptionItem): void +}