Неофициальный адаптер Prisma ORM для работы с базой данных YDB через драйверный API. Пакет предоставляет фабрику PrismaYdbAdapterFactory, которая позволяет использовать Prisma Client поверх YQL-запросов.
Версия: v0.0.7.
npm install adapter-ydb@alphaПолный пример представлен в файле src/playground/main.ts. Он демонстрирует CRUD-операции с таблицей users в YDB.
Пример схемы представлен в prisma/schema.prisma.
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
provider = "postgresql"необходим для совместимости;url = env("DATABASE_URL")необходим для запуска клиента;- воспользуйтесь командой
npm prisma init; - добавьте в файл
.envAPI KEY для Prisma; на текущем этапе разработки Prisma Client требует URL, он фактически не используется и нужен лишь для совместимости; можно указать dummy-URL наprisma+postgres://accelerate.prisma-data.net.
- воспользуйтесь командой
const endpoint = 'grpc://localhost:2136'
const database = '/local'
сonst factory = new PrismaYdbAdapterFactory({ endpoint, database })
const prisma = new PrismaClient({
adapter: factory,
log: ['error']
})Для подключения потребуется развернуть локально YDB, настроенные контейнеры представлены в src/playground/docker-compose.yml
await prisma.$executeRawUnsafe(`CREATE TABLE IF NOT EXISTS users (
id Uint64,
name Utf8,
age Int32,
created_at Datetime,
PRIMARY KEY (id)
);`)
await prisma.$executeRaw(sql`
UPSERT INTO users (id, name, age, created_at)
VALUES (${uint64(user.id)}, ${user.name}, ${int32(user.age)}, CurrentUtcDatetime());
`)await prisma.$disconnect()- Обеспечить выполнение большинства операций через API Prisma ORM.
- Упростить архитектуру программного модуля.
- Убрать обёртку импорта провайдера (provider) через PostgreSQL.
- Решить проблему с невозможностью импорта в Prisma собственного провайдера БД.
- Реализовать поддержку специальных сценариев пользования:
- федеративные запросы;
- транзакционные операции.
- Реализовать автоматическое тестирование.
Проект распространяется по лицензии MIT.