lightning-auth-and-payment
Version:
Lightning Network authentication and payment processing library for modern web applications
85 lines • 3.42 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.PrismaDatabaseAdapter = void 0;
exports.createPrismaAdapter = createPrismaAdapter;
/**
* Generic Prisma database adapter for the Lightning Auth library
*
* This adapter provides a bridge between the lightning-auth-and-payment library
* and Prisma ORM, making it easy to integrate Lightning authentication and payments
* with any Prisma-based application.
*
* @example
* ```typescript
* import { PrismaClient } from '@prisma/client';
* import { PrismaDatabaseAdapter } from 'lightning-auth-and-payment/adapters';
*
* const prisma = new PrismaClient();
* const databaseAdapter = new PrismaDatabaseAdapter(prisma);
* ```
*/
class PrismaDatabaseAdapter {
constructor(prisma) {
this.prisma = prisma;
// User operations
this.user = {
findUnique: (args) => this.prisma.user.findUnique(args),
findFirst: () => this.prisma.user.findFirst(),
create: (args) => this.prisma.user.create(args),
};
// Session operations
this.session = {
create: (args) => this.prisma.session.create(args),
deleteMany: (args) => this.prisma.session.deleteMany(args),
};
// Invoice operations
this.invoice = {
findUnique: (args) => this.prisma.invoice.findUnique(args),
findFirst: (args) => this.prisma.invoice.findFirst(args),
update: (args) => this.prisma.invoice.update(args),
create: (args) => this.prisma.invoice.create(args),
count: (args) => this.prisma.invoice.count(args),
};
// Series operations (optional - for content management)
this.series = {
findUnique: (args) => this.prisma.series?.findUnique(args) || Promise.resolve(null),
};
// LNURL challenge operations
this.lnurlChallenge = {
create: (args) => this.prisma.lnurlChallenge.create(args),
findUnique: (args) => this.prisma.lnurlChallenge.findUnique(args),
update: (args) => this.prisma.lnurlChallenge.update(args),
delete: (args) => this.prisma.lnurlChallenge.delete(args),
deleteMany: (args) => this.prisma.lnurlChallenge.deleteMany(args),
count: () => this.prisma.lnurlChallenge.count(),
};
// LNURL login operations
this.lnurlLogin = {
create: (args) => this.prisma.lnurlLogin.create(args),
findUnique: (args) => this.prisma.lnurlLogin.findUnique(args),
upsert: (args) => this.prisma.lnurlLogin.upsert(args),
delete: (args) => this.prisma.lnurlLogin.delete(args),
deleteMany: (args) => this.prisma.lnurlLogin.deleteMany(args),
};
// Transaction support
this.$transaction = (operations) => this.prisma.$transaction(operations);
}
}
exports.PrismaDatabaseAdapter = PrismaDatabaseAdapter;
/**
* Factory function to create a PrismaDatabaseAdapter
*
* @param prisma - PrismaClient instance
* @returns PrismaDatabaseAdapter instance
*
* @example
* ```typescript
* import { createPrismaAdapter } from 'lightning-auth-and-payment/adapters';
*
* const adapter = createPrismaAdapter(prisma);
* ```
*/
function createPrismaAdapter(prisma) {
return new PrismaDatabaseAdapter(prisma);
}
//# sourceMappingURL=prisma-database-adapter.js.map