Перейти к содержимому

18. PostgreSQL

PostgreSQL — наиболее полноценно поддерживаемая база данных в Prisma. Многие специфичные функции PostgreSQL доступны напрямую через Prisma Client или через расширения схемы.

enum UserRole {
USER
ADMIN
MODERATOR
}
model User {
id Int @id
role UserRole @default(USER)
}

PostgreSQL поддерживает тип JSONB для хранения структурированных данных:

model Product {
id Int @id
metadata Json
settings Json @default("{}")
}

Запросы к JSON-полям:

// Создать с JSON
await prisma.product.create({
data: {
metadata: { color: 'red', size: 'XL', tags: ['sale', 'new'] },
},
})
// Фильтрация по JSON (PostgreSQL)
const products = await prisma.product.findMany({
where: {
metadata: { path: ['color'], equals: 'red' },
},
})
model Post {
id Int @id
tags String[]
}
// Найти посты с тегом 'prisma'
const posts = await prisma.post.findMany({
where: { tags: { has: 'prisma' } },
})
// Найти посты с любым из тегов
const posts2 = await prisma.post.findMany({
where: { tags: { hasSome: ['prisma', 'typescript'] } },
})
model User {
id String @id @default(uuid())
}
const results = await prisma.post.findMany({
where: {
title: { search: 'prisma & typescript' },
},
})