@startuml KYCService

!define Table(name) class name as "name" << (T,#FFAAAA) >>
!define PrimaryKey(x) <color:blue>x</color>
!define ForeignKey(x) <color:green>x</color>
!define UNIQUE(x) <u>x</u>
!define NOTNULL(x) <b>x</b>


Table(Studios) {
    PrimaryKey(id): int, ForeignKey(Users.ID)
    GSTIN VARCHAR(15) UNIQUE,
    Address VARCHAR(255) UNIQUE NOT NULL,
    City VARCHAR(255) NOT NULL,
    Pincode VARCHAR(6) NOT NULL,
    StudioPhotosFolderURL VARCHAR(255) UNIQUE NOT NULL,,
    OwnerName VARCHAR(255),
    OwnerPhotoURL VARCHAR(255),
    OwnerPhoneNumber VARCHAR(15),
    OwnerAadharNumber INT UNIQUE NOT NULL,
    AadharURL VARCHAR(255) UNIQUE NOT NULL,
    HomePageURL VARCHAR(255) UNIQUE NOT NULL,
    Verified BOOLEAN,
    AverageRating FLOAT,
    CONSTRAINT UC_Location UNIQUE (LocationLatitude, LocationLongitude)
}
Table(KYC) {
    PrimaryKey(id): int <<AUTO_INCREMENT>>,
    studio_id: int, ForeignKey(Studios.ID) NOT NULL,
    VideoURL VARCHAR(255) UNIQUE NOT NULL,
    LocationLatitude DECIMAL(10, 8) NOT NULL,
    LocationLongitude DECIMAL(11, 8) NOT NULL,
    status: ENUM ("New", "Pending verification", "Verified") NOT NULL,
    UpdatedBy: ForeignKey(Users.ID): int NOT NULL,
    review_comments: text,
    reviewed_at: datetime
    CONSTRAINT UC_Location UNIQUE (LocationLatitude, LocationLongitude)
}


Studios -- KYC   : "1" -- "many"
@enduml