Skip to content

Commit a9526f1

Browse files
authored
Merge pull request #48 from Halbes-Byte/feature/chapter
Feature/chapter
2 parents 7d0ef4a + 49fe8be commit a9526f1

28 files changed

+370
-57
lines changed

docker-compose.yml

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,13 @@ services:
77
KC_DB_URL: jdbc:postgresql://keycloakdb1:5432/keycloak
88
KC_DB_USERNAME: ${KC_DB_USERNAME}
99
KC_DB_PASSWORD: ${KC_DB_PASSWORD}
10-
1110
KEYCLOAK_ADMIN: ${KC_DB_USERNAME}
1211
KEYCLOAK_ADMIN_PASSWORD: pass
13-
14-
1512
KC_HOSTNAME: localhost
1613
KC_HOSTNAME_PORT: 8080
1714
KC_HOSTNAME_STRICT: 'false'
1815
KC_HOSTNAME_STRICT_HTTPS: 'false'
1916
KC_LOG_LEVEL: debug
20-
2117
KC_METRICS_ENABLED: 'true'
2218
KC_HEALTH_ENABLED: 'true'
2319
KC_PROXY: edge
@@ -38,6 +34,21 @@ services:
3834
POSTGRES_PASSWORD: ${KC_DB_PASSWORD}
3935
ports:
4036
- '5432:5432'
37+
######################################################
38+
# Spring Boot App PostgreSQL Database
39+
app_postgres:
40+
image: postgres:15-alpine
41+
container_name: app-postgres-db
42+
restart: unless-stopped
43+
ports:
44+
- "6543:5432"
45+
environment:
46+
POSTGRES_DB: db
47+
POSTGRES_USER: postgres
48+
POSTGRES_PASSWORD: pass
49+
volumes:
50+
- app_postgres_data:/var/lib/postgresql/data
4151
######################################################
4252
volumes:
4353
postgres_data:
54+
app_postgres_data:

server/pom.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,12 @@
118118
<version>6.4.2</version>
119119
</dependency>
120120

121+
<dependency>
122+
<groupId>org.postgresql</groupId>
123+
<artifactId>postgresql</artifactId>
124+
<scope>runtime</scope>
125+
</dependency>
126+
121127
<dependency>
122128
<groupId>org.springframework.boot</groupId>
123129
<artifactId>spring-boot-starter-oauth2-resource-server</artifactId>
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package com.studybuddies.server.domain;
2+
3+
import jakarta.persistence.CascadeType;
4+
import jakarta.persistence.Entity;
5+
import jakarta.persistence.GeneratedValue;
6+
import jakarta.persistence.GenerationType;
7+
import jakarta.persistence.Id;
8+
import jakarta.persistence.JoinColumn;
9+
import jakarta.persistence.OneToMany;
10+
import java.util.ArrayList;
11+
import java.util.List;
12+
import lombok.Getter;
13+
import lombok.RequiredArgsConstructor;
14+
import lombok.Setter;
15+
16+
@Entity
17+
@Setter
18+
@Getter
19+
@RequiredArgsConstructor
20+
public class ChapterEntity {
21+
22+
@Id
23+
@GeneratedValue(strategy = GenerationType.IDENTITY)
24+
private Long id;
25+
private String title;
26+
27+
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
28+
@JoinColumn(name = "chapter_id")
29+
private List<CheckboxEntity> checkbox = new ArrayList<>();
30+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.studybuddies.server.domain;
2+
3+
import jakarta.persistence.Entity;
4+
import jakarta.persistence.GeneratedValue;
5+
import jakarta.persistence.GenerationType;
6+
import jakarta.persistence.Id;
7+
import jakarta.validation.constraints.NotBlank;
8+
import java.util.UUID;
9+
import lombok.Data;
10+
import lombok.RequiredArgsConstructor;
11+
import lombok.Setter;
12+
13+
@RequiredArgsConstructor
14+
@Entity
15+
@Data
16+
@Setter
17+
public class CheckboxEntity {
18+
19+
@Id
20+
@GeneratedValue(strategy = GenerationType.UUID)
21+
private UUID id;
22+
@NotBlank
23+
private String title;
24+
private boolean checked;
25+
26+
private UUID userUuid;
27+
}

server/src/main/java/com/studybuddies/server/domain/UserEntity.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
package com.studybuddies.server.domain;
22

3-
import jakarta.persistence.CollectionTable;
3+
import jakarta.persistence.CascadeType;
44
import jakarta.persistence.Column;
5-
import jakarta.persistence.ElementCollection;
65
import jakarta.persistence.Entity;
76
import jakarta.persistence.Id;
87
import jakarta.persistence.JoinColumn;
8+
import jakarta.persistence.OneToMany;
9+
import java.util.ArrayList;
910
import java.util.List;
1011
import java.util.UUID;
1112
import lombok.Getter;
@@ -24,8 +25,7 @@ public class UserEntity {
2425
@Column(unique = true, nullable = false)
2526
String username;
2627

27-
@ElementCollection
28-
@CollectionTable(name = "userModules", joinColumns = @JoinColumn(name = "userUuid"))
29-
@Column(name = "moduleName")
30-
private List<String> modules;
28+
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
29+
@JoinColumn(name = "user_uuid")
30+
private List<UserModule> modules = new ArrayList<>();
3131
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package com.studybuddies.server.domain;
2+
3+
import jakarta.persistence.CascadeType;
4+
import jakarta.persistence.Column;
5+
import jakarta.persistence.Entity;
6+
import jakarta.persistence.GeneratedValue;
7+
import jakarta.persistence.GenerationType;
8+
import jakarta.persistence.Id;
9+
import jakarta.persistence.JoinColumn;
10+
import jakarta.persistence.OneToMany;
11+
import java.util.ArrayList;
12+
import java.util.List;
13+
import lombok.Getter;
14+
import lombok.NoArgsConstructor;
15+
import lombok.Setter;
16+
17+
@Entity
18+
@Getter
19+
@Setter
20+
@NoArgsConstructor
21+
public class UserModule {
22+
23+
@Id
24+
@GeneratedValue(strategy = GenerationType.IDENTITY)
25+
@Column(nullable = false, updatable = false)
26+
private Long id;
27+
28+
private String name;
29+
private String examDate;
30+
private String examLoc;
31+
32+
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
33+
@JoinColumn(name = "module_id")
34+
private List<ChapterEntity> chapter = new ArrayList<>();
35+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package com.studybuddies.server.persistance;
2+
3+
import com.studybuddies.server.domain.ChapterEntity;
4+
import java.util.UUID;
5+
import org.springframework.data.repository.CrudRepository;
6+
import org.springframework.stereotype.Repository;
7+
8+
@Repository
9+
public interface ChapterRepository extends CrudRepository<ChapterEntity, UUID> {
10+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package com.studybuddies.server.persistance;
2+
3+
import com.studybuddies.server.domain.CheckboxEntity;
4+
import java.util.List;
5+
import java.util.UUID;
6+
import org.springframework.data.repository.CrudRepository;
7+
import org.springframework.stereotype.Repository;
8+
9+
@Repository
10+
public interface CheckboxRepository extends CrudRepository<CheckboxEntity, UUID> {
11+
List<CheckboxEntity> findByUserUuid(UUID userUuid);
12+
}

server/src/main/java/com/studybuddies/server/persistance/MeetingRepository.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import java.util.List;
55
import java.util.Optional;
66
import java.util.UUID;
7-
import org.springframework.data.jpa.domain.Specification;
87
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
98
import org.springframework.data.repository.CrudRepository;
109
import org.springframework.stereotype.Repository;
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.studybuddies.server.persistance;
2+
3+
import com.studybuddies.server.domain.UserModule;
4+
import org.springframework.data.jpa.repository.JpaRepository;
5+
6+
public interface UserModuleRepository extends JpaRepository<UserModule, Long> {
7+
8+
}

0 commit comments

Comments
 (0)