Skip to content

Commit b81400b

Browse files
committed
AbstractService
1 parent 114169c commit b81400b

File tree

5 files changed

+30
-26
lines changed

5 files changed

+30
-26
lines changed
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import AbstractFileRepository from './repositories/AbstractFileRepository';
2+
import IService from './IService';
3+
4+
export default abstract class AbstractServiceWithProfile<T>
5+
implements IService<T> {
6+
protected repository: AbstractFileRepository | undefined;
7+
8+
setProfile(profile: string) {
9+
this.repository?.setProfile(profile);
10+
}
11+
12+
abstract getAll(): T;
13+
14+
abstract save(data: T): void;
15+
}

src/base/repositories/AbstractFileRepository.ts

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,6 @@ export default abstract class AbstractFileRepository<T = any> {
1111
fileName: string = 'defaultFileName.json';
1212
saveInRoot: boolean = false;
1313

14-
private logPrefix = `Repository[${this.fileName}]:`;
15-
1614
writeFileQueue = new PromiseQueue();
1715

1816
private static get appDataFolder() {
@@ -31,13 +29,8 @@ export default abstract class AbstractFileRepository<T = any> {
3129
return path.join(this.destFolder, this.fileName);
3230
}
3331

34-
public setProfile(profile: string | null) {
35-
if (profile) {
36-
this.dirWithProfileData = profile;
37-
console.log(`${this.logPrefix} set profile=${profile}`);
38-
} else {
39-
console.error(`${this.logPrefix} set profile=null`);
40-
}
32+
public setProfile(profile: string) {
33+
this.dirWithProfileData = profile;
4134
}
4235

4336
public restore(defaultValue: T): T {

src/modules/projects/ProjectService.ts

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,13 @@
1-
import IService from '../../base/IService';
21
import ProjectModel, { DEFAULT_PROJECTS } from './models/ProjectModel';
32
import ProjectFactory from './ProjectFactory';
43
import ProjectRepository from './ProjectRepository';
4+
import AbstractServiceWithProfile from '../../base/AbstractServiceWithProfile';
55

6-
export default class ProjectService implements IService<ProjectModel[]> {
7-
factory = new ProjectFactory();
8-
repository = new ProjectRepository();
9-
10-
setProfile(profile: string) {
11-
this.repository.setProfile(profile);
12-
}
6+
export default class ProjectService extends AbstractServiceWithProfile<
7+
ProjectModel[]
8+
> {
9+
private factory = new ProjectFactory();
10+
protected repository = new ProjectRepository();
1311

1412
getAll(): ProjectModel[] {
1513
const data = this.repository.restore(DEFAULT_PROJECTS);

src/modules/tasks/TaskService.ts

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,13 @@
11
import TaskRepository from './TaskRepository';
22
import TaskFactory from './TaskFactory';
3-
import IService from '../../base/IService';
43
import TasksByProject from './models/TasksByProject';
4+
import AbstractServiceWithProfile from '../../base/AbstractServiceWithProfile';
55

6-
export default class TaskService implements IService<TasksByProject> {
7-
repository: TaskRepository = new TaskRepository();
8-
factory: TaskFactory = new TaskFactory();
9-
10-
setProfile(profile: string) {
11-
this.repository.setProfile(profile);
12-
}
6+
export default class TaskService extends AbstractServiceWithProfile<
7+
TasksByProject
8+
> {
9+
private factory: TaskFactory = new TaskFactory();
10+
protected repository: TaskRepository = new TaskRepository();
1311

1412
getAll(): TasksByProject {
1513
const data: TasksByProject = this.repository.restore({});

src/modules/tasks/TaskStore.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { autorun, makeAutoObservable, reaction } from 'mobx';
1+
import { autorun, makeAutoObservable } from 'mobx';
22

33
import TaskService from './TaskService';
44
import TaskModel, { ITimeRangeModel } from './models/TaskModel';

0 commit comments

Comments
 (0)