Как связать prisma с postgis?

Для связи 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;.
  1. Настройка Prisma:
  • Установите Prisma CLI, если у вас еще нет его установленного, с помощью команды: npm install -g prisma.
  • Затем перейдите в корневую папку вашего проекта и выполните команду prisma init, чтобы инициализировать файлы конфигурации Prisma.
  • Вам будет предложено выбрать провайдера базы данных. Выберите PostgreSQL.
  • Затем, после ответа на несколько вопросов, вам будет предложено указать информацию о вашей базе данных. Укажите данные, соответствующие вашей установке PostgreSQL, такие как имя хоста/порт/пользователь/пароль/имя базы данных.
  • После успешной настройки, Prisma сгенерирует некоторые файлы и папки в вашем проекте.
  1. Создание модели с географическим типом данных:
  • Перейдите в prisma/schema.prisma и создайте новую модель с использованием типа данных Json. Например, Location:
     model Location {
       id    Int    @id @default(autoincrement())
       name  String
       point Json
     }
  • После создания модели выполните команду prisma db push для применения схемы базы данных.
  1. Использование функций 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;
     }
  1. Запуск приложения:
  • После всех вышеупомянутых настроек вы можете запустить свое приложение, которое будет использовать Prisma для работы с PostGIS.
  • Не забудьте, что вам может понадобиться установить какие-либо дополнительные пакеты, такие как @types/pg или pg, в зависимости от используемых инструментов и фреймворков.

Вот и все! Теперь вы настроили связь между Prisma и PostGIS и можете использовать географические данные в своем приложении. Удачи!