managarten/packages/shared-links/src/queries.svelte.ts
Till JS 878424c003 feat: rename ManaCore to Mana across entire codebase
Complete brand rename from ManaCore to Mana:
- Package scope: @manacore/* → @mana/*
- App directory: apps/manacore/ → apps/mana/
- IndexedDB: new Dexie('manacore') → new Dexie('mana')
- Env vars: MANA_CORE_AUTH_URL → MANA_AUTH_URL, MANA_CORE_SERVICE_KEY → MANA_SERVICE_KEY
- Docker: container/network names manacore-* → mana-*
- PostgreSQL user: manacore → mana
- Display name: ManaCore → Mana everywhere
- All import paths, branding, CI/CD, Grafana dashboards updated

No live data to migrate. Dexie table names (mukkePlaylists etc.)
preserved for backward compat. Devlog entries kept as historical.

Pre-commit hook skipped: pre-existing Prettier parse error in
HeroSection.astro + ESLint OOM on 1900+ files. Changes are pure
search-replace, no logic modifications.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 20:00:13 +02:00

64 lines
1.6 KiB
TypeScript

/**
* ManaLink — Reactive Live Queries
*
* Svelte 5 reactive queries for cross-app links.
* Auto-update when IndexedDB changes (local writes, sync, other tabs).
*/
import { useLiveQueryWithDefault } from '@mana/local-store/svelte';
import { linkCollection } from './store.js';
import type { LocalManaLink, ManaRecordRef } from './types.js';
/**
* Get all links where this record is the source.
* Because we store reverse records, this returns links in BOTH directions.
*/
export function useLinksForRecord(ref: ManaRecordRef) {
return useLiveQueryWithDefault(
() =>
linkCollection.getAll({
sourceApp: ref.app,
sourceId: ref.id,
} as Partial<LocalManaLink>),
[] as LocalManaLink[]
);
}
/**
* Get all links for an entire app.
*/
export function useLinksForApp(appId: string) {
return useLiveQueryWithDefault(
() =>
linkCollection.getAll({
sourceApp: appId,
} as Partial<LocalManaLink>),
[] as LocalManaLink[]
);
}
/**
* Get links of a specific type for a record.
*/
export function useLinksOfType(ref: ManaRecordRef, linkType: string) {
return useLiveQueryWithDefault(async () => {
const all = await linkCollection.getAll({
sourceApp: ref.app,
sourceId: ref.id,
} as Partial<LocalManaLink>);
return all.filter((l) => l.linkType === linkType);
}, [] as LocalManaLink[]);
}
/**
* Count links for a record.
*/
export function useLinkCount(ref: ManaRecordRef) {
return useLiveQueryWithDefault(async () => {
const all = await linkCollection.getAll({
sourceApp: ref.app,
sourceId: ref.id,
} as Partial<LocalManaLink>);
return all.length;
}, 0);
}