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,
CONTENT,Map.of(SOURCE,content,RENDERED,markdown(content)),
MEMBERS,memberMap,
TITLE,title,
VERSION,version,
VERSIONS,versions
);

View File

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

View File

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

View File

@@ -256,6 +256,7 @@ CREATE TABLE IF NOT EXISTS "{0}" (
public void updateId(String module, Object oldId, Object newId) {
try {
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) {
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;
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;
public SqliteDb(Connection connection) {

View File

@@ -24,7 +24,7 @@ import java.sql.SQLException;
import java.util.*;
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) {
super(connection);
@@ -286,7 +286,7 @@ public class SqliteDb extends BaseDb implements WikiDb {
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);
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();
}
return page;