39 lines
1.5 KiB
Python
39 lines
1.5 KiB
Python
from typing import Optional
|
|
from models.server import DiscordServer
|
|
from infra.db import postgres
|
|
|
|
class ServerRepository:
|
|
def __init__(self):
|
|
self.table = postgres.get_table('discord_server')
|
|
|
|
async def get_server(self, server_id: int) -> Optional[DiscordServer]:
|
|
"""Get Discord server by ID"""
|
|
try:
|
|
response = self.table.select('*').eq('server_id', server_id).execute()
|
|
if response.data:
|
|
return DiscordServer(**response.data[0])
|
|
return None
|
|
except Exception as e:
|
|
print(f"Error getting server: {e}")
|
|
return None
|
|
|
|
async def create_server(self, server_id: int, name: str) -> Optional[DiscordServer]:
|
|
"""Create new Discord server"""
|
|
try:
|
|
server = DiscordServer(server_id=server_id, name=name)
|
|
response = self.table.insert(server.dict(exclude_none=True)).execute()
|
|
return DiscordServer(**response.data[0])
|
|
except Exception as e:
|
|
print(f"Error creating server: {e}")
|
|
return None
|
|
|
|
async def update_server(self, server_id: int, name: str) -> Optional[DiscordServer]:
|
|
"""Update Discord server"""
|
|
try:
|
|
response = self.table.update({'name': name}).eq('server_id', server_id).execute()
|
|
if response.data:
|
|
return DiscordServer(**response.data[0])
|
|
return None
|
|
except Exception as e:
|
|
print(f"Error updating server: {e}")
|
|
return None |