WayrApp Backend & Ecosystem Documentation - v1.0.0
    Preparing search index...

    Module Connection

    Manages the database connection for a single, independent WayrApp node.

    This module utilizes the Singleton pattern with Prisma ORM to provide an optimized and centralized database access layer. It is the foundational component for all data persistence within a sovereign WayrApp instance.

    The "decentralization" in WayrApp refers to empowering any community to deploy and own a complete, independent instance of the platform.

    • Sovereign Deployment: Each instance (a "node") is self-hosted and fully autonomous.
    • Data Sovereignty: Each node maintains its own private, isolated database. There is no data sharing, replication, or synchronization between nodes.
    • Self-Contained: This connection manager is the heart of a SINGLE node.

    Exequiel Trujillo

    1.0.0

    // Each query operates on this node's private database only.
    import { prisma } from '@/shared/database/connection';
    const users = await prisma.user.findMany();
    // The prisma instance is passed to route modules at application startup.
    import { prisma } from '@/shared/database/connection';
    app.use(API_BASE, createContentRoutes(prisma));
    // Tests use the prisma instance to set up and tear down the test database.
    import { prisma } from '@/shared/database/connection';
    beforeEach(async () => {
    await prisma.user.deleteMany();
    });

    // Routes receive the node's database connection
    app.use(API_BASE, createContentRoutes(prisma));
    app.use(API_BASE, createProgressRoutes(prisma));
    // Health monitoring for node administrators
    import { prisma } from '@/shared/database/connection';

    const health = await DatabaseConnection.healthCheck();
    const metrics = DatabaseConnection.getMetrics();

    // Community administrators can monitor their node's database performance
    console.log(`Node database latency: ${health.latency}ms`);
    console.log(`Total queries processed: ${metrics.totalQueries}`);
    // Integration testing for node development
    import { prisma } from '@/shared/database/connection';

    describe('Node Database Tests', () => {
    beforeEach(async () => {
    // Clean the node's test database
    await prisma.user.deleteMany();
    await prisma.course.deleteMany();
    });
    });

    Variables

    prisma