ydb-orm
v2.6.2
Published
YDB simple ORM implementation
Downloads
57
Readme
🗃️ YDB simple ORM
Minimal ORM library for YDB database designed for rapid development of serverless applications
Features ⭐
- Lightweight and easy-to-use methods for managing YDB databases
- Supports data models with automatic migrations and schema synchronization
- Compatible with the Fastify web server framework
Installation 📦
To install the library, run:
npm install ydb-orm
Or using yarn:
yarn add ydb-orm
Usage 📚
- As a Library
You can use the YDB ORM in your Node.js application as follows:
const { Ydb } = require('ydb-orm');
const db = Ydb.init({
// [deprecated] endpoint: process.env.YDB_ENDPOINT,
// [deprecated] database: process.env.YDB_DATABASE,
connectionString: process.env.YDB_CONNECTION_STRING,
// optional: authentication method
credential, // service account credential
token, // cloud IAM token
meta, // metadata service (e.g., from Lambda)
// optional: list of YdbModels to load
models: [
User,
],
timeout: 2000,
});
Ydb.db; // singleton instance of database- As a Fastify web server plugin
You can also register the YDB ORM as a plugin in your Fastify application:
Install fastify plugin with: npm i fastify-ydb-orm
const { YdbFastify } = require('fastify-ydb-orm');
app.register(YdbFastify, {
// [deprecated] endpoint: process.env.YDB_ENDPOINT,
// [deprecated] database: process.env.YDB_DATABASE,
connectionString: process.env.YDB_CONNECTION_STRING,
// optional: same authentication options as the library
// optional: list of YdbModels to load
models: [
User,
],
timeout: 2000,
sync: true, // enable automatic schema synchronization and migration
});
// no need to create a connection explicitly in Fastify modeEnvironment Variables 🌍
You can to set up the following environment variables to automatically load credentials:
YDB_SA_KEY - Path to the service account credential JSON file
YDB_CERTS - Path to the YDB connection certificates. 🔒
Example Model 🧑💻
Here is an example of a user model that can be defined using the YDB ORM:
import { YdbModel, YdbDataType } from 'ydb-orm';
import { nanoid } from 'nanoid';
type Fields = {
id: string,
name: string,
createdAt: Date,
};
export class User extends YdbModel implements Fields {
static schema = {
id: YdbDataType.ascii,
name: YdbDataType.ascii,
createdAt: YdbDataType.date,
};
id: Fields['id'];
name: Fields['name'];
createdAt: Fields['createdAt'];
constructor(fields: Partial<Fields>) {
super(fields);
const { name, id, createdAt } = fields;
this.id = id || nanoid();
this.name = name || '';
this.createdAt = createdAt || new Date();
}
}Running Tests with Docker 🐳
You can easily run tests using Docker. No need to set up the Docker environment variables. Just using the following command:
npm run test-docker
Once the tests are completed, you can down the docker containers with:
npm run test-docker-clean
License 📜
This project is licensed under the Apache License 2.0. See the LICENSE file for more details.
Contributing 🤝
If you would like to contribute to this project, please fork the repository and create a pull request. Any contributions to improve the library are welcome!
Author ✍️
Georgy Malkov Email: [email protected] GitHub: goshander
This README provides a short overview of the YDB Simple ORM, demonstrating its features, installation, usage, and examples. Happy coding! 🎉
