fixed bugs introduced by switching from titles as ids to separate ids

This commit is contained in:
2025-09-12 00:59:19 +02:00
parent 667052e3c4
commit f13da92b48
6 changed files with 14 additions and 12 deletions

View File

@@ -126,6 +126,7 @@ public class WikiPage implements Mappable {
ID,id, ID,id,
CONTENT,Map.of(SOURCE,content,RENDERED,markdown(content)), CONTENT,Map.of(SOURCE,content,RENDERED,markdown(content)),
MEMBERS,memberMap, MEMBERS,memberMap,
TITLE,title,
VERSION,version, VERSION,version,
VERSIONS,versions VERSIONS,versions
); );

View File

@@ -90,8 +90,8 @@
<Route path="/user/oidc/add" component={EditService} /> <Route path="/user/oidc/add" component={EditService} />
<Route path="/user/oidc/edit/:serviceName" component={EditService} /> <Route path="/user/oidc/edit/:serviceName" component={EditService} />
<Route path="/wiki" component={WikiIndex} /> <Route path="/wiki" component={WikiIndex} />
<Route path="/wiki/:id/view" component={WikiPage} /> <Route path="/wiki/:key/view" component={WikiPage} />
<Route path="/wiki/:id/version/:version" component={WikiPage} /> <Route path="/wiki/:key/version/:version" component={WikiPage} />
<Route> <Route>
Not found! Not found!
</Route> </Route>

View File

@@ -11,7 +11,7 @@
import TagList from '../tags/TagList.svelte'; import TagList from '../tags/TagList.svelte';
let error = $state(null); let error = $state(null);
let { id, version } = $props(); let { key, version } = $props();
let page = $state(null); let page = $state(null);
let router = useTinyRouter(); let router = useTinyRouter();
let members = $state({}); let members = $state({});
@@ -64,7 +64,7 @@
} }
async function loadPage(){ async function loadPage(){
let path = `wiki/page/${id}`; let path = `wiki/page/${key}`;
if (version) path += `/version/${version}`; if (version) path += `/version/${version}`;
const url = api(path); const url = api(path);
const res = await fetch(url,{credentials:'include'}); const res = await fetch(url,{credentials:'include'});
@@ -79,7 +79,7 @@
} }
async function patch(data){ async function patch(data){
const url = api(`wiki/page/${id}`); const url = api(`wiki/page/${page.id}`);
const res = await fetch(url,{ const res = await fetch(url,{
credentials:'include', credentials:'include',
method:'PATCH', method:'PATCH',
@@ -103,10 +103,10 @@
<span class="version">{t('version')}</span> <span class="version">{t('version')}</span>
{#each page.versions as v} {#each page.versions as v}
<span class="version"> <span class="version">
<a href={`/wiki/${id}/version/${v}`} {onclick} class={page.version == v?'selected':''}>{v}</a> &nbsp; <a href={`/wiki/${key}/version/${v}`} {onclick} class={page.version == v?'selected':''}>{v}</a> &nbsp;
</span> </span>
{/each} {/each}
<h2>{id}</h2> <h2>{page.title}</h2>
{#if page.version != page.versions[0]} {#if page.version != page.versions[0]}
<span class="warn">{t('not_recent_version')}</span> <span class="warn">{t('not_recent_version')}</span>
{/if} {/if}
@@ -132,9 +132,9 @@
</tbody> </tbody>
</table> </table>
{/if} {/if}
<TagList module="wiki" {id} user_list={Object.keys(page.members).map(id => +id)} /> <TagList module="wiki" id={page.id} user_list={Object.keys(page.members).map(id => +id)} />
<div class="notes"> <div class="notes">
<h3>{t('notes')}</h3> <h3>{t('notes')}</h3>
<Notes module="wiki" entity_id={id} /> <Notes module="wiki" entity_id={page.id} />
</div> </div>
{/if} {/if}

View File

@@ -256,6 +256,7 @@ CREATE TABLE IF NOT EXISTS "{0}" (
public void updateId(String module, Object oldId, Object newId) { public void updateId(String module, Object oldId, Object newId) {
try { try {
update(TABLE_NOTES).set(ENTITY_ID).where(MODULE,equal(module)).where(ENTITY_ID,equal(oldId)).prepare(db).apply(newId).close(); update(TABLE_NOTES).set(ENTITY_ID).where(MODULE,equal(module)).where(ENTITY_ID,equal(oldId)).prepare(db).apply(newId).close();
LOG.log(DEBUG,"Updated note @ {0}.{1} → {0}.{2}",module,oldId,newId);
} catch (SQLException e) { } catch (SQLException e) {
throw databaseException("Failed to update {0}.{1} → {0}.{2}",module,oldId,newId); throw databaseException("Failed to update {0}.{1} → {0}.{2}",module,oldId,newId);
} }

View File

@@ -23,7 +23,7 @@ import java.util.HashMap;
import java.util.Map; import java.util.Map;
public class SqliteDb extends BaseDb implements ProjectDb { public class SqliteDb extends BaseDb implements ProjectDb {
private static final System.Logger LOG = System.getLogger("Sqlite4Project"); private static final System.Logger LOG = System.getLogger("ProjectDb");
private static final int INITIAL_DB_VERSION = 1; private static final int INITIAL_DB_VERSION = 1;
public SqliteDb(Connection connection) { public SqliteDb(Connection connection) {

View File

@@ -24,7 +24,7 @@ import java.sql.SQLException;
import java.util.*; import java.util.*;
public class SqliteDb extends BaseDb implements WikiDb { public class SqliteDb extends BaseDb implements WikiDb {
private static final System.Logger LOG = System.getLogger("TaskDb"); private static final System.Logger LOG = System.getLogger("WikiDb");
public SqliteDb(Connection connection) { public SqliteDb(Connection connection) {
super(connection); super(connection);
@@ -286,7 +286,7 @@ public class SqliteDb extends BaseDb implements WikiDb {
if (page.isDirty(MEMBERS)){ if (page.isDirty(MEMBERS)){
Query.delete().from(TABLE_PAGES_USERS).where(PAGE_ID,Condition.equal(page.title())).where(USER_ID,Condition.notIn(page.members().keySet().toArray())).execute(db); Query.delete().from(TABLE_PAGES_USERS).where(PAGE_ID,Condition.equal(page.title())).where(USER_ID,Condition.notIn(page.members().keySet().toArray())).execute(db);
var query = replaceInto(TABLE_PAGES_USERS,PAGE_ID,USER_ID,PERMISSIONS); var query = replaceInto(TABLE_PAGES_USERS,PAGE_ID,USER_ID,PERMISSIONS);
for (var member : page.members().entrySet()) query.values(page.title(),member.getKey(),wikiPermissionCode(member.getValue().permission())); for (var member : page.members().entrySet()) query.values(page.id(),member.getKey(),wikiPermissionCode(member.getValue().permission()));
query.execute(db).close(); query.execute(db).close();
} }
return page; return page;