Skip to content

Commit 66ca7a9

Browse files
Adicionar repositórios de usuário para MongoDB e PostgreSQL
1 parent bd45522 commit 66ca7a9

File tree

3 files changed

+81
-0
lines changed

3 files changed

+81
-0
lines changed

models/repository/__init__.py

Whitespace-only changes.
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
import asyncio
2+
3+
from typing import AsyncGenerator
4+
5+
class UserMongoRepository:
6+
def __init__(self, user_collenction):
7+
8+
self.__collenction = user_collenction
9+
10+
async def create_user(self, user: dict) -> int:
11+
12+
result = await self.__collenction.insert_one(user)
13+
14+
return result.inserted_id
15+
16+
async def get_user(self, user_id: int) -> dict:
17+
user = await self.__collenction.find_one(
18+
{"id": user_id}
19+
)
20+
21+
async def count_documents(self) -> int:
22+
return await self.__collenction.count_documents({})
23+
24+
async def create_users(self, users: list) -> None:
25+
await self.__collenction.insert_many(users)
26+
27+
async def get_all() -> list:
28+
users_curson = self.__collenction.find().sort("id")
29+
return await users_curson.to_list()
30+
31+
async def get_all_paginated(self, skip: int, limit: int) -> AsyncGenerator[list, None]:
32+
users_curson = self.__collenction.find().skip(skip).limit(limit)
33+
34+
users_list = await users_curson.to_list(
35+
length=limit
36+
)
37+
38+
if not users_list:
39+
return
40+
yield users_list
41+
42+
async for more_users in self.get_all_paginated(skip + limit, limit):
43+
yield more_users
44+
45+
async def delete_all(self) -> None:
46+
await self.__collenction.delete_many({})
47+
48+
49+
50+
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import asyncio
2+
3+
class UserPostgresRepository:
4+
def __init__(self, conn):
5+
self.conn = conn
6+
7+
8+
async def create_table(self):
9+
create_table_query = '''CREATE TABLE IF NOT EXISTS users (
10+
id SERIAL PRIMARY KEY,
11+
username VARCHAR(50) NOT NULL,
12+
email VARCHAR(50) NOT NULL,
13+
age INT NOT NULL,
14+
registed_at TIMESTAMP NOT NULL DEFAULT NOW()
15+
)'''
16+
await self.conn.fetch(create_table_query)
17+
18+
async def insert_user(self, username, email, age):
19+
insert_query = '''INSERT INTO users (username, email, age) VALUES ($1, $2, $3)'''
20+
await self.conn.fetch(insert_query, username, email, age)
21+
22+
async def get_users(self):
23+
return await self.conn.fetch('''SELECT * FROM users''')
24+
25+
async def drop_table(self):
26+
await self.conn.fetch('''DROP TABLE IF EXISTS users''')
27+
28+
async def count_users(self):
29+
return await self.conn.fetchval('''SELECT COUNT(*) FROM users''')
30+
31+

0 commit comments

Comments
 (0)