1 package org.petify.backend.models;
2
3 import jakarta.persistence.Column;
4 import jakarta.persistence.Entity;
5 import jakarta.persistence.FetchType;
6 import jakarta.persistence.ForeignKey;
7 import jakarta.persistence.GeneratedValue;
8 import jakarta.persistence.GenerationType;
9 import jakarta.persistence.Id;
10 import jakarta.persistence.JoinColumn;
11 import jakarta.persistence.ManyToOne;
12 import jakarta.persistence.Table;
13 import lombok.Getter;
14 import lombok.Setter;
15
16 @Getter
17 @Setter
18 @Entity
19 @Table(name = "oauth2_providers")
20 public class OAuth2Provider {
21
22 @Id
23 @GeneratedValue(strategy = GenerationType.IDENTITY)
24 private Long id;
25
26 @Column(nullable = false)
27 private String providerId;
28
29 @Column(nullable = false)
30 private String providerUserId;
31
32 @ManyToOne(fetch = FetchType.LAZY)
33 @JoinColumn(name = "user_id", nullable = false,
34 foreignKey = @ForeignKey(name = "fk_oauth2provider_user",
35 foreignKeyDefinition = "FOREIGN KEY (user_id) REFERENCES users(user_id) ON DELETE CASCADE"))
36 private ApplicationUser user;
37
38 @Column
39 private String email;
40
41 @Column
42 private String name;
43
44 public OAuth2Provider() {
45 }
46
47 public OAuth2Provider(String providerId, String providerUserId, ApplicationUser user,
48 String email, String name) {
49 this.providerId = providerId;
50 this.providerUserId = providerUserId;
51 this.user = user;
52 this.email = email;
53 this.name = name;
54 }
55 }