import datetime
import hashlib
import uuid
from sqlalchemy import Column, String, Text, DateTime
from sqlalchemy.dialects.postgresql import UUID
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()


class ContactSubmission(Base):
    __tablename__ = "contact_submissions"

    id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4, unique=True, nullable=False)
    first_name = Column(String(50), nullable=False)
    last_name = Column(String(50), nullable=False)
    email = Column(String(255), nullable=False)
    company_name = Column(String(100), nullable=False)
    country = Column(String(100), nullable=False)
    job_title = Column(String(100), nullable=False)
    inquiry_type = Column(String(50), nullable=False)
    message = Column(Text, nullable=False)
    privacy_policy_agreement = Column(String(5), nullable=False)
    ip_address = Column(String(64), nullable=False)
    created_at = Column(DateTime(timezone=True), default=datetime.datetime.utcnow, nullable=False)

    @staticmethod
    def hash_ip(ip_address: str) -> str:
        digest = hashlib.sha256(ip_address.encode("utf-8")).hexdigest()
        return digest
