blob: 647bcfa24f97392af0f8aa2cc04bd1bd14a887a6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
package no.eliashaugsbakk.clams.server.config;
import java.nio.file.Path;
import no.eliashaugsbakk.clams.server.controller.PostsController;
import no.eliashaugsbakk.clams.server.controller.MediaController;
import no.eliashaugsbakk.clams.server.controller.PostController;
import no.eliashaugsbakk.clams.server.controller.ProjectController;
import no.eliashaugsbakk.clams.server.repository.PostsRepo;
import no.eliashaugsbakk.clams.server.repository.PostsRepoSqlite;
import no.eliashaugsbakk.clams.server.repository.MediaRepo;
import no.eliashaugsbakk.clams.server.repository.MediaRepoSqlite;
import no.eliashaugsbakk.clams.server.repository.ProjectsRepo;
import no.eliashaugsbakk.clams.server.repository.ProjectsRepoSqlite;
import no.eliashaugsbakk.clams.server.repository.SqliteManager;
import no.eliashaugsbakk.clams.server.service.AuthService;
import no.eliashaugsbakk.clams.server.service.PageCache;
import no.eliashaugsbakk.clams.server.service.SlugService;
public class AppContext implements AutoCloseable {
private final SqliteManager dbManager;
private final PostsController postsController;
private final MediaController mediaController;
private final PostController postController;
private final ProjectController projectController;
private final AuthService authService;
private final PageCache pageCache;
public AppContext() {
AppConfig appConfig = new AppConfig();
appConfig.loadConfig();
String dbUrl = Path.of(appConfig.getStorageLocation()).resolve("clams.db").toString();
this.dbManager = new SqliteManager(dbUrl);
this.dbManager.init();
PostsRepo postsRepo = new PostsRepoSqlite(dbManager);
MediaRepo mediaRepo = new MediaRepoSqlite(dbManager);
ProjectsRepo projectsRepo = new ProjectsRepoSqlite(dbManager);
SlugService slugService = new SlugService(postsRepo);
this.postsController = new PostsController(dbManager);
this.mediaController = new MediaController(mediaRepo, appConfig);
this.projectController = new ProjectController(projectsRepo);
this.postController = new PostController(postsRepo, slugService);
this.authService = new AuthService(appConfig);
this.pageCache = new PageCache(15);
}
public PostsController getPostsController() { return postsController; }
public MediaController getMediaController() { return mediaController; }
public ProjectController getProjectsController() { return projectController; }
public PostController getPostController() { return postController; }
public AuthService getAuthService() { return authService; }
public PageCache pageCache() { return pageCache; }
@Override
public void close() {
if (dbManager != null) {
dbManager.close();
}
}
}
|