package com.millky.m2.model.domain.entity.user;


import java.io.Serializable;


import javax.persistence.Column;

import javax.persistence.Entity;

import javax.persistence.Id;

import javax.persistence.IdClass;

import javax.persistence.Table;

import javax.persistence.UniqueConstraint;


import lombok.Data;



/**

 * @author byuri

 *         이 클래스는 테이블 생성용으로 사용되고 있다.

 */

@Data

@Entity

@IdClass(ProjectId.class)

// 이 주석된방법은 중간에도 생성이 가능... 하지만....

// @org.hibernate.annotations.Table(appliesTo = "UserConnection", indexes = { @Index(name = "UserConnectionRank", columnNames = { "userId",

// "providerId", "rank" }) })

// @javax.persistence.Table(name = "UserConnection")

// 아래 방법은 최초 생성시에만 작동

@Table(name = "UserConnection", uniqueConstraints = {

                                                     @UniqueConstraint(name = "UserConnectionRank", columnNames = { "userId", "providerId", "rank" }),

                                                     @UniqueConstraint(name = "providerUser", columnNames = { "providerId", "providerUserId" }) })

public class UserConnection

{

@Id

// @Column(unique = true)

private String userId;

@Id

private String providerId;

@Id

private String providerUserId;


private int rank;

private String displayName;

@Column(length = 512)

private String profileUrl;

@Column(length = 512)

private String imageUrl;

// @Column(length = 255, unique = true)

private String accessToken;

private String secret;

private String refreshToken;

private Long expireTime;


}


class ProjectId implements Serializable

{

/**

*/

private static final long serialVersionUID = 1L;


String userId;

String providerId;

String providerUserId;

}