from sqlalchemy import Column, Integer, String

from app.models.base import Base


class CasbinRule(Base):
    __tablename__ = "casbin_rule"
    __table_args__ = {"schema": "public"}
    id = Column(Integer, primary_key=True, autoincrement=True)
    ptype = Column(String(100), nullable=False)
    v0 = Column(String(100))
    v1 = Column(String(100))
    v2 = Column(String(100))
    v3 = Column(String(100))
    v4 = Column(String(100))
    v5 = Column(String(100))

    def __str__(self):
        arr = [self.ptype]
        for v in (self.v0, self.v1, self.v2, self.v3, self.v4, self.v5):
            if v is None:
                break
            arr.append(v)
        return ", ".join(arr)

    def __repr__(self):
        return f'<CasbinRule {self.id}: "{str(self)}">'
