Move db to util/loki

This commit is contained in:
Jonathan Staab 2023-07-06 17:27:20 -07:00
parent d6709f201b
commit 8cf4306cb3
40 changed files with 41 additions and 45 deletions

View File

@ -1,14 +1,11 @@
# Current
- [ ] Refactor
- [ ] Rename room to channel
- [ ] Delete messages when leaving a room
- [ ] Convert watch to take the table object instead of its name
- [ ] Add userEvents and fill out isUserEvent
- [ ] Add pagination to chat/dms
- [ ] Fix scrolling to to when modal is open
- [ ] Change pool to take urls, not relay objects
- [ ] Take connection health into account when building hints
- [ ] Re-apply filter to get rid of unwanted events
- [ ] Test migration
- [ ] Add custom emoji support
- [ ] Fork and white label blowater

View File

@ -19,7 +19,7 @@
fetchJson,
tryFetch,
} from "src/util/misc"
import {onReady} from "src/agent/db"
import {onReady} from "src/util/loki"
import * as system from "src/system"
import pool from "src/agent/pool"
import {loadAppData} from "src/app/state"

View File

@ -1,7 +1,7 @@
<script lang="ts">
import type {ComponentType, SvelteComponentTyped} from "svelte"
import {Route} from "svelte-routing"
import {onReady} from "src/agent/db"
import {onReady} from "src/util/loki"
import {base64DecodeOrPlainWebSocketURL} from "src/util/misc"
import Notifications from "src/app/views/Notifications.svelte"
import Bech32Entity from "src/app/views/Bech32Entity.svelte"

View File

@ -3,7 +3,7 @@
import {theme, installPrompt} from "src/partials/state"
import PersonCircle from "src/app/shared/PersonCircle.svelte"
import {keys, directory, alerts} from "src/system"
import {watch} from "src/agent/db"
import {watch} from "src/util/loki"
import pool from "src/agent/pool"
import {routes, slowConnections, menuIsOpen} from "src/app/state"

View File

@ -14,7 +14,7 @@
import NoteActions from "src/app/shared/NoteActions.svelte"
import Card from "src/partials/Card.svelte"
import {nip05, directory, routing, social} from "src/system"
import {watch} from "src/agent/db"
import {watch} from "src/util/loki"
import NoteContent from "src/app/shared/NoteContent.svelte"
export let note

View File

@ -6,7 +6,7 @@
import Content from "src/partials/Content.svelte"
import ImageCircle from "src/partials/ImageCircle.svelte"
import {chat} from "src/system"
import {watch} from "src/agent/db"
import {watch} from "src/util/loki"
export let note

View File

@ -5,7 +5,7 @@
import Popover from "src/partials/Popover.svelte"
import OverflowMenu from "src/partials/OverflowMenu.svelte"
import {keys, routing, social, directory} from "src/system"
import {watch} from "src/agent/db"
import {watch} from "src/util/loki"
import pool from "src/agent/pool"
import {addToList} from "src/app/state"

View File

@ -4,7 +4,7 @@
import ImageCircle from "src/partials/ImageCircle.svelte"
import LogoSvg from "src/partials/LogoSvg.svelte"
import {directory} from "src/system"
import {watch} from "src/agent/db"
import {watch} from "src/util/loki"
export let pubkey
export let size = 4

View File

@ -5,7 +5,7 @@
import {numberFmt} from "src/util/misc"
import {modal} from "src/partials/state"
import {social, routing} from "src/system"
import {watch} from "src/agent/db"
import {watch} from "src/util/loki"
import network from "src/agent/network"
import pool from "src/agent/pool"

View File

@ -1,7 +1,7 @@
<script lang="ts">
import Anchor from "src/partials/Anchor.svelte"
import {keys, routing, directory, social, nip05} from "src/system"
import {watch} from "src/agent/db"
import {watch} from "src/util/loki"
import PersonCircle from "src/app/shared/PersonCircle.svelte"
import PersonAbout from "src/app/shared/PersonAbout.svelte"
import {routes} from "src/app/state"

View File

@ -3,7 +3,7 @@
import {modal} from "src/partials/state"
import OverflowMenu from "src/partials/OverflowMenu.svelte"
import {keys, routing} from "src/system"
import {watch} from "src/agent/db"
import {watch} from "src/util/loki"
import {addToList} from "src/app/state"
export let relay

View File

@ -10,7 +10,7 @@
import Rating from "src/partials/Rating.svelte"
import Anchor from "src/partials/Anchor.svelte"
import {keys, routing, directory} from "src/system"
import {watch} from "src/agent/db"
import {watch} from "src/util/loki"
import pool from "src/agent/pool"
import {loadAppData} from "src/app/state"

View File

@ -8,7 +8,7 @@
import RelayCard from "src/app/shared/RelayCard.svelte"
import {routing} from "src/system"
import network from "src/agent/network"
import {watch} from "src/agent/db"
import {watch} from "src/util/loki"
export let q = ""
export let limit = 50

View File

@ -9,7 +9,7 @@
import NoteContent from "src/app/shared/NoteContent.svelte"
import {keys, cmd, chat, routing, settings} from "src/system"
import network from "src/agent/network"
import {watch} from "src/agent/db"
import {watch} from "src/util/loki"
export let entity

View File

@ -8,7 +8,7 @@
import Anchor from "src/partials/Anchor.svelte"
import ChatListItem from "src/app/views/ChatListItem.svelte"
import {keys, chat, routing} from "src/system"
import {watch} from "src/agent/db"
import {watch} from "src/util/loki"
import network from "src/agent/network"
let q = ""

View File

@ -9,7 +9,7 @@
import Popover from "src/partials/Popover.svelte"
import Feed from "src/app/shared/Feed.svelte"
import {keys, content, social} from "src/system"
import {watch} from "src/agent/db"
import {watch} from "src/util/loki"
const {canSign} = keys
const lists = watch(content.lists, () => content.getUserLists())

View File

@ -5,7 +5,7 @@
import Content from "src/partials/Content.svelte"
import ListSummary from "src/app/shared/ListSummary.svelte"
import {content} from "src/system"
import {watch} from "src/agent/db"
import {watch} from "src/util/loki"
const lists = watch(content.lists, () => content.getUserLists())

View File

@ -8,7 +8,7 @@
import Content from "src/partials/Content.svelte"
import ListSummary from "src/app/shared/ListSummary.svelte"
import {content} from "src/system"
import {watch} from "src/agent/db"
import {watch} from "src/util/loki"
export let item

View File

@ -13,7 +13,7 @@
import Modal from "src/partials/Modal.svelte"
import RelayCard from "src/app/shared/RelayCard.svelte"
import {DEFAULT_RELAYS, routing, keys} from "src/system"
import {watch} from "src/agent/db"
import {watch} from "src/util/loki"
import network from "src/agent/network"
import pool from "src/agent/pool"
import {loadAppData} from "src/app/state"

View File

@ -2,7 +2,7 @@
import {fly} from "src/util/transition"
import Anchor from "src/partials/Anchor.svelte"
import Content from "src/partials/Content.svelte"
import {dropAll} from "src/agent/db"
import {dropAll} from "src/util/loki"
let confirmed = false

View File

@ -6,7 +6,7 @@
import Channel from "src/partials/Channel.svelte"
import Anchor from "src/partials/Anchor.svelte"
import NoteContent from "src/app/shared/NoteContent.svelte"
import {watch} from "src/agent/db"
import {watch} from "src/util/loki"
import network from "src/agent/network"
import {keys, routing, directory, cmd, chat} from "src/system"
import {routes} from "src/app/state"

View File

@ -6,7 +6,7 @@
import Content from "src/partials/Content.svelte"
import MessagesListItem from "src/app/views/MessagesListItem.svelte"
import {chat} from "src/system"
import {watch} from "src/agent/db"
import {watch} from "src/util/loki"
export let activeTab = "messages"

View File

@ -15,7 +15,7 @@
import Content from "src/partials/Content.svelte"
import Notification from "src/app/views/Notification.svelte"
import {social, alerts, cache} from "src/system"
import {watch} from "src/agent/db"
import {watch} from "src/util/loki"
const {lastChecked} = alerts
const tabs = ["Mentions & Replies", "Reactions"]

View File

@ -6,7 +6,7 @@
import Content from "src/partials/Content.svelte"
import PersonInfo from "src/app/shared/PersonInfo.svelte"
import {DEFAULT_FOLLOWS, routing, social, directory} from "src/system"
import {watch} from "src/agent/db"
import {watch} from "src/util/loki"
import {modal} from "src/partials/state"
const {searchProfiles} = directory

View File

@ -8,7 +8,7 @@
import Content from "src/partials/Content.svelte"
import RelayCard from "src/app/shared/RelayCard.svelte"
import {routing} from "src/system"
import {watch} from "src/agent/db"
import {watch} from "src/util/loki"
let q = ""
let search

View File

@ -14,7 +14,7 @@
import PersonRelays from "src/app/shared/PersonRelays.svelte"
import {nip05, directory, routing} from "src/system"
import pool from "src/agent/pool"
import {watch} from "src/agent/db"
import {watch} from "src/util/loki"
import {routes} from "src/app/state"
import PersonCircle from "src/app/shared/PersonCircle.svelte"
import PersonAbout from "src/app/shared/PersonAbout.svelte"

View File

@ -5,7 +5,7 @@
import Anchor from "src/partials/Anchor.svelte"
import PersonActions from "src/app/shared/PersonActions.svelte"
import {nip05, directory, settings, routing} from "src/system"
import {watch} from "src/agent/db"
import {watch} from "src/util/loki"
import PersonCircle from "src/app/shared/PersonCircle.svelte"
import PersonAbout from "src/app/shared/PersonAbout.svelte"
import PersonNotes from "src/app/shared/PersonNotes.svelte"

View File

@ -4,7 +4,7 @@
import Content from "src/partials/Content.svelte"
import RelayCard from "src/app/shared/RelayCard.svelte"
import {routing} from "src/system"
import {watch} from "src/agent/db"
import {watch} from "src/util/loki"
import {modal} from "src/partials/state"
const relays = watch(routing.policies, () => routing.getUserRelays())

View File

@ -14,7 +14,7 @@
import PersonInfo from "src/app/shared/PersonInfo.svelte"
import {keys, directory, routing, content} from "src/system"
import network from "src/agent/network"
import {watch} from "src/agent/db"
import {watch} from "src/util/loki"
let q = ""
let options = []

View File

@ -4,7 +4,7 @@
import {sleep} from "src/util/misc"
import Spinner from "src/partials/Spinner.svelte"
import {keys, directory, chat} from "src/system"
import {watch} from "src/agent/db"
import {watch} from "src/util/loki"
export let id
export let sendMessage

View File

@ -2,7 +2,7 @@ import {sortBy} from "ramda"
import {synced} from "src/util/misc"
import {Tags, isLike, findReplyId, findRootId} from "src/util/nostr"
import {derived} from "svelte/store"
import {Table, watch} from "src/agent/db"
import {Table, watch} from "src/util/loki"
export default ({keys, sync, chat, social, isUserEvent}) => {
const events = new Table("alerts/events", "id", {sort: sortBy(e => -e.created_at)})

View File

@ -1,5 +1,5 @@
import {sortBy} from "ramda"
import {Table} from "src/agent/db"
import {Table} from "src/util/loki"
export default ({keys, sync, social}) => {
const events = new Table("cache/events", "id", {

View File

@ -2,7 +2,7 @@ import {last, sortBy, pick, uniq, fromPairs, pluck, without} from "ramda"
import {get} from "svelte/store"
import {tryJson, tryFunc} from "src/util/misc"
import {Tags, channelAttrs} from "src/util/nostr"
import {Table} from "src/agent/db"
import {Table} from "src/util/loki"
export default ({keys, sync, getCmd, getUserWriteRelays}) => {
const channels = new Table("chat/channels", "id", {

View File

@ -2,7 +2,7 @@ import {nip19} from "nostr-tools"
import {sortBy, nth, inc} from "ramda"
import {fuzzy} from "src/util/misc"
import {Tags} from "src/util/nostr"
import {Table, watch} from "src/agent/db"
import {Table, watch} from "src/util/loki"
export default ({keys, sync, getCmd, getUserWriteRelays}) => {
const topics = new Table("content/topics", "name", {sort: sortBy(e => -e.count)})

View File

@ -1,7 +1,7 @@
import {nip19} from "nostr-tools"
import {ellipsize} from "hurdak/lib/hurdak"
import {tryJson, fuzzy} from "src/util/misc"
import {Table, watch} from "src/agent/db"
import {Table, watch} from "src/util/loki"
export default ({keys, sync, sortByGraph}) => {
const profiles = new Table("directory/profiles", "pubkey", {max: 5000, sort: sortByGraph})

View File

@ -1,7 +1,7 @@
import {last} from "ramda"
import {nip05} from "nostr-tools"
import {tryFunc, tryJson} from "src/util/misc"
import {Table} from "src/agent/db"
import {Table} from "src/util/loki"
export default ({sync, sortByGraph}) => {
const handles = new Table("nip05/handles", "pubkey", {max: 5000, sort: sortByGraph})

View File

@ -1,7 +1,7 @@
import {fetchJson, tryFunc, tryJson, hexToBech32, bech32ToHex} from "src/util/misc"
import {invoiceAmount} from "src/util/lightning"
import {Tags} from "src/util/nostr"
import {Table} from "src/agent/db"
import {Table} from "src/util/loki"
const getLnUrl = address => {
// Try to parse it as a lud06 LNURL

View File

@ -5,7 +5,7 @@ import {fuzzy, chain, tryJson, now, fetchJson} from "src/util/misc"
import {warn} from "src/util/logger"
import {normalizeRelayUrl, findReplyId, isShareableRelay, Tags} from "src/util/nostr"
import {DUFFLEPUD_URL, DEFAULT_RELAYS, SEARCH_RELAYS, FORCE_RELAYS} from "src/system/env"
import {Table, watch} from "src/agent/db"
import {Table, watch} from "src/util/loki"
export default ({keys, sync, getCmd, sortByGraph}) => {
const relays = new Table("routing/relays", "url", {sort: sortBy(e => -e.count)})

View File

@ -3,7 +3,7 @@ import {get} from "svelte/store"
import {ensurePlural} from "hurdak/lib/hurdak"
import {now} from "src/util/misc"
import {Tags, findReplyId, findRootId} from "src/util/nostr"
import {Table} from "src/agent/db"
import {Table} from "src/util/loki"
export default ({keys, sync, getCmd, getUserWriteRelays}) => {
// Don't delete the user's own info or those of direct follows

View File

@ -168,11 +168,10 @@ type WatchStore<T> = Writable<T> & {
refresh: () => void
}
export const watch = (namesOrTables, f) => {
namesOrTables = ensurePlural(namesOrTables)
export const watch = (tables, f) => {
tables = ensurePlural(tables)
const store = writable(null) as WatchStore<any>
const tables = namesOrTables.map(name => (is(Table, name) ? name : registry[name]))
const names = pluck("name", tables)
// Initialize synchronously if possible