API/ remnawave 1.6.12/ admins in database and more
This commit is contained in:
+17
-3
@@ -1,7 +1,21 @@
|
||||
from database.db import engine
|
||||
from database.models import Base
|
||||
|
||||
from database.db import engine, async_session_maker
|
||||
from database.models import Base, Admin
|
||||
from sqlalchemy import select
|
||||
from config import ADMIN_ID
|
||||
from datetime import datetime
|
||||
|
||||
async def init_db():
|
||||
async with engine.begin() as conn:
|
||||
await conn.run_sync(Base.metadata.create_all)
|
||||
|
||||
async with async_session_maker() as session:
|
||||
for tg_id in ADMIN_ID:
|
||||
result = await session.execute(select(Admin).where(Admin.tg_id == tg_id))
|
||||
if not result.scalar_one_or_none():
|
||||
session.add(Admin(
|
||||
tg_id=tg_id,
|
||||
role="superadmin",
|
||||
description="Imported from config",
|
||||
added_at=datetime.utcnow()
|
||||
))
|
||||
await session.commit()
|
||||
|
||||
+13
-8
@@ -12,6 +12,7 @@ from sqlalchemy import (
|
||||
String,
|
||||
Text,
|
||||
)
|
||||
import secrets
|
||||
from sqlalchemy.orm import Mapped, declarative_base, mapped_column
|
||||
|
||||
Base = declarative_base()
|
||||
@@ -57,7 +58,7 @@ class Key(DictLikeMixin, Base):
|
||||
key = Column(String)
|
||||
server_id = Column(String)
|
||||
remnawave_link = Column(String)
|
||||
tariff_id = Column(Integer, ForeignKey("tariffs.id"))
|
||||
tariff_id = Column(Integer, ForeignKey("tariffs.id", ondelete="SET NULL"))
|
||||
is_frozen = Column(Boolean, default=False)
|
||||
alias = Column(String)
|
||||
notified = Column(Boolean, default=False)
|
||||
@@ -202,11 +203,15 @@ class TrackingSource(DictLikeMixin, Base):
|
||||
created_at = Column(DateTime, default=datetime.utcnow)
|
||||
|
||||
|
||||
class Log(DictLikeMixin, Base):
|
||||
__tablename__ = "logs"
|
||||
class Admin(Base):
|
||||
__tablename__ = "admins"
|
||||
|
||||
id = Column(Integer, primary_key=True)
|
||||
event_type = Column(String)
|
||||
tg_id = Column(BigInteger)
|
||||
details = Column(JSON)
|
||||
created_at = Column(DateTime, default=datetime.utcnow)
|
||||
tg_id = Column(BigInteger, primary_key=True)
|
||||
token = Column(String, unique=True, nullable=True)
|
||||
description = Column(String, nullable=True)
|
||||
role = Column(String, nullable=False, default="admin")
|
||||
added_at = Column(DateTime, default=datetime.utcnow)
|
||||
|
||||
@staticmethod
|
||||
def generate_token() -> str:
|
||||
return secrets.token_urlsafe(32)
|
||||
Reference in New Issue
Block a user