UNPKG

@opra/sqb

Version:

Opra SQB adapter package

78 lines (55 loc) โ€ข 2.69 kB
<div align="center"> <a href="https://oprajs.com"> <img src="https://oprajs.com/img/opra-header-block.webp" width="880" alt="OPRA โ€” Open Platform for Rich APIs" /> </a> # @opra/sqb SQL data service adapter for the OPRA framework, powered by SQB [![NPM Version][npm-image]][npm-url] [![NPM Downloads][downloads-image]][downloads-url] [![CI Tests][ci-test-image]][ci-test-url] [![Test Coverage][coveralls-image]][coveralls-url] [๐ŸŒ Documentation](https://oprajs.com) ยท [๐Ÿš€ Getting Started](https://oprajs.com/docs/introduction) ยท [๐Ÿ“ฆ Packages](https://github.com/panates/opra#packages) ยท [๐Ÿ’ฌ Issues](https://github.com/panates/opra/issues) </div> --- SQL data service adapter for the [OPRA](https://oprajs.com) framework, powered by [SQB](https://github.com/panates/sqb). Connect your relational database to OPRA's operation model with full transaction support. ## Features - **`SqbServiceBase`** โ€” Base service managing SqbClient or SqbConnection with transaction support - **`SqbCollectionService`** โ€” Table-level CRUD service with automatic query generation - **`SqbEntityService`** โ€” Row-level service for single entity operations - **`SQBAdapter`** โ€” Utility namespace: `prepareFilter()`, `parseRequest()` - Automatic translation of OPRA filter DSL to SQL WHERE clauses - `withTransaction()` helper for multi-step atomic operations - Compatible with PostgreSQL, MySQL, SQLite, and other SQB-supported databases ## Installation ```bash npm install @opra/sqb ``` ## Usage ```typescript import { SqbCollectionService } from '@opra/sqb'; import { SqbClient } from '@sqb/connect'; @HttpController({ path: 'orders' }) export class OrdersController extends SqbCollectionService<Order> { constructor(client: SqbClient) { super(Order, client, 'orders'); } @HttpOperation.Entity.FindMany({ type: Order }) findMany() { return super.findMany(); } @HttpOperation.Entity.Create({ type: Order }) async create(dto: CreateOrderDto) { return this.withTransaction(conn => super.create(dto, { connection: conn })); } } ``` ## Node Compatibility - node >= 20.x ## License Available under [MIT](LICENSE) license. [npm-image]: https://img.shields.io/npm/v/@opra/sqb [npm-url]: https://npmjs.org/package/@opra/sqb [downloads-image]: https://img.shields.io/npm/dm/@opra/sqb.svg [downloads-url]: https://npmjs.org/package/@opra/sqb [ci-test-image]: https://github.com/panates/opra/actions/workflows/test.yml/badge.svg [ci-test-url]: https://github.com/panates/opra/actions/workflows/test.yml [coveralls-image]: https://coveralls.io/repos/github/panates/opra/badge.svg?branch=main [coveralls-url]: https://coveralls.io/github/panates/opra?branch=main