mirror of
https://github.com/vrtmrz/obsidian-livesync.git
synced 2026-08-31 07:47:05 +00:00
feat: configure Adaptive PostgREST journal remotes
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
import { DEFAULT_SETTINGS } from "@vrtmrz/livesync-commonlib/compat/common/types";
|
||||
import {
|
||||
REMOTE_POSTGREST,
|
||||
journalProtocolConfigurationForSettings,
|
||||
parsePostgRESTConnectionURI,
|
||||
serialisePostgRESTConnectionURI,
|
||||
type PostgRESTConnection,
|
||||
type PostgRESTSyncSetting,
|
||||
} from "@vrtmrz/livesync-commonlib/journal-storage";
|
||||
|
||||
export type PostgRESTJournalForm = PostgRESTConnection & {
|
||||
expectedRepositoryId: string;
|
||||
};
|
||||
|
||||
const emptyPostgRESTConnection: PostgRESTConnection = {
|
||||
apiKey: "",
|
||||
endpoint: "",
|
||||
schema: "livesync_api",
|
||||
useCustomRequestHandler: false,
|
||||
vaultCredential: "",
|
||||
vaultId: "",
|
||||
};
|
||||
|
||||
function resolveProtocol(settings: PostgRESTSyncSetting) {
|
||||
return journalProtocolConfigurationForSettings({
|
||||
...DEFAULT_SETTINGS,
|
||||
remoteType: REMOTE_POSTGREST,
|
||||
...settings,
|
||||
journalFormat: "adaptive-v1",
|
||||
packReadPolicy: "whole-pack",
|
||||
});
|
||||
}
|
||||
|
||||
export function postgRESTJournalFormFromSettings(settings: PostgRESTSyncSetting): PostgRESTJournalForm {
|
||||
const activeConnectionURI = settings.postgrestActiveConnectionURI.trim();
|
||||
const connection = activeConnectionURI
|
||||
? parsePostgRESTConnectionURI(activeConnectionURI)
|
||||
: emptyPostgRESTConnection;
|
||||
const protocol = resolveProtocol({
|
||||
...settings,
|
||||
expectedRepositoryId: activeConnectionURI ? settings.expectedRepositoryId : "",
|
||||
});
|
||||
return {
|
||||
...connection,
|
||||
expectedRepositoryId: protocol.expectedRepositoryId,
|
||||
};
|
||||
}
|
||||
|
||||
export function postgRESTSyncSettingsFromForm(form: PostgRESTJournalForm): PostgRESTSyncSetting {
|
||||
const settings: PostgRESTSyncSetting = {
|
||||
postgrestActiveConnectionURI: serialisePostgRESTConnectionURI({
|
||||
apiKey: form.apiKey.trim(),
|
||||
endpoint: form.endpoint.trim(),
|
||||
schema: form.schema.trim(),
|
||||
useCustomRequestHandler: form.useCustomRequestHandler,
|
||||
vaultCredential: form.vaultCredential,
|
||||
vaultId: form.vaultId.trim(),
|
||||
}),
|
||||
expectedRepositoryId: form.expectedRepositoryId.trim(),
|
||||
journalFormat: "adaptive-v1",
|
||||
packReadPolicy: "whole-pack",
|
||||
};
|
||||
resolveProtocol(settings);
|
||||
return settings;
|
||||
}
|
||||
Reference in New Issue
Block a user