Skip to content
This repository was archived by the owner on Dec 27, 2024. It is now read-only.

Commit 4d49095

Browse files
dev/db/Добавил миграцию базы данных (#3)
* dev/db/Добавил миграцию базы данных * dev/db/Добавил entity для бд * dev/db/Добавил jpa репозитории
1 parent 48f993d commit 4d49095

20 files changed

+397
-1
lines changed

build.gradle

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,19 @@ repositories {
1818
}
1919

2020
dependencies {
21+
// spring
2122
implementation 'org.springframework.boot:spring-boot-starter-web'
23+
24+
// db
25+
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
26+
implementation 'org.liquibase:liquibase-core:4.29.2'
27+
implementation 'org.postgresql:postgresql:42.7.4'
28+
29+
// lombok
30+
implementation 'org.projectlombok:lombok'
31+
annotationProcessor 'org.projectlombok:lombok'
32+
33+
// test
2234
testImplementation 'org.springframework.boot:spring-boot-starter-test'
2335
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
2436
}

docs/dataModel/schema.sql

Whitespace-only changes.
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package com.cf.cfteam.models.entities.codeforces;
2+
3+
import jakarta.persistence.*;
4+
import lombok.*;
5+
6+
import java.time.Instant;
7+
8+
@Builder
9+
@Setter
10+
@Getter
11+
@NoArgsConstructor
12+
@AllArgsConstructor
13+
@EqualsAndHashCode(exclude = "group")
14+
@Entity
15+
@Table(name = "cf_users", schema = "codeforces")
16+
public class CfUser {
17+
18+
@Id
19+
@GeneratedValue(strategy = GenerationType.IDENTITY)
20+
private Long id;
21+
22+
@Column(name = "c_name", nullable = false)
23+
private String name;
24+
25+
@Column(name = "c_description", nullable = true)
26+
private String description;
27+
28+
@Column(name = "с_time", nullable = false)
29+
private Instant createdTime;
30+
31+
@ManyToOne(fetch = FetchType.LAZY)
32+
@JoinColumn(name = "c_group_id", nullable = false)
33+
private CfUsersGroup group;
34+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package com.cf.cfteam.models.entities.codeforces;
2+
3+
import com.cf.cfteam.models.entities.security.User;
4+
import jakarta.persistence.*;
5+
import lombok.*;
6+
7+
import java.time.Instant;
8+
import java.util.List;
9+
10+
@Builder
11+
@Setter
12+
@Getter
13+
@NoArgsConstructor
14+
@AllArgsConstructor
15+
@EqualsAndHashCode(exclude = {"user", "cfUsers"})
16+
@Entity
17+
@Table(name = "t_cf_users_groups", schema = "codeforces")
18+
public class CfUsersGroup {
19+
20+
@Id
21+
@GeneratedValue(strategy = GenerationType.IDENTITY)
22+
private Long id;
23+
24+
@Column(name = "c_name", nullable = false)
25+
private String name;
26+
27+
@Column(name = "c_description", nullable = true)
28+
private String description;
29+
30+
@Column(name = "с_time", nullable = false)
31+
private Instant createdTime;
32+
33+
@ManyToOne(fetch = FetchType.LAZY)
34+
@JoinColumn(name = "c_user_id", nullable = false)
35+
private User user;
36+
37+
@OneToMany(mappedBy = "group", cascade = CascadeType.ALL, orphanRemoval = true)
38+
private List<CfUser> cfUsers;
39+
}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package com.cf.cfteam.models.entities.codeforces;
2+
3+
import jakarta.persistence.*;
4+
import lombok.*;
5+
6+
import java.time.Instant;
7+
8+
@Builder
9+
@Setter
10+
@Getter
11+
@NoArgsConstructor
12+
@AllArgsConstructor
13+
@EqualsAndHashCode(exclude = "group")
14+
@Entity
15+
@Table(name = "t_cf_teams", schema = "codeforces")
16+
public class CfUsersTeam {
17+
18+
@Id
19+
@GeneratedValue(strategy = GenerationType.IDENTITY)
20+
private Long id;
21+
22+
@Column(name = "c_name", nullable = false)
23+
private String name;
24+
25+
@Column(name = "c_description", nullable = true)
26+
private String description;
27+
28+
@Column(name = "c_first_user_login", nullable = true)
29+
private String firstUser;
30+
31+
@Column(name = "c_second_user_login", nullable = true)
32+
private String secondUser;
33+
34+
@Column(name = "c_third_user_login", nullable = true)
35+
private String thirdUser;
36+
37+
@Column(name = "с_time", nullable = false)
38+
private Instant createdTime;
39+
40+
@ManyToOne(fetch = FetchType.LAZY)
41+
@JoinColumn(name = "c_group_id", nullable = false)
42+
private CfUsersTeamsGroup group;
43+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package com.cf.cfteam.models.entities.codeforces;
2+
3+
import com.cf.cfteam.models.entities.security.User;
4+
import jakarta.persistence.*;
5+
import lombok.*;
6+
7+
import java.time.Instant;
8+
import java.util.List;
9+
10+
@Builder
11+
@Setter
12+
@Getter
13+
@NoArgsConstructor
14+
@AllArgsConstructor
15+
@EqualsAndHashCode(exclude = {"user", "cfTeams"})
16+
@Entity
17+
@Table(name = "t_cf_users_teams_groups", schema = "codeforces")
18+
public class CfUsersTeamsGroup {
19+
20+
@Id
21+
@GeneratedValue(strategy = GenerationType.IDENTITY)
22+
private Long id;
23+
24+
@Column(name = "c_name", nullable = false)
25+
private String name;
26+
27+
@Column(name = "c_description", nullable = true)
28+
private String description;
29+
30+
@Column(name = "с_time", nullable = false)
31+
private Instant createdTime;
32+
33+
@ManyToOne(fetch = FetchType.LAZY)
34+
@JoinColumn(name = "c_user_id", nullable = false)
35+
private User user;
36+
37+
@OneToMany(mappedBy = "group", cascade = CascadeType.ALL, orphanRemoval = true)
38+
private List<CfUsersTeam> cfTeams;
39+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package com.cf.cfteam.models.entities.security;
2+
3+
public enum Role {
4+
USER,
5+
ADMIN
6+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package com.cf.cfteam.models.entities.security;
2+
3+
import jakarta.persistence.*;
4+
import lombok.*;
5+
6+
import java.time.Instant;
7+
8+
@Builder
9+
@Setter
10+
@Getter
11+
@NoArgsConstructor
12+
@AllArgsConstructor
13+
@EqualsAndHashCode(exclude = "user")
14+
@Entity
15+
@Table(name = "t_tokens", schema = "security")
16+
public class Token {
17+
18+
@Id
19+
@GeneratedValue(strategy = GenerationType.IDENTITY)
20+
private Long id;
21+
22+
@Column(name = "c_token", nullable = false)
23+
private String token;
24+
25+
@Column(name = "c_revoked", nullable = false)
26+
private boolean revoked;
27+
28+
@Column(name = "с_time", nullable = false)
29+
private Instant createdTime;
30+
31+
@ManyToOne(fetch = FetchType.LAZY)
32+
@JoinColumn(name = "c_user_id", nullable = false)
33+
private User user;
34+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package com.cf.cfteam.models.entities.security;
2+
3+
import jakarta.persistence.*;
4+
import lombok.*;
5+
6+
import java.time.Instant;
7+
import java.util.List;
8+
9+
@Builder
10+
@Setter
11+
@Getter
12+
@NoArgsConstructor
13+
@AllArgsConstructor
14+
@EqualsAndHashCode(exclude = "tokens")
15+
@Entity
16+
@Table(name = "t_users", schema = "security")
17+
public class User {
18+
19+
@Id
20+
@GeneratedValue(strategy = GenerationType.IDENTITY)
21+
private Long id;
22+
23+
@Column(name = "c_name", nullable = false)
24+
private String name;
25+
26+
@Column(name = "c_login", unique = true, nullable = false)
27+
private String login;
28+
29+
@Column(name = "c_hashed_password", nullable = false)
30+
private String hashedPassword;
31+
32+
@Enumerated(EnumType.STRING)
33+
@Column(name = "c_role", nullable = false)
34+
private Role role;
35+
36+
@Column(name = "с_time", nullable = false)
37+
private Instant createdTime;
38+
39+
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true)
40+
private List<Token> tokens;
41+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.cf.cfteam.repositories.jpa.codeforces;
2+
3+
import com.cf.cfteam.models.entities.codeforces.CfUser;
4+
import org.springframework.data.jpa.repository.JpaRepository;
5+
6+
public interface CfUserRepository extends JpaRepository<CfUser,Long> {
7+
}

0 commit comments

Comments
 (0)