Skip to content

Commit d91dc5d

Browse files
committed
fill readme;
1 parent 966ff91 commit d91dc5d

2 files changed

Lines changed: 151 additions & 107 deletions

File tree

README.md

Lines changed: 45 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,12 @@ docker compose up
142142
В данный момент отправка осуществляется через `консоль`.
143143
Для деталей смотрите миксин `api_v1/users/mixins/ActionUserManagerMixin`
144144

145+
### UserManager
146+
147+
UserManager Это специальная обвертка для `SQLAlchemyUserDatabase` который в свою
148+
очередь вмещает в себя класс модели `User` и сессию `AsyncSession`
149+
Смотрите класс `api_v1/users/user_manager/UserManager`
150+
145151
### Transport
146152

147153
В fastapi-users есть 2 вида транспорта:
@@ -189,7 +195,7 @@ def get_jwt_strategy() -> JWTStrategy:
189195
### Backend
190196

191197
auth_backend собирает `Transport` и `Strategy` воединно в `AuthenticationBackend`
192-
Этот класс необхим будет для:
198+
Этот класс необходим будет для:
193199

194200
- `Authenticator`
195201
- `FastAPIUsers`
@@ -238,6 +244,7 @@ async def get_user(user: User = Depends(active_user)) -> User:
238244
FastAPIUsers применяется в итоговом выводе End-points в API
239245

240246
```python
247+
from fastapi import APIRouter
241248
from fastapi_users import FastAPIUsers
242249

243250
from api_v1.auth.schemas import UserRead, UserUpdate
@@ -258,6 +265,26 @@ router.include_router(fastapi_users.get_users_router(UserRead, UserUpdate),
258265

259266
По итогу будет добавлены новые End-points в API
260267

268+
### Permissions
269+
270+
С помощью Authenticator возможно осуществлять права доступа к End-points
271+
`api_v1/auth/permissions.py` содержит несколько `Callback` функции для permissions
272+
По желанию вы можете подолнять их.
273+
274+
```python
275+
from fastapi import APIRouter
276+
277+
from api_v1.auth import active_user
278+
279+
280+
router = APIRouter()
281+
282+
283+
@router.get(path='/get-user')
284+
async def get_user(user: User = Depends(active_user)) -> User:
285+
return user
286+
```
287+
261288
## Найболее используемые
262289

263290
Найболее используемые конструкции с которыми приходится часто взаимодействовать.
@@ -364,6 +391,23 @@ def register_middlewares(app: FastAPI) -> None:
364391

365392
- При появлении новых middleware добавляйте их по порядку в эту функцию
366393

394+
### DAO
395+
396+
DAO необходим для CRUD manager любой модели.
397+
`config.dao.base_dao.BaseDAO`
398+
399+
Для опеределения DAO вашей модели нужно наследовать `BaseDAO`, а Затем
400+
переопределить поле класса `model`
401+
402+
```python
403+
from config.dao import BaseDAO
404+
from config.models import Product
405+
406+
407+
class ProductDAO(BaseDAO):
408+
model = Product
409+
```
410+
367411
### Celery
368412

369413
- Для регистрации task вам нужно создать файл с именем **tasks.py** в вашем приложении:

docker-compose.yml

Lines changed: 106 additions & 106 deletions
Original file line numberDiff line numberDiff line change
@@ -101,122 +101,122 @@ services:
101101
- POSTGRES_DB=${TEST_POSTGRES_DB}
102102
- POSTGRES_PASSWORD=${TEST_POSTGRES_PASSWORD}
103103

104-
# prometheus:
105-
# image: prom/prometheus
106-
# container_name: prometheus
107-
# volumes:
108-
# - ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
109-
# - prometheus-data:/prometheus
110-
# command:
111-
# - '--config.file=/etc/prometheus/prometheus.yml'
112-
# - '--storage.tsdb.path=/prometheus'
113-
# - '--web.console.libraries=/etc/prometheus/console_libraries'
114-
# - '--web.console.templates=/etc/prometheus/consoles'
115-
# - '--storage.tsdb.retention.time=200h'
116-
# - '--web.enable-lifecycle'
117-
# restart: unless-stopped
118-
# expose:
119-
# - 9090
120-
# networks:
121-
# - monitor-net
122-
# labels:
123-
# org.label-schema.group: "monitoring"
104+
prometheus:
105+
image: prom/prometheus
106+
container_name: prometheus
107+
volumes:
108+
- ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
109+
- prometheus-data:/prometheus
110+
command:
111+
- '--config.file=/etc/prometheus/prometheus.yml'
112+
- '--storage.tsdb.path=/prometheus'
113+
- '--web.console.libraries=/etc/prometheus/console_libraries'
114+
- '--web.console.templates=/etc/prometheus/consoles'
115+
- '--storage.tsdb.retention.time=200h'
116+
- '--web.enable-lifecycle'
117+
restart: unless-stopped
118+
expose:
119+
- 9090
120+
networks:
121+
- monitor-net
122+
labels:
123+
org.label-schema.group: "monitoring"
124124

125-
# alertmanager:
126-
# image: prom/alertmanager:v0.20.0
127-
# container_name: alertmanager
128-
# volumes:
129-
# - ./alertmanager:/etc/alertmanager
130-
# command:
131-
# - '--config.file=/etc/alertmanager/config.yml'
132-
# - '--storage.path=/alertmanager'
133-
# restart: unless-stopped
134-
# expose:
135-
# - 9093
136-
# networks:
137-
# - monitor-net
138-
# labels:
139-
# org.label-schema.group: "monitoring"
125+
alertmanager:
126+
image: prom/alertmanager:v0.20.0
127+
container_name: alertmanager
128+
volumes:
129+
- ./alertmanager:/etc/alertmanager
130+
command:
131+
- '--config.file=/etc/alertmanager/config.yml'
132+
- '--storage.path=/alertmanager'
133+
restart: unless-stopped
134+
expose:
135+
- 9093
136+
networks:
137+
- monitor-net
138+
labels:
139+
org.label-schema.group: "monitoring"
140140

141-
# grafana:
142-
# image: grafana/grafana
143-
# container_name: grafana
144-
# volumes:
145-
# - grafana-data:/var/lib/grafana
146-
# - ./grafana/provisioning:/etc/grafana/provisioning
147-
# environment:
148-
# - DATABASE_USER=${DB_USER}
149-
# - DATABASE_PASS=${DB_PASSWORD}
150-
# - DATABASE_NAME=${DB_NAME}
151-
# - DATABASE_HOST=${DB_HOST}
152-
# - DATABASE_SSL_MODE=disable
153-
# - GF_USERS_ALLOW_SIGN_UP=false
154-
# - GF_SECURITY_ADMIN_USER=${GF_SECURITY_ADMIN_USER}
155-
# - GF_SECURITY_ADMIN_PASSWORD=${GF_SECURITY_ADMIN_PASSWORD}
156-
# restart: unless-stopped
157-
# expose:
158-
# - 3000
159-
# networks:
160-
# - monitor-net
161-
# labels:
162-
# org.label-schema.group: "monitoring"
141+
grafana:
142+
image: grafana/grafana
143+
container_name: grafana
144+
volumes:
145+
- grafana-data:/var/lib/grafana
146+
- ./grafana/provisioning:/etc/grafana/provisioning
147+
environment:
148+
- DATABASE_USER=${DB_USER}
149+
- DATABASE_PASS=${DB_PASSWORD}
150+
- DATABASE_NAME=${DB_NAME}
151+
- DATABASE_HOST=${DB_HOST}
152+
- DATABASE_SSL_MODE=disable
153+
- GF_USERS_ALLOW_SIGN_UP=false
154+
- GF_SECURITY_ADMIN_USER=${GF_SECURITY_ADMIN_USER}
155+
- GF_SECURITY_ADMIN_PASSWORD=${GF_SECURITY_ADMIN_PASSWORD}
156+
restart: unless-stopped
157+
expose:
158+
- 3000
159+
networks:
160+
- monitor-net
161+
labels:
162+
org.label-schema.group: "monitoring"
163163

164-
# nodeexporter:
165-
# image: prom/node-exporter:v0.18.1
166-
# container_name: nodeexporter
167-
# volumes:
168-
# - /proc:/host/proc:ro
169-
# - /sys:/host/sys:ro
170-
# - /:/rootfs:ro
171-
# command:
172-
# - '--path.procfs=/host/proc'
173-
# - '--path.rootfs=/rootfs'
174-
# - '--path.sysfs=/host/sys'
175-
# - '--collector.filesystem.ignored-mount-points=^/(sys|proc|dev|host|etc)($$|/)'
176-
# restart: unless-stopped
177-
# expose:
178-
# - 9100
179-
# networks:
180-
# - monitor-net
181-
# labels:
182-
# org.label-schema.group: "monitoring"
164+
nodeexporter:
165+
image: prom/node-exporter:v0.18.1
166+
container_name: nodeexporter
167+
volumes:
168+
- /proc:/host/proc:ro
169+
- /sys:/host/sys:ro
170+
- /:/rootfs:ro
171+
command:
172+
- '--path.procfs=/host/proc'
173+
- '--path.rootfs=/rootfs'
174+
- '--path.sysfs=/host/sys'
175+
- '--collector.filesystem.ignored-mount-points=^/(sys|proc|dev|host|etc)($$|/)'
176+
restart: unless-stopped
177+
expose:
178+
- 9100
179+
networks:
180+
- monitor-net
181+
labels:
182+
org.label-schema.group: "monitoring"
183183

184-
# pushgateway:
185-
# image: prom/pushgateway:v1.2.0
186-
# container_name: pushgateway
187-
# restart: unless-stopped
188-
# expose:
189-
# - 9091
190-
# networks:
191-
# - monitor-net
192-
# labels:
193-
# org.label-schema.group: "monitoring"
184+
pushgateway:
185+
image: prom/pushgateway:v1.2.0
186+
container_name: pushgateway
187+
restart: unless-stopped
188+
expose:
189+
- 9091
190+
networks:
191+
- monitor-net
192+
labels:
193+
org.label-schema.group: "monitoring"
194194

195-
# caddy:
196-
# image: stefanprodan/caddy
197-
# container_name: caddy
198-
# ports:
199-
# - "3000:3000"
200-
# - "9090:9090"
201-
# - "9093:9093"
202-
# - "9091:9091"
203-
# volumes:
204-
# - ./caddy:/etc/caddy
205-
# environment:
206-
# - ADMIN_USER=${ADMIN_USER}
207-
# - ADMIN_PASSWORD=${ADMIN_PASSWORD}
208-
# restart: unless-stopped
209-
# networks:
210-
# - monitor-net
211-
# labels:
212-
# org.label-schema.group: "monitoring"
195+
caddy:
196+
image: stefanprodan/caddy
197+
container_name: caddy
198+
ports:
199+
- "3000:3000"
200+
- "9090:9090"
201+
- "9093:9093"
202+
- "9091:9091"
203+
volumes:
204+
- ./caddy:/etc/caddy
205+
environment:
206+
- ADMIN_USER=${ADMIN_USER}
207+
- ADMIN_PASSWORD=${ADMIN_PASSWORD}
208+
restart: unless-stopped
209+
networks:
210+
- monitor-net
211+
labels:
212+
org.label-schema.group: "monitoring"
213213

214214
volumes:
215215
postgres_data:
216216
test_postgres_data:
217217
rabbitmq-data:
218-
# prometheus-data: {}
219-
# grafana-data: {}
218+
prometheus-data: {}
219+
grafana-data: {}
220220

221221
networks:
222222
monitor-net:

0 commit comments

Comments
 (0)