blob: e16a111c0c636de7b2aae183aa03fdcea8112ea8 [file] [log] [blame]
Matthias Andreas Benkardd9b95882020-01-24 11:42:49 +01001package eu.mulk.mulkcms2.benki.users;
2
3import eu.mulk.mulkcms2.benki.accesscontrol.PageKey;
4import eu.mulk.mulkcms2.benki.accesscontrol.Role;
5import eu.mulk.mulkcms2.benki.bookmarx.Bookmark;
6import eu.mulk.mulkcms2.benki.generic.Post;
7import eu.mulk.mulkcms2.benki.lafargue.LazychatMessage;
8import eu.mulk.mulkcms2.benki.wiki.WikiPageRevision;
9import io.quarkus.hibernate.orm.panache.PanacheEntityBase;
10import java.util.Collection;
Matthias Andreas Benkardb8027c62020-01-24 12:09:27 +010011import java.util.Set;
Matthias Andreas Benkardd9b95882020-01-24 11:42:49 +010012import javax.persistence.Column;
13import javax.persistence.Entity;
Matthias Andreas Benkardaa754802020-01-24 11:55:26 +010014import javax.persistence.FetchType;
Matthias Andreas Benkardd9b95882020-01-24 11:42:49 +010015import javax.persistence.Id;
16import javax.persistence.JoinColumn;
Matthias Andreas Benkardb8027c62020-01-24 12:09:27 +010017import javax.persistence.JoinTable;
Matthias Andreas Benkardf9c74272020-01-24 11:51:35 +010018import javax.persistence.ManyToMany;
Matthias Andreas Benkardd9b95882020-01-24 11:42:49 +010019import javax.persistence.OneToMany;
Matthias Andreas Benkardbe77d302020-01-24 14:08:52 +010020import javax.persistence.OneToOne;
Matthias Andreas Benkardd9b95882020-01-24 11:42:49 +010021import javax.persistence.Table;
22
23@Entity(name = "BenkiUser")
Matthias Andreas Benkard57c9a8a2020-01-24 19:09:38 +010024@Table(name = "users", schema = "benki")
Matthias Andreas Benkardd9b95882020-01-24 11:42:49 +010025public class User extends PanacheEntityBase {
26
27 @Id
28 @Column(name = "id", nullable = false)
29 public int id;
30
31 @Column(name = "first_name", nullable = true, length = -1)
32 public String firstName;
33
34 @Column(name = "middle_names", nullable = true, length = -1)
35 public String middleNames;
36
37 @Column(name = "last_name", nullable = true, length = -1)
38 public String lastName;
39
40 @Column(name = "email", nullable = true, length = -1)
41 public String email;
42
43 @Column(name = "website", nullable = true, length = -1)
44 public String website;
45
46 @Column(name = "status", nullable = true, length = -1)
47 public String status;
48
Matthias Andreas Benkardaa754802020-01-24 11:55:26 +010049 @OneToMany(mappedBy = "owner", fetch = FetchType.LAZY)
Matthias Andreas Benkardd9b95882020-01-24 11:42:49 +010050 public Collection<Bookmark> bookmarks;
51
Matthias Andreas Benkardaa754802020-01-24 11:55:26 +010052 @OneToMany(mappedBy = "owner", fetch = FetchType.LAZY)
Matthias Andreas Benkardd9b95882020-01-24 11:42:49 +010053 public Collection<LazychatMessage> lazychatMessages;
54
Matthias Andreas Benkardaa754802020-01-24 11:55:26 +010055 @OneToMany(mappedBy = "user", fetch = FetchType.LAZY)
Matthias Andreas Benkardfb769c22020-01-24 18:20:18 +010056 public Collection<OpenId> openids;
Matthias Andreas Benkardd9b95882020-01-24 11:42:49 +010057
Matthias Andreas Benkardaa754802020-01-24 11:55:26 +010058 @OneToMany(mappedBy = "user", fetch = FetchType.LAZY)
Matthias Andreas Benkardd9b95882020-01-24 11:42:49 +010059 public Collection<PageKey> pageKeys;
60
Matthias Andreas Benkardaa754802020-01-24 11:55:26 +010061 @OneToMany(mappedBy = "owner", fetch = FetchType.LAZY)
Matthias Andreas Benkardd9b95882020-01-24 11:42:49 +010062 public Collection<Post> posts;
63
Matthias Andreas Benkardaa754802020-01-24 11:55:26 +010064 @OneToMany(mappedBy = "user", fetch = FetchType.LAZY)
Matthias Andreas Benkardd9b95882020-01-24 11:42:49 +010065 public Collection<UserDefaultTarget> defaultTargets;
66
Matthias Andreas Benkardaa754802020-01-24 11:55:26 +010067 @OneToMany(mappedBy = "user", fetch = FetchType.LAZY)
Matthias Andreas Benkardd9b95882020-01-24 11:42:49 +010068 public Collection<UserEmailAddress> emailAddresses;
69
Matthias Andreas Benkardaa754802020-01-24 11:55:26 +010070 @OneToMany(mappedBy = "user", fetch = FetchType.LAZY)
Matthias Andreas Benkardd9b95882020-01-24 11:42:49 +010071 public Collection<UserJid> jids;
72
Matthias Andreas Benkardaa754802020-01-24 11:55:26 +010073 @OneToMany(mappedBy = "user", fetch = FetchType.LAZY)
Matthias Andreas Benkardd9b95882020-01-24 11:42:49 +010074 public Collection<UserNickname> nicknames;
75
Matthias Andreas Benkardaa754802020-01-24 11:55:26 +010076 @OneToMany(mappedBy = "user", fetch = FetchType.LAZY)
Matthias Andreas Benkardb8027c62020-01-24 12:09:27 +010077 public Collection<UserRole> directRoles;
Matthias Andreas Benkardd9b95882020-01-24 11:42:49 +010078
Matthias Andreas Benkardaa754802020-01-24 11:55:26 +010079 @OneToMany(mappedBy = "user", fetch = FetchType.LAZY)
Matthias Andreas Benkardd9b95882020-01-24 11:42:49 +010080 public Collection<UserRsaKey> rsaKeys;
81
Matthias Andreas Benkardbe77d302020-01-24 14:08:52 +010082 @OneToOne(fetch = FetchType.LAZY)
Matthias Andreas Benkardd9b95882020-01-24 11:42:49 +010083 @JoinColumn(name = "role", referencedColumnName = "id", nullable = false)
84 public Role ownedRole;
85
Matthias Andreas Benkardaa754802020-01-24 11:55:26 +010086 @OneToMany(mappedBy = "user", fetch = FetchType.LAZY)
Matthias Andreas Benkardd9b95882020-01-24 11:42:49 +010087 public Collection<WebId> webids;
88
Matthias Andreas Benkardaa754802020-01-24 11:55:26 +010089 @OneToMany(mappedBy = "author", fetch = FetchType.LAZY)
Matthias Andreas Benkardd9b95882020-01-24 11:42:49 +010090 public Collection<WikiPageRevision> wikiPageRevisions;
Matthias Andreas Benkardf9c74272020-01-24 11:51:35 +010091
Matthias Andreas Benkardaa754802020-01-24 11:55:26 +010092 @ManyToMany(mappedBy = "visibleTo", fetch = FetchType.LAZY)
Matthias Andreas Benkardf9c74272020-01-24 11:51:35 +010093 public Collection<Post> visiblePosts;
Matthias Andreas Benkardb8027c62020-01-24 12:09:27 +010094
95 @ManyToMany(fetch = FetchType.LAZY)
96 @JoinTable(
97 name = "effective_user_roles",
98 joinColumns = @JoinColumn(name = "user"),
99 inverseJoinColumns = @JoinColumn(name = "role"))
100 public Set<Role> effectiveRoles;
Matthias Andreas Benkardd9b95882020-01-24 11:42:49 +0100101}