init: portal-common (db + middleware + portal client)

This commit is contained in:
Grendgi
2026-05-20 14:00:06 +03:00
commit db1660a390
6 changed files with 604 additions and 0 deletions

46
README.md Normal file
View File

@@ -0,0 +1,46 @@
# portal-common
Shared Go-библиотека для микросервисов портала.
## Состав
- `db/` — pgxpool init + slow-query tracer. Заменяет идентичный код в 9 сервисах.
- `middleware/``InternalAuth` (X-Internal-Key + X-User-*) + хелперы для кастомных заголовков.
- `portal/` — HTTP-клиент portal-сервиса: directory с кэшем+stale fallback, notifications, deactivate user.
## Использование
В каждом сервисе:
```go
import (
"gitea.estateliga.work/admin/portal-common/db"
"gitea.estateliga.work/admin/portal-common/middleware"
"gitea.estateliga.work/admin/portal-common/portal"
)
pool, _ := db.ConnectURL(cfg.DatabaseURL)
r := chi.NewRouter()
r.Use(middleware.InternalAuth(cfg.InternalAPIKey))
portalCli := portal.New(cfg.PortalBaseURL, cfg.PortalAPIKey)
```
## Dev-режим (без push в Gitea)
В `go.mod` сервиса добавить `replace`:
```
replace gitea.estateliga.work/admin/portal-common => ../portal-common
```
Когда библиотека стабилизируется, заменить на pinned тег:
```
require gitea.estateliga.work/admin/portal-common v0.1.0
```
## Зачем
До этого 9 сервисов копировали один в один: pgxpool init, slow-query tracer (500ms threshold), InternalAuth middleware. Tweak'ать tuning централизованно было невозможно. Сейчас изменения идут в одном репо, сервисы пересобираются.