View Javadoc
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;  // e.g., "google", "github"
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  }