init: portal-common (db + middleware + portal client)
This commit is contained in:
46
README.md
Normal file
46
README.md
Normal 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 централизованно было невозможно. Сейчас изменения идут в одном репо, сервисы пересобираются.
|
||||
Reference in New Issue
Block a user