UNPKG

@algochad/prisma-core

Version:

A comprehensive NestJS library that provides EF-Core-like operations using Prisma and GraphQL. Features LINQ-style query builders, advanced data manipulation, GraphQL integration with genql, and a unified API for both Prisma and GraphQL operations. Includ

105 lines (79 loc) 3.95 kB
# Documentation Index ## 📖 @algochad/prisma-core Documentation Welcome to the complete documentation for @algochad/prisma-core - a powerful NestJS library that brings Entity Framework Core-like operations to Prisma ORM and GraphQL. ### 🚀 Getting Started - **[Installation Guide](./installation.md)** - Set up the library in your project - **[Quick Setup Guide](./quick-setup.md)** - Complete setup with examples - **[Quick Start Patterns](./quick-start-patterns.md)** - Most commonly used Select & OrderBy patterns ### 📚 Core Concepts - **[Usage Guide](./usage-guide.md)** - Basic query operations and patterns - **[LINQ Operations](./linq-operations.md)** - Synchronous and asynchronous LINQ operations - **[Universal Repository Pattern](./repository-pattern.md)** - Three ways to access models ### ⚡ Performance & Optimization - **[Performance Benchmarks](./performance.md)** - Comprehensive benchmarking and optimization guide ### 📖 Reference - **[API Reference](./api-reference.md)** - Complete API documentation - **[Troubleshooting](./troubleshooting.md)** - Common issues and solutions - **[Examples & Tutorials](./examples.md)** - Real-world examples and tutorials ### 🤝 Community - **[Contributing](./contributing.md)** - How to contribute to the project - **[License](./LICENSE.md)** - MIT License details ## 🌟 Features Overview - **🏗️ EF-Core-like Operations**: Intuitive query building using Prisma ORM - **🌐 GraphQL Data Source Support**: Full LINQ-style queries with GraphQL APIs - **🔗 LINQ Operations**: Basic port of C# LINQ operations - **🔧 Extensible API**: Unified, type-safe API for database and GraphQL interactions - **⚡ Performance Optimized**: Built-in benchmarking and performance tools - **🏢 NestJS Integration**: Native integration for NestJS applications - **📊 Universal Repository Pattern**: Dynamic model access with full type safety - **🔄 Transaction Support**: Comprehensive transaction management (Prisma ORM) ## 📊 Quick Reference ### Most Common Patterns ```typescript // Basic query with Select and OrderBy const results = await repository.test .Where({ isActive: true }) .Select({ id: true, name: true, description: true }) .OrderBy({ name: 'asc' }) .ToArray(); // LINQ-style transformations const transformed = await repository.test .Where({ isActive: true }) .ToEnumerable() .Where((test) => test.description != null) .Select((test) => ({ id: test.id, displayName: test.name.toUpperCase(), summary: `${test.name}: ${test.description}`, })) .OrderBy((item) => item.displayName) .ToArray(); // Async performance optimization const optimized = await AsyncEnumerable.from(largeDataset) .Where(async (item) => await validateAsync(item)) .Select(async (item) => await transformAsync(item)) .ToArrayAsync(); ``` ### Repository Setup ```typescript @Injectable() export class AppRepository extends PrismaRepository { get user() { return this.model<User>('user') as any; } get post() { return this.model<Post>('post') as any; } } ``` ### Performance Guidelines - Use **Enumerable** for simple operations on small datasets (< 1,000 items) - Use **AsyncEnumerable** for complex operations and large datasets (> 1,000 items) - Use **AsQueryable()** for database-level operations with Prisma query syntax - Use **ToEnumerable()** for LINQ-style in-memory transformations ## 🔗 External Links - **📦 NPM Package**: [@algochad/prisma-core](https://www.npmjs.com/package/@algochad/prisma-core) - **🐛 GitHub Issues**: [Report Issues](https://github.com/algochad/prisma-core/issues) - **💬 GitHub Discussions**: [Community Discussions](https://github.com/algochad/prisma-core/discussions) - **🏗️ Prisma Documentation**: [Prisma Docs](https://www.prisma.io/docs) - **🏢 NestJS Documentation**: [NestJS Docs](https://docs.nestjs.com)