https://github.com/adrianmjim/nestjs-libsql-client
NestJS TURSO libsql integration
https://github.com/adrianmjim/nestjs-libsql-client
database libsql-client libsql-client-ts module nestjs postgres sql sqlite turso turso-db
Last synced: 4 months ago
JSON representation
NestJS TURSO libsql integration
- Host: GitHub
- URL: https://github.com/adrianmjim/nestjs-libsql-client
- Owner: adrianmjim
- License: mit
- Created: 2025-01-07T21:51:02.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-09-22T17:59:37.000Z (5 months ago)
- Last Synced: 2025-09-22T19:42:22.017Z (5 months ago)
- Topics: database, libsql-client, libsql-client-ts, module, nestjs, postgres, sql, sqlite, turso, turso-db
- Language: TypeScript
- Homepage:
- Size: 395 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.md
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README

[](https://codecov.io/gh/Adrianmjim/nestjs-libsql-client)
[](https://npmjs.org/package/nestjs-libsql-client)
[](https://www.npmjs.com/package/nestjs-libsql-client)
## Description
The [Turso Lib SQL client](https://github.com/tursodatabase/libsql-client) module for [NestJS](https://github.com/nestjs/nest).
## Installation
Install the dependencies via `npm`, `pnpm` or `yarn`:
npm:
```bash
$ npm i -s @nestjs/common @libsql/client nestjs-libsql-client
```
pnpm:
```bash
$ pnpm add @nestjs/common @libsql/client nestjs-libsql-client
```
yarn:
```bash
$ yarn add @nestjs/common @libsql/client nestjs-libsql-client
```
## Configuration
First, import the module into your NestJS application and configure it using the configuration url provided by Turso or desired local configuration
```typescript
import { Module } from '@nestjs/common';
import { LibSqlModule } from 'nestjs-libsql-client';
@Module({
imports: [
LibSqlModule.forRoot({
url: 'file:local.db',
}),
],
})
export class AppModule {}
```
Or, You can configure it asynchronously as follows:
```typescript
import { Module } from '@nestjs/common';
import { LibSqlModule } from 'nestjs-libsql-client';
@Module({
imports: [
LibSqlModule.forRootAsync({
imports: [],
inject: [],
useFactory: () => ({
url: 'file:local.db',
}),
}),
],
})
export class AppModule {}
```
## Multiple connections
In certain situations, we will need to connect to different Turso databases, with this module this is possible:
```typescript
import { Module } from '@nestjs/common';
import { LibSqlModule } from 'nestjs-libsql-client';
@Module({
imports: [
LibSqlModule.forRoot([
{
name: 'connection1',
libSqlConfig: {
url: 'file:local.db',
},
},
{
name: 'connection2',
libSqlConfig: {
url: 'file:local.db2',
},
},
]),
],
})
export class AppModule {}
```
Or asynchronously:
```typescript
import { Module } from '@nestjs/common';
import { LibSqlModule } from 'nestjs-libsql-client';
@Module({
imports: [
LibSqlModule.forRootAsync({
imports: [],
inject: [],
useFactory: () => ([
{
name: 'connection1',
libSqlConfig: {
url: 'file:local.db',
},
},
{
name: 'connection2',
libSqlConfig: {
url: 'file:local.db2',
},
},
]),
}),
],
})
export class AppModule {}
```
## Usage
First, inject the client into the module where you want to use it:
```typescript
import { Module } from '@nestjs/common';
import { LibSqlModule } from 'nestjs-libsql-client';
@Module({
imports: [
LibSqlModule.injectClient(),
],
})
export class CatModule {}
```
Or, for a specific connection:
```typescript
import { Module } from '@nestjs/common';
import { LibSqlModule } from 'nestjs-libsql-client';
@Module({
imports: [
LibSqlModule.injectClient('connection1', 'connection2'),
],
})
export class CatModule {}
```
Now you can use the Turso libsql client in any provider of your module, just use `InjectLibSqlClient` decorator:
```typescript
import { Client } from '@libsql/client';
import { InjectLibSqlClient } from 'nestjs-libsql-client';
export class CatService {
constructor(@InjectLibSqlClient() private readonly libSqlClient: Client) {}
public doSomething(): void {
}
}
```
Or, for a specific connection:
```typescript
import { Client } from '@libsql/client';
import { InjectLibSqlClient } from 'nestjs-libsql-client';
export class CatService {
constructor(
@InjectLibSqlClient('connection1') private readonly libSqlClient: Client,
@InjectLibSqlClient('connection2') private readonly libSqlClient2: Client,
) {}
public doSomething(): void {
}
}
```
It's also possible to use the `InjectLibSqlClient` decorator to inject the libsql client when you don't want to explicitly type it with the client:
```typescript
import { InjectLibSqlClient } from 'nestjs-libsql-client';
export class CatService {
constructor(
@InjectLibSqlClient() private readonly libSqlClient: unknown,
) {}
public doSomething(): void {
}
}
```
## 🤝 Contributing [](https://github.com/adrianmjim/nestjs-libsql-client/issues)
Contributions, issues and feature requests are welcome.
## Authors
👤 **Adrián Martínez Jiménez**
- Github: [@adrianmjim](https://github.com/adrianmjim)
See also the list of contributors who [participated](https://github.com/adrianmjim/nestjs-libsql-client/contributors) in this project.
## Show Your Support
Please ⭐️ this repository if this project helped you!
## 📝 License
Copyright © 2024 [Adrián Martínez Jiménez](https://github.com/adrianmjim).
This project is licensed under the MIT License - see the [LICENSE file](LICENSE) for details.