scaffolding wiki module

This commit is contained in:
2025-09-08 23:06:41 +02:00
parent e8e215f24c
commit 45b236cb58
9 changed files with 83 additions and 1 deletions

View File

@@ -28,6 +28,8 @@ dependencies{
implementation(project(":translations"))
implementation(project(":user"))
implementation(project(":web"))
implementation(project(":wiki"))
implementation("de.srsoftware:configuration.json:1.0.3")
implementation("de.srsoftware:tools.slf4j2syslog:1.0.1") // this provides a slf4j implementation that forwards to System.Logger
}

View File

@@ -12,6 +12,7 @@ import de.srsoftware.umbrella.bookmarks.BookmarkApi;
import de.srsoftware.umbrella.company.CompanyModule;
import de.srsoftware.umbrella.core.ModuleRegistry;
import de.srsoftware.umbrella.core.Util;
import de.srsoftware.umbrella.core.api.WikiService;
import de.srsoftware.umbrella.core.exceptions.UmbrellaException;
import de.srsoftware.umbrella.documents.DocumentApi;
import de.srsoftware.umbrella.items.ItemApi;
@@ -30,6 +31,8 @@ import java.io.File;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.util.concurrent.Executors;
import de.srsoftware.umbrella.wiki.WikiModule;
import org.json.JSONObject;
public class Application {
@@ -79,6 +82,7 @@ public class Application {
new TaskLegacy(registry, config).bindPath("/legacy/task").on(server);
new TimeModule(registry, config).bindPath("/api/time").on(server);
new WebHandler(registry).bindPath("/").on(server);
new WikiModule(registry, config).bindPath("/api/wiki").on(server);
server.setExecutor(Executors.newFixedThreadPool(threads));
server.start();

View File

@@ -18,7 +18,7 @@ public class ModuleRegistry {
private TimeService timeService;
private Translator translator;
private UserService userService;
private WikiService wikiService;
public ModuleRegistry add(Object service) {
@@ -36,6 +36,7 @@ public class ModuleRegistry {
case TimeService ts: timeService = ts; break;
case Translator tr: translator = tr; break;
case UserService us: userService = us; break;
case WikiService ws: wikiService = ws; break;
case null: break;
default: System.getLogger(getClass().getSimpleName()).log(System.Logger.Level.WARNING,"Trying to add untracked class {0} to {1}",service.getClass().getSimpleName(),getClass().getSimpleName());
}
@@ -93,4 +94,6 @@ public class ModuleRegistry {
public UserService userService(){
return userService;
}
public WikiService wikiService() { return wikiService; };
}

View File

@@ -0,0 +1,4 @@
package de.srsoftware.umbrella.core.api;
public interface WikiService {
}

View File

@@ -18,3 +18,4 @@ include("time")
include("translations")
include("user")
include("web")
include("wiki")

View File

@@ -0,0 +1,8 @@
/* © SRSoftware 2025 */
package de.srsoftware.umbrella.wiki;
public class Constants {
private Constants(){}
public static final String CONFIG_DATABASE = "umbrella.modules.wiki.database";
}

View File

@@ -0,0 +1,24 @@
package de.srsoftware.umbrella.wiki;
import de.srsoftware.umbrella.core.BaseDb;
import java.sql.Connection;
public class SqliteDb extends BaseDb implements WikiDb {
private static final System.Logger LOG = System.getLogger("TaskDb");
private static final int INITIAL_DB_VERSION = 1;
public SqliteDb(Connection connection) {
super(connection);
}
@Override
protected int createTables() {
int currentVersion = createSettingsTable();
switch (currentVersion){
case 0: ; // TODO
}
return setCurrentVersion(3);
}
}

View File

@@ -0,0 +1,16 @@
/* © SRSoftware 2025 */
package de.srsoftware.umbrella.wiki;
import de.srsoftware.umbrella.core.exceptions.UmbrellaException;
import de.srsoftware.umbrella.core.model.Permission;
import de.srsoftware.umbrella.core.model.Task;
import de.srsoftware.umbrella.core.model.UmbrellaUser;
import java.util.Collection;
import java.util.List;
import java.util.Map;
public interface WikiDb {
}

View File

@@ -0,0 +1,20 @@
package de.srsoftware.umbrella.wiki;
import de.srsoftware.configuration.Configuration;
import de.srsoftware.umbrella.core.BaseHandler;
import de.srsoftware.umbrella.core.ModuleRegistry;
import de.srsoftware.umbrella.core.api.WikiService;
import static de.srsoftware.umbrella.core.ConnectionProvider.connect;
import static de.srsoftware.umbrella.core.exceptions.UmbrellaException.missingFieldException;
import static de.srsoftware.umbrella.wiki.Constants.CONFIG_DATABASE;
public class WikiModule extends BaseHandler implements WikiService {
private final WikiDb wikiDb;
public WikiModule(ModuleRegistry registry, Configuration config) {
super(registry);
var dbFile = config.get(CONFIG_DATABASE).orElseThrow(() -> missingFieldException(CONFIG_DATABASE));
wikiDb = new SqliteDb(connect(dbFile));
}
}