Для связи Prisma с PostGIS, вам необходимо выполнить несколько шагов. Прежде всего, убедитесь, что у вас уже установлены PostGIS и Prisma.
1. Установка и настройка PostGIS:
- Убедитесь, что у вас установлена СУБД PostgreSQL. Если ее нет, установите ее с официального сайта PostgreSQL.
- Установите PostGIS путем выполнения команды: sudo apt-get install postgis
(для Ubuntu / Debian) или brew install postgis
(для MacOS с установленным Homebrew).
- После установки вы должны создать новую базу данных, поддерживающую расширение PostGIS. Вы можете выполнить это с помощью команды: createdb -T template0 <database-name>
. Затем подключитесь к этой базе данных: psql <database-name>
.
- Войдите в psql, используя команду c <database-name>
и выполните команду CREATE EXTENSION postgis;
.
2. Настройка Prisma:
- Установите Prisma CLI, если у вас еще нет его установленного, с помощью команды: npm install -g prisma
.
- Затем перейдите в корневую папку вашего проекта и выполните команду prisma init
, чтобы инициализировать файлы конфигурации Prisma.
- Вам будет предложено выбрать провайдера базы данных. Выберите PostgreSQL.
- Затем, после ответа на несколько вопросов, вам будет предложено указать информацию о вашей базе данных. Укажите данные, соответствующие вашей установке PostgreSQL, такие как имя хоста/порт/пользователь/пароль/имя базы данных.
- После успешной настройки, Prisma сгенерирует некоторые файлы и папки в вашем проекте.
3. Создание модели с географическим типом данных:
- Перейдите в prisma/schema.prisma
и создайте новую модель с использованием типа данных Json
. Например, Location
:
model Location { id Int @id @default(autoincrement()) name String point Json }
- После создания модели выполните команду prisma db push
для применения схемы базы данных.
4. Использование функций PostGIS:
- Приведенная выше модель Location
будет иметь поле point
, которое можно использовать для хранения данных о географическом положении. Вы можете использовать функции PostGIS для работы с этим полем.
- Пример использования функции PostGIS, чтобы найти все места, находящиеся в определенном радиусе (например, в 1000 метрах от заданных координат):
const { PrismaClient } = require('@prisma/client'); const prisma = new PrismaClient(); async function getLocationsWithinRadius(latitude, longitude, radius) { const locations = await prisma.location.findMany({ where: { point: { stDWithin: { point: { type: 'Point', coordinates: [latitude, longitude], }, distance: radius, }, }, }, }); return locations; }
5. Запуск приложения:
- После всех вышеупомянутых настроек вы можете запустить свое приложение, которое будет использовать Prisma для работы с PostGIS.
- Не забудьте, что вам может понадобиться установить какие-либо дополнительные пакеты, такие как @types/pg
или pg
, в зависимости от используемых инструментов и фреймворков.
Вот и все! Теперь вы настроили связь между Prisma и PostGIS и можете использовать географические данные в своем приложении. Удачи!