import sqlmodel


class MasterPass(sqlmodel.SQLModel, table=True):
    __tablename__ = "master_passwords"
    user_id: int = sqlmodel.Field(
        sa_column=sqlmodel.Column(
            sqlmodel.INT(),
            primary_key=True,
            autoincrement=False,
        )
    )
    salt: bytes = sqlmodel.Field(
        sa_column=sqlmodel.Column(sqlmodel.BINARY(64), nullable=False)
    )
    password_hash: bytes = sqlmodel.Field(
        sa_column=sqlmodel.Column(sqlmodel.BINARY(128), nullable=False)
    )


class Account(sqlmodel.SQLModel, table=True):
    __tablename__ = "accounts"
    __table_args__ = (sqlmodel.PrimaryKeyConstraint("user_id", "name"),)
    user_id: int = sqlmodel.Field()
    name: str = sqlmodel.Field(max_length=255)
    salt: bytes = sqlmodel.Field(
        sa_column=sqlmodel.Column(sqlmodel.BINARY(64), nullable=False)
    )
    enc_login: bytes = sqlmodel.Field(
        sa_column=sqlmodel.Column(sqlmodel.VARBINARY(256), nullable=False)
    )
    enc_password: bytes = sqlmodel.Field(
        sa_column=sqlmodel.Column(sqlmodel.VARBINARY(256), nullable=False)
    )