Initial commit

This commit is contained in:
2025-11-19 01:24:35 +03:00
commit 469879cfd9
6 changed files with 172 additions and 0 deletions

35
.editorconfig Normal file
View File

@@ -0,0 +1,35 @@
# This file is for unifying the coding style for different editors and IDEs
# editorconfig.org
root = true
[*]
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
indent_style = space
indent_size = 2
[Makefile]
indent_style = tab
[.bumpversion.cfg]
indent_style = tab
[*.{py,rst,ini}]
indent_size = 4
indent_style = space
[*.{html,css,json,yml}]
indent_size = 2
indent_style = space
[*.md]
trim_trailing_whitespace = false
[*.txt]
trim_trailing_whitespace = false
[nginx.conf]
indent_size = 2
indent_style = space

3
.gitattributes vendored Normal file
View File

@@ -0,0 +1,3 @@
# Ensure all text files use LF line endings
* text=auto eol=lf

17
.gitignore vendored Normal file
View File

@@ -0,0 +1,17 @@
# игнорируем содержимое ent, кроме ent/schema
ent/*
!ent/schema
!ent/schema/**
# игнорируем маковский индекс
.DS_Store
# игнорируем локальную конфигурацию
.env
.vscode/
# игнорируем собранное приложение
backend.run
# игнорируем отладочную информацию
src/__debug_*

View File

@@ -0,0 +1,18 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Launch Project",
"type": "go",
"request": "launch",
"mode": "auto",
"program": "${workspaceFolder}/src/main.go",
"args": [], // Аргументы командной строки, если нужны
"env": {}, // Переменные окружения, если нужны
"cwd": "${workspaceFolder}"
},
]
}

57
Makefile Normal file
View File

@@ -0,0 +1,57 @@
NAMESPACE ?= <PROJECT_CHANGE_ME>
PACKAGE := backend
SHELL := /bin/bash
REGISTRY := registry.halfakop.ru
REPOSITORY := $(NAMESPACE)/$(PACKAGE)
SOURCE_VERSION ?= $(shell cat VERSION)
SOURCE_COMMIT ?= $(shell git rev-parse --short=8 HEAD)
GIT_BRANCH := $(shell git rev-parse --abbrev-ref HEAD | sed s,feature/,,g)
IMAGE_NAME_TAGGED = $(REPOSITORY):$(SOURCE_VERSION)
EXEC=$(PACKAGE).run
all: help
help:
@echo "app - build the application"
@echo "tests - run tests"
@echo "run - run application locally"
@echo "clean - clean build environment"
fix:
@go fix ./...
app: fix
@go build -o ./${EXEC} ./src
tests: build
@go test ./...
run:
@./${EXEC}
clean:
@rm -rf ./${EXEC}%
release: title clean build login push
build:
docker build --compress \
-t $(IMAGE_NAME_TAGGED) \
-t $(REGISTRY)/$(IMAGE_NAME_TAGGED) \
--build-arg SOURCE_VERSION=$(SOURCE_VERSION) \
--build-arg SOURCE_COMMIT=$(SOURCE_COMMIT) \
${DOCKER_OPTS} \
-f Dockerfile .
login:
$(call check-var-defined,DOCKER_USERNAME)
$(call check-var-defined,DOCKER_PASSWORD)
@echo ${DOCKER_PASSWORD} | \
docker login -u ${DOCKER_USERNAME} --password-stdin $(REGISTRY)
push:
docker push $(REGISTRY)/$(IMAGE_NAME_TAGGED)
.PHONY: tests release build login push

42
README.md Normal file
View File

@@ -0,0 +1,42 @@
# НАЗВАНИЕ ПРОЕКТА — Бэкэнд — Go 1.24
Этот репозиторий реализует сервис, который обеспечивает:
* получение и сохранение метрик, полученных от внешней организации;
* управление параметрами экспортёров метрик и планами экспорта.
## TL;DR
Создание пользователя и базы для него:
createuser USERNAME -P <top_secret>
createdb --owner USERNAME DBNAME
Проверка доступа:
psql -U USERNAME DBNAME
Для работы миграций надо сделать так:
psql -d DBNAME -c 'alter schema public owner to USERNAME;'
Затем:
```bash
# 0) Подготовьте Postgres + переменные окружения
export DATABASE_URL='postgres://USERNAME:top_secret@localhost:5432/DBNAME?sslmode=disable'
export PATH="$PATH:$(go env GOPATH)/bin"
# 1) Сгенерируйте код Ent по схемам (требуется один раз, при изменении схем)
Подключите ваш ORM как сабмодуль Git.
go install entgo.io/ent/cmd/ent@latest
ent generate ./orm/ent/schema
# 2) Примените миграции Atlas (готовые SQL в atlas/migrations)
go install ariga.io/atlas/cmd/atlas@v0.38.0
atlas migrate apply --dir file://orm/atlas/migrations --url "$DATABASE_URL"
# 3) Запустите сервис
go run ./cmd/server
```