const e = require("path")
module.exports = function (o) {
const i = o.namespace("local")
;(i.require(e.join(__dirname, "../../../lib/core/hyperdb/local/local.js")),
i.collections.register({ name: "stats", schema: "@local/stats", key: [] }),
i.collections.register({ name: "migrations", schema: "@local/migration-status", key: [] }),
i.collections.register({
name: "room-migration-stats",
schema: "@local/room-migration-stats",
key: [],
}),
i.collections.register({
name: "room-migrations",
schema: "@local/room-migration",
key: ["roomKey"],
trigger: "roomMigrationsTrigger",
}),
i.indexes.register({
name: "room-migrations-by-priority",
collection: "@local/room-migrations",
key: ["priority"],
}),
i.collections.register({ name: "identity", schema: "@local/identity-record", key: [] }),
i.collections.register({ name: "hyperdht", schema: "@local/hyperdht-record", key: [] }),
i.collections.register({
name: "rooms",
schema: "@local/room",
versionField: "version",
key: ["roomKey"],
trigger: "roomsTrigger",
}),
i.indexes.register({
name: "rooms-by-discovery-key",
collection: "@local/rooms",
unique: !0,
key: ["discoveryKey"],
}),
i.indexes.register({
name: "rooms-by-timestamp",
collection: "@local/rooms",
unique: !1,
key: { type: { fields: [{ name: "timestamp", type: "uint" }] }, map: "roomsByTimestampMap" },
}),
i.indexes.register({
name: "rooms-by-type-and-timestamp",
collection: "@local/rooms",
unique: !1,
key: {
type: {
fields: [
{ name: "type", type: "uint" },
{ name: "timestamp", type: "uint" },
],
},
map: "roomsByTypeAndTimestampMap",
},
}),
i.indexes.register({
name: "rooms-by-contact",
collection: "@local/rooms",
key: {
type: { fields: [{ name: "contact", type: "@keet/member-key" }] },
map: "roomsByContactMap",
},
}),
i.indexes.register({
name: "rooms-by-wakeup-topic",
collection: "@local/rooms",
unique: !0,
key: ["capabilities.wakeupTopic"],
}),
i.indexes.register({
name: "rooms-by-mailbox",
collection: "@local/rooms",
unique: !0,
key: ["capabilities.mailboxKeyPair.publicKey"],
}),
i.indexes.register({
name: "rooms-by-discovery",
collection: "@local/rooms",
unique: !0,
key: ["capabilities.discoveryKeyPair.publicKey"],
}),
i.collections.register({
name: "room-preferences",
schema: "@local/room-preferences",
key: ["roomKey"],
}),
i.collections.register({
name: "room-metadata",
schema: "@local/room-metadata",
key: ["roomKey"],
}),
i.collections.register({ name: "writers", schema: "@local/writer", key: ["mailbox"] }),
i.collections.register({
name: "writer-appends",
schema: "@local/writer-append",
key: ["key", "responsePublicKey"],
}),
i.indexes.register({
name: "writers-by-wakeup-topic",
collection: "@local/writers",
unique: !0,
key: {
type: { fields: [{ name: "wakeupTopic", type: "@keet/room-discovery-key" }] },
map: "writersByWakeupTopicMap",
},
}),
i.indexes.register({
name: "writers-by-room-key",
collection: "@local/writers",
unique: !0,
key: {
type: { fields: [{ name: "roomKey", type: "@keet/room-key" }] },
map: "writersByRoomKeyMap",
},
}),
i.collections.register({ name: "members", schema: "@local/member", key: ["key"] }),
i.collections.register({ name: "devices", schema: "@local/device", key: ["device.key"] }),
i.collections.register({
name: "contacts",
schema: "@keet-private-id/contact",
key: ["memberKey"],
}),
i.indexes.register({
name: "blocked-contacts",
collection: "@local/contacts",
unique: !0,
key: {
type: { fields: [{ name: "memberKey", type: "@keet/member-key" }] },
map: "blockedContactsMap",
},
}),
i.collections.register({
name: "tasks",
schema: "@local/task",
key: ["priority", "timestamp", "type", "discoveryKey"],
}),
i.indexes.register({
name: "tasks-by-type",
collection: "@local/tasks",
key: ["type", "discoveryKey"],
unique: !0,
}),
i.collections.register({
name: "blob-files",
schema: "@local/file",
versionField: "version",
key: ["file.pointer.externalBlob.key", "file.pointer.externalBlob.blob.blockOffset"],
}),
i.collections.register({
name: "drive-files",
schema: "@local/file",
versionField: "version",
key: [
"file.pointer.externalDrive.key",
"file.pointer.externalDrive.path",
"file.pointer.externalDrive.version",
],
}),
i.indexes.register({
name: "blob-files-by-room",
collection: "@local/blob-files",
unique: !1,
key: ["roomKey"],
}),
i.indexes.register({
name: "drive-files-by-room",
collection: "@local/drive-files",
unique: !1,
key: ["roomKey"],
}),
i.indexes.register({
name: "blob-files-by-last-accessed",
collection: "@local/blob-files",
unique: !1,
key: ["lastAccessed"],
}),
i.indexes.register({
name: "drive-files-by-last-accessed",
collection: "@local/drive-files",
unique: !1,
key: ["lastAccessed"],
}),
i.collections.register({
name: "background-sync",
schema: "@local/background-sync-room",
key: ["discoveryPublicKey"],
}),
i.indexes.register({
name: "background-sync-by-dirty",
collection: "@local/background-sync",
unique: !1,
key: { type: { fields: [{ name: "timestamp", type: "uint" }] }, map: "dirtyByTimestampMap" },
}),
i.collections.register({ name: "debug", schema: "@local/debug" }),
i.collections.register({ name: "unreads", schema: "@local/unread", key: ["roomKey"] }),
i.collections.register({ name: "errors", schema: "@local/error-record", key: ["timestamp"] }),
i.indexes.register({
name: "errors-by-code",
collection: "@local/errors",
unique: !1,
key: ["code"],
}),
i.collections.register({ name: "file-stats", schema: "@local/file-stats", key: ["roomKey"] }),
i.collections.register({ name: "file-gc-info", schema: "@local/file-gc-info" }),
i.indexes.register({
name: "rooms-by-favorite-and-timestamp",
collection: "@local/rooms",
unique: !1,
key: {
type: { fields: [{ name: "timestamp", type: "uint" }] },
map: "roomsByFavoriteAndTimestampMap",
},
}),
i.collections.register({ name: "environment", schema: "@local/environment-record", key: [] }))
}