Giter Site home page Giter Site logo

guideliner-replica's Introduction

Guideliner


Бекенд проекта для отображения дополнительной информации на втором экране - гайдов, статистики, изображений и так далее.

Requirements:


External dependencies

  • Postgresql-12.6

Commands


Команды для запуска описаны в makefile

  • make lint: запустить линтер
  • make fmt: запустить форматтер
  • make generate: запустить генерацию. Для системных нужд, вызывается другими командами.
  • make tests-unit: запустить юнит-тесты
  • make tests-integration: запустить интеграционные тесты. Вместе с этим, запускает все необходимые внешние зависимости (ex: DB, kafka) в докере (docker-compose.test.dependencies), сами тесты тоже запускаются в докере (docker-compose.test.yml)
  • make run-guideliner-debug: собрать и запустить бекенд в дебаг режиме.
  • make run-guideliner-development: собрать и запустить бекенд в режиме разработки
  • make run-guideliner-production: собрать и запустить проект в режиме продакшена
  • make run-migrations-debug: собрать и запустить миграции для дебаг режима
  • make run-migrations-development: собрать и запустить миграции для режима разработчика
  • make run-migrations-production: собрать и запустить миграции для продакшена
  • make vendor: собрать необходимые для сборки проекта пакеты в директории {PROJECT_ROOT}/vendor. Для системных нужд, вызывается другими командами.
  • make build-guideliner: собрать бекенд. Результат помещается в {PROJECT_ROOT}/bin/guideliner
  • make build-migrations: собрать команду, используемую для накатки миграций. Результат помещается в {PROJECT_ROOT}/bin/migrations.
  • make build-clean-db: собрать команду, пересоздающую схему public. Используется для тестов - чтобы получить чистый инстанс базы. Результат помещается в {PROJECT_ROOT}/bin/clean_db
  • make build-all: совмещает в себе build-guideliner, build-migrations и build-clean-db
  • make create-migration: создает файл-заглушку вида {DATE_NOW}_tempfile.go в директории ./internal/migrations/. Нужна, чтобы не генерировать ID/файл миграции руками

#Config


./bin/clean_db, ./bin/guideliner, ./bin/migrations (и соотвествующие команды make-{SOMETHING}-{MODE}) могут конфигурироваться из переменных окружения (далее ENV) или из config.json.

Режим устанавливается только из ENV, с помощью GUIDELINER_ENV. Разрешенные значения: DEBUG, TEST, DEVELOPMENT, PRODUCTION. Стандартное значение: PRODUCTION

Важно: в случае использования PRODUCTION режима разрешена конфигурация только из переменных окружения. Это сделано во избежание деплоя в продакшен с дефолтной конфигурацией из config.json

Примеры конфигурационных файлов хранятся в директории configs.

Описание конфигурационных файлов:

config.json

{
  "db": { // Настройки БД. Передаются в gorm.io/driver/postgres, https://gorm.io/docs/connecting_to_the_database.html#PostgreSQL
    "host": "127.0.0.1",
    "port": "5555", 
    "login": "dblogin", 
    "password": "dbpassword", 
    "name": "test_db", 
    "sslMode": "disable" 
  },
  "server": { // Настройки приложения
    "host": "127.0.0.1",
    "port": "8080"
  },
  "tokens": {
    "secretKey": "SECRET_KEY" // Секретный ключ для генерации JWT токенов
  }
}

ENV

# Настройки приложения
GUIDELINER_SERVER_HOST=127.0.0.1
GUIDELINER_SERVER_PORT=8080

# Настройки базы
GUIDELINER_DB_HOST=db-test
GUIDELINER_DB_PORT=5432
GUIDELINER_DB_LOGIN=dblogin
GUIDELINER_DB_PASSWORD=dbpassword
GUIDELINER_DB_NAME=test_db
GUIDELINER_DB_SSL_MODE=disable

# Секретный ключ для генерации JWT токенов
GUIDELINER_TOKEN_SECRET=SECRET_KEY

Примечания по GUIDELINER_ENV

На текущий момент, режимы "недореализованы". По большей части, это связано с тем, что логирование ещё не сделано.

Основные отличия на текущий момент:

  • PRODUCTION не позволяет инициализацию из config.json
  • TEST заглушает некоторые, особенно раздражающие логи. Например, инициализацию логов.

guideliner-replica's People

Contributors

viverov avatar olegmoeco avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.