diff --git a/frontend/src/Components/Menu.svelte b/frontend/src/Components/Menu.svelte
index 94968a6..10003a7 100644
--- a/frontend/src/Components/Menu.svelte
+++ b/frontend/src/Components/Menu.svelte
@@ -58,6 +58,7 @@ onMount(fetchModules);
go('/bookmark')}>{t('bookmarks')}
go('/notes')}>{t('notes')}
go('/time')}>{t('timetracking')}
+ go('/wiki')}>{t('wiki')}
{t('tutorial')}
{#each modules as module,i}
{#if module.name.trim()}{module.name}{/if}
diff --git a/wiki/build.gradle.kts b/wiki/build.gradle.kts
new file mode 100644
index 0000000..bc92fdf
--- /dev/null
+++ b/wiki/build.gradle.kts
@@ -0,0 +1,5 @@
+description = "Umbrella : Wiki"
+
+dependencies{
+ implementation(project(":core"))
+}
\ No newline at end of file
diff --git a/wiki/src/main/java/de/srsoftware/umbrella/wiki/Constants.java b/wiki/src/main/java/de/srsoftware/umbrella/wiki/Constants.java
index 3b3c627..830f1f4 100644
--- a/wiki/src/main/java/de/srsoftware/umbrella/wiki/Constants.java
+++ b/wiki/src/main/java/de/srsoftware/umbrella/wiki/Constants.java
@@ -5,4 +5,10 @@ public class Constants {
private Constants(){}
public static final String CONFIG_DATABASE = "umbrella.modules.wiki.database";
+ public static final String CONTENT = "content";
+ public static final String PAGE_ID = "page_id";
+ public static final String PERMISSIONS = "permissions";
+ public static final String TABLE_PAGES = "pages";
+ public static final String TABLE_PAGES_USERS = "pages_users";
+ public static final String VERSION = "version";
}
diff --git a/wiki/src/main/java/de/srsoftware/umbrella/wiki/SqliteDb.java b/wiki/src/main/java/de/srsoftware/umbrella/wiki/SqliteDb.java
index 4f7d447..2098af0 100644
--- a/wiki/src/main/java/de/srsoftware/umbrella/wiki/SqliteDb.java
+++ b/wiki/src/main/java/de/srsoftware/umbrella/wiki/SqliteDb.java
@@ -3,6 +3,22 @@ package de.srsoftware.umbrella.wiki;
import de.srsoftware.umbrella.core.BaseDb;
import java.sql.Connection;
+import java.sql.SQLException;
+
+import static de.srsoftware.umbrella.core.Constants.*;
+import static de.srsoftware.umbrella.core.Constants.DESCRIPTION;
+import static de.srsoftware.umbrella.core.Constants.DUE_DATE;
+import static de.srsoftware.umbrella.core.Constants.ERROR_FAILED_CREATE_TABLE;
+import static de.srsoftware.umbrella.core.Constants.EST_TIME;
+import static de.srsoftware.umbrella.core.Constants.NAME;
+import static de.srsoftware.umbrella.core.Constants.NO_INDEX;
+import static de.srsoftware.umbrella.core.Constants.SHOW_CLOSED;
+import static de.srsoftware.umbrella.core.Constants.START_DATE;
+import static de.srsoftware.umbrella.core.Constants.STATUS;
+import static de.srsoftware.umbrella.core.model.Status.OPEN;
+import static de.srsoftware.umbrella.wiki.Constants.*;
+import static java.lang.System.Logger.Level.ERROR;
+import static java.text.MessageFormat.format;
public class SqliteDb extends BaseDb implements WikiDb {
private static final System.Logger LOG = System.getLogger("TaskDb");
@@ -16,9 +32,35 @@ public class SqliteDb extends BaseDb implements WikiDb {
protected int createTables() {
int currentVersion = createSettingsTable();
switch (currentVersion){
- case 0: ; // TODO
+ case 0:
+ createPagesTable();
+ createPagesUsersTable();
}
- return setCurrentVersion(3);
+ return setCurrentVersion(1);
+ }
+
+ private void createPagesUsersTable() {
+ var sql = "CREATE TABLE IF NOT EXISTS {0} ( {1} VARCHAR(255) NOT NULL, {2} INT NOT NULL, {3} INT NOT NULL, PRIMARY KEY({1}, {2}))";
+ try {
+ var stmt = db.prepareStatement(format(sql, TABLE_PAGES_USERS, PAGE_ID, USER_ID, PERMISSIONS));
+ stmt.execute();
+ stmt.close();
+ } catch (SQLException e) {
+ LOG.log(ERROR, ERROR_FAILED_CREATE_TABLE, TABLE_PAGES, e);
+ throw new RuntimeException(e);
+ }
+ }
+
+ private void createPagesTable() {
+ var sql = "CREATE TABLE IF NOT EXISTS {0} ( {1} VARCHAR(255) NOT NULL, {2} INT NOT NULL, {3} TEXT NOT NULL, PRIMARY KEY({1},{2}))";
+ try {
+ var stmt = db.prepareStatement(format(sql, TABLE_PAGES, ID, VERSION, CONTENT));
+ stmt.execute();
+ stmt.close();
+ } catch (SQLException e) {
+ LOG.log(ERROR, ERROR_FAILED_CREATE_TABLE, TABLE_PAGES, e);
+ throw new RuntimeException(e);
+ }
}
}
\ No newline at end of file