package io.delphiplatform.api.v3.rdb.entity.ads.linkfire;

import java.util.Set;
import java.util.UUID;

import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.Table;

import io.delphiplatform.api.v3.decibelrdb.entity.DecibelCampaignEntity;
import io.delphiplatform.api.v3.decibelrdb.entity.DecibelProjectEntity;
import lombok.Getter;
import lombok.Setter;

@Entity
@Getter
@Setter
@Table(name = "dim_link", schema = "linkfire")
public class LinkfireDimLinkEntity {

    @Id
    @Column(name = "link_id", nullable = false)
    private UUID linkId;
    @Basic
    @Column(name = "link_url", nullable = false)
    private String linkUrl;

    @ManyToMany
    @JoinTable(
        name = "linkfire_link_campaign",
        schema = "decibel",
        joinColumns = {@JoinColumn(name = "link_id")},
        inverseJoinColumns = {@JoinColumn(name = "campaign_id")}
    )
    private Set<DecibelCampaignEntity> campaigns;

    @ManyToMany
    @JoinTable(
        name = "linkfire_link_project",
        schema = "decibel",
        joinColumns = {@JoinColumn(name = "link_id")},
        inverseJoinColumns = {@JoinColumn(name = "project_id")}
    )
    private Set<DecibelProjectEntity> projects;


}
