Skip to Content
Packages@loop/database

@loop/database

Supabase client and repositories for the Loop Health health.* schema. Not used by Payload CMS (which has its own ORM) or Patient Graph (which uses Drizzle directly).

Installation

pnpm add @loop/database

Client

import { createClient, createAdminClient, getClient, getAdminClient } from '@loop/database'; // Public client (respects RLS) const client = createClient(supabaseUrl, anonKey); // Admin client (bypasses RLS) const adminClient = createAdminClient(supabaseUrl, serviceKey); // Singleton getters const client = getClient(); const admin = getAdminClient();

Repositories

import { createRepositories } from '@loop/database'; const repos = createRepositories(supabaseClient); // Available repositories repos.users // UserRepository repos.stacks // StackRepository repos.labs // LabRepository repos.biomarkers // BiomarkerRepository repos.orders // OrderRepository repos.cart // CartRepository repos.products // ProductRepository repos.notifications // NotificationRepository repos.coas // COARepository repos.embeddings // EmbeddingRepository repos.faqs // FAQRepository repos.researchPapers // ResearchPaperRepository

Knowledge Base

Embedding-based search for the help center and Luna AI:

import { generateEmbedding, searchKnowledgeBase, upsertArticleChunks, } from '@loop/database'; // Generate embedding const embedding = await generateEmbedding('How does BPC-157 work?'); // Search knowledge base const results = await searchKnowledgeBase('peptide benefits', { limit: 5 }); // Index content await upsertArticleChunks(articleId, chunks);

Used By

@loop/database is used by backend applications that need direct database access: