Compare commits
3 Commits
main
...
db_reposit
Author | SHA1 | Date | |
---|---|---|---|
4d64662f16 | |||
98c889a0cc | |||
1fbc4460ad |
3
.idea/.gitignore
vendored
Normal file
3
.idea/.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
# Default ignored files
|
||||
/shelf/
|
||||
/workspace.xml
|
9
.idea/PutBit.iml
Normal file
9
.idea/PutBit.iml
Normal file
@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="JAVA_MODULE" version="4">
|
||||
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$" />
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
</module>
|
6
.idea/misc.xml
Normal file
6
.idea/misc.xml
Normal file
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_19" default="true" project-jdk-name="19" project-jdk-type="JavaSDK">
|
||||
<output url="file://$PROJECT_DIR$/out" />
|
||||
</component>
|
||||
</project>
|
8
.idea/modules.xml
Normal file
8
.idea/modules.xml
Normal file
@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/PutBit.iml" filepath="$PROJECT_DIR$/.idea/PutBit.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
6
.idea/vcs.xml
Normal file
6
.idea/vcs.xml
Normal file
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
1
app/.gitignore
vendored
1
app/.gitignore
vendored
@ -1,4 +1,5 @@
|
||||
HELP.md
|
||||
data.mv.db
|
||||
target/
|
||||
!.mvn/wrapper/maven-wrapper.jar
|
||||
!**/src/main/**/target/
|
||||
|
19
app/.mvn/wrapper/maven-wrapper.properties
vendored
Normal file
19
app/.mvn/wrapper/maven-wrapper.properties
vendored
Normal file
@ -0,0 +1,19 @@
|
||||
# Licensed to the Apache Software Foundation (ASF) under one
|
||||
# or more contributor license agreements. See the NOTICE file
|
||||
# distributed with this work for additional information
|
||||
# regarding copyright ownership. The ASF licenses this file
|
||||
# to you under the Apache License, Version 2.0 (the
|
||||
# "License"); you may not use this file except in compliance
|
||||
# with the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing,
|
||||
# software distributed under the License is distributed on an
|
||||
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
# KIND, either express or implied. See the License for the
|
||||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
wrapperVersion=3.3.2
|
||||
distributionType=only-script
|
||||
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.9/apache-maven-3.9.9-bin.zip
|
BIN
app/data.mv.db
Normal file
BIN
app/data.mv.db
Normal file
Binary file not shown.
31
app/src/main/java/putBit/app/models/Achievement.java
Normal file
31
app/src/main/java/putBit/app/models/Achievement.java
Normal file
@ -0,0 +1,31 @@
|
||||
package putBit.app.models;
|
||||
|
||||
import jakarta.persistence.*;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Entity(name = "achievements")
|
||||
public class Achievement {
|
||||
@Id
|
||||
@GeneratedValue
|
||||
@Column(name = "id")
|
||||
private int id;
|
||||
|
||||
|
||||
@Column(name = "title", unique = true, nullable = false, length = 50)
|
||||
private String title ;
|
||||
|
||||
@Column(name = "points", nullable = false, length = 3)
|
||||
private int points ;
|
||||
|
||||
@ManyToMany(mappedBy = "achievements")
|
||||
List<User> users;
|
||||
}
|
28
app/src/main/java/putBit/app/models/Benefit.java
Normal file
28
app/src/main/java/putBit/app/models/Benefit.java
Normal file
@ -0,0 +1,28 @@
|
||||
package putBit.app.models;
|
||||
|
||||
import jakarta.persistence.*;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Entity(name = "benefits")
|
||||
public class Benefit {
|
||||
@Id
|
||||
@GeneratedValue
|
||||
@Column(name = "id")
|
||||
private int id;
|
||||
|
||||
|
||||
@Column(name = "title", unique = true,nullable = false, length = 50)
|
||||
private String title ;
|
||||
|
||||
@ManyToMany(mappedBy = "benefits")
|
||||
List<User> users;
|
||||
}
|
32
app/src/main/java/putBit/app/models/Exam.java
Normal file
32
app/src/main/java/putBit/app/models/Exam.java
Normal file
@ -0,0 +1,32 @@
|
||||
package putBit.app.models;
|
||||
|
||||
import jakarta.persistence.*;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Entity(name = "exams")
|
||||
public class Exam {
|
||||
@Id
|
||||
@GeneratedValue
|
||||
@Column(name = "id")
|
||||
private int id;
|
||||
|
||||
|
||||
@Column(name = "title", unique = true, nullable = false, length = 50)
|
||||
private String title ;
|
||||
|
||||
@OneToMany(fetch = FetchType.EAGER, mappedBy = "exam")
|
||||
List<ExamResult> users;
|
||||
|
||||
@OneToMany(fetch = FetchType.EAGER, mappedBy = "exam")
|
||||
List<TrainingExam> trainings;
|
||||
}
|
31
app/src/main/java/putBit/app/models/ExamResult.java
Normal file
31
app/src/main/java/putBit/app/models/ExamResult.java
Normal file
@ -0,0 +1,31 @@
|
||||
package putBit.app.models;
|
||||
|
||||
import jakarta.persistence.*;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Entity(name = "exam_results")
|
||||
public class ExamResult {
|
||||
@Id
|
||||
@GeneratedValue
|
||||
@Column(name = "id")
|
||||
private int id;
|
||||
|
||||
@ManyToOne
|
||||
@JoinColumn(name = "user_id", nullable = false)
|
||||
private User user ;
|
||||
|
||||
@ManyToOne
|
||||
@JoinColumn(name = "exam_id", nullable = false)
|
||||
private Exam exam ;
|
||||
|
||||
@Column(name = "points", nullable = false, length = 3)
|
||||
private int points ;
|
||||
|
||||
}
|
27
app/src/main/java/putBit/app/models/Order.java
Normal file
27
app/src/main/java/putBit/app/models/Order.java
Normal file
@ -0,0 +1,27 @@
|
||||
package putBit.app.models;
|
||||
|
||||
import jakarta.persistence.*;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Entity(name = "orders")
|
||||
public class Order {
|
||||
|
||||
@Id
|
||||
@OneToOne
|
||||
@JoinColumn(name = "user_id")
|
||||
private User user;
|
||||
|
||||
@ManyToOne
|
||||
@JoinColumn(name = "training_id")
|
||||
Training training;
|
||||
|
||||
@Column(name = "confirm", columnDefinition = "boolean")
|
||||
Boolean confirm = false;
|
||||
}
|
47
app/src/main/java/putBit/app/models/Training.java
Normal file
47
app/src/main/java/putBit/app/models/Training.java
Normal file
@ -0,0 +1,47 @@
|
||||
package putBit.app.models;
|
||||
|
||||
import jakarta.persistence.*;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Entity(name = "trainings")
|
||||
public class Training {
|
||||
|
||||
@Id
|
||||
@GeneratedValue
|
||||
@Column(name = "id")
|
||||
private int id;
|
||||
|
||||
@Column(name = "num", unique = true, nullable = false, length = 50)
|
||||
private String num ;
|
||||
|
||||
@Column(name = "title", unique = true, nullable = false, length = 50)
|
||||
private String title ;
|
||||
|
||||
@Column(name = "desc", nullable = false, length = 300)
|
||||
private String desc ;
|
||||
|
||||
@Column(name = "prof", unique = true, nullable = false, length = 300)
|
||||
private String prof ;
|
||||
|
||||
@Column(name = "basic_places", nullable = false, length = 3)
|
||||
private int basic_places ;
|
||||
|
||||
@Column(name = "benefit_places", nullable = false, length = 3)
|
||||
private int benefit_places ;
|
||||
|
||||
@OneToMany(fetch = FetchType.EAGER, mappedBy = "training")
|
||||
List<TrainingExam> exams;
|
||||
|
||||
@OneToMany(fetch = FetchType.EAGER, mappedBy = "training")
|
||||
List<Order> orders;
|
||||
|
||||
}
|
32
app/src/main/java/putBit/app/models/TrainingExam.java
Normal file
32
app/src/main/java/putBit/app/models/TrainingExam.java
Normal file
@ -0,0 +1,32 @@
|
||||
package putBit.app.models;
|
||||
|
||||
import jakarta.persistence.*;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Entity(name = "training_exams")
|
||||
public class TrainingExam {
|
||||
|
||||
@Id
|
||||
@GeneratedValue
|
||||
@Column(name = "id")
|
||||
private int id;
|
||||
|
||||
@ManyToOne
|
||||
@JoinColumn(name = "training_id", nullable = false)
|
||||
private Training training ;
|
||||
|
||||
@ManyToOne
|
||||
@JoinColumn(name = "exam_id", nullable = false)
|
||||
private Exam exam ;
|
||||
|
||||
@Column(name = "points", nullable = false, length = 3)
|
||||
private int points ;
|
||||
|
||||
}
|
63
app/src/main/java/putBit/app/models/User.java
Normal file
63
app/src/main/java/putBit/app/models/User.java
Normal file
@ -0,0 +1,63 @@
|
||||
package putBit.app.models;
|
||||
|
||||
import jakarta.persistence.*;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import putBit.app.models.enums.Role;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Entity(name = "users")
|
||||
public class User {
|
||||
@Id
|
||||
@GeneratedValue
|
||||
@Column(name = "id")
|
||||
private int id;
|
||||
|
||||
@Enumerated(EnumType.STRING)
|
||||
@Column(name = "role", nullable = false)
|
||||
private Role role;
|
||||
|
||||
@Column(name = "email", nullable = false)
|
||||
private String email;
|
||||
|
||||
@Column(name = "password", nullable = false, length = 20)
|
||||
private String password;
|
||||
|
||||
@Column(name = "phone", length = 12)
|
||||
private String phone;
|
||||
|
||||
|
||||
@Column(name = "name", nullable = false, length = 30)
|
||||
private String name;
|
||||
|
||||
@Column(name = "snils", unique = true, length = 11)
|
||||
private String snils;
|
||||
|
||||
@ManyToMany
|
||||
@JoinTable(
|
||||
name = "user_achievements",
|
||||
joinColumns = @JoinColumn(name = "user_id"),
|
||||
inverseJoinColumns = @JoinColumn(name = "achievements_id"))
|
||||
List<Achievement> achievements;
|
||||
|
||||
@ManyToMany
|
||||
@JoinTable(
|
||||
name = "user_benefits",
|
||||
joinColumns = @JoinColumn(name = "user_id"),
|
||||
inverseJoinColumns = @JoinColumn(name = "benefits_id"))
|
||||
List<Benefit> benefits;
|
||||
|
||||
@OneToMany(fetch = FetchType.EAGER, mappedBy = "user")
|
||||
List<ExamResult> exams;
|
||||
|
||||
@OneToOne(fetch = FetchType.EAGER, mappedBy = "user" )
|
||||
Order order;
|
||||
}
|
6
app/src/main/java/putBit/app/models/enums/Role.java
Normal file
6
app/src/main/java/putBit/app/models/enums/Role.java
Normal file
@ -0,0 +1,6 @@
|
||||
package putBit.app.models.enums;
|
||||
|
||||
public enum Role {
|
||||
USER,
|
||||
ADMIN,
|
||||
}
|
@ -0,0 +1,19 @@
|
||||
package putBit.app.repositories;
|
||||
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.data.jpa.repository.Query;
|
||||
import org.springframework.data.repository.query.Param;
|
||||
import putBit.app.models.Achievement;
|
||||
import putBit.app.models.Benefit;
|
||||
import putBit.app.models.ExamResult;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
|
||||
public interface AchievementRepository extends JpaRepository<Achievement, Integer> {
|
||||
|
||||
Optional<List<Achievement>> findAchievementsByUserId(int userId);
|
||||
|
||||
Optional<List<Benefit>> findAchievementsByUserIdNot(int userId);
|
||||
}
|
@ -0,0 +1,14 @@
|
||||
package putBit.app.repositories;
|
||||
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import putBit.app.models.Benefit;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
public interface BenefitRepository extends JpaRepository<Benefit, Integer> {
|
||||
Optional<List<Benefit>> findBenefitsByUserId(int userId);
|
||||
|
||||
Optional<List<Benefit>> findBenefitsByUserIdNot(int userId);
|
||||
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
package putBit.app.repositories;
|
||||
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import putBit.app.models.Exam;
|
||||
import putBit.app.models.User;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
public interface ExamRepository extends JpaRepository<Exam, Integer> {
|
||||
|
||||
}
|
@ -0,0 +1,13 @@
|
||||
package putBit.app.repositories;
|
||||
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import putBit.app.models.Exam;
|
||||
import putBit.app.models.ExamResult;
|
||||
import putBit.app.models.User;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
public interface ExamResultRepository extends JpaRepository<ExamResult, Integer> {
|
||||
Optional<List<ExamResult>> findByUser(User user);
|
||||
}
|
@ -0,0 +1,18 @@
|
||||
package putBit.app.repositories;
|
||||
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.data.jpa.repository.Query;
|
||||
import org.springframework.data.repository.query.Param;
|
||||
import putBit.app.models.Order;
|
||||
import putBit.app.models.Training;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
public interface OrderRepository extends JpaRepository<Order, Integer> {
|
||||
@Query(value = "select o.* from orders where " +
|
||||
"o.user_id = (select u.id from users u where " +
|
||||
"u.name LIKE %:name% or u.snils like %:snils%) " , nativeQuery = true)
|
||||
Optional<List<Order>> findByUserInfo(@Param("snils")String snils, @Param("name")String name);
|
||||
|
||||
}
|
@ -0,0 +1,16 @@
|
||||
package putBit.app.repositories;
|
||||
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import putBit.app.models.Benefit;
|
||||
import putBit.app.models.Order;
|
||||
import putBit.app.models.TrainingExam;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
public interface TrainingExamRepository extends JpaRepository<TrainingExam, Integer> {
|
||||
|
||||
Optional<List<TrainingExam>> findExamsByTrainingId(int userId);
|
||||
|
||||
Optional<List<TrainingExam>> findExamsByTrainingIdNot(int userId);
|
||||
}
|
@ -0,0 +1,13 @@
|
||||
package putBit.app.repositories;
|
||||
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import putBit.app.models.Training;
|
||||
import putBit.app.models.User;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
public interface TrainingRepository extends JpaRepository<TrainingRepository, Integer> {
|
||||
|
||||
Optional<List<Training>> findByNumContainingOrTitleContaining(String num, String title);
|
||||
}
|
@ -0,0 +1,15 @@
|
||||
package putBit.app.repositories;
|
||||
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.data.jpa.repository.Query;
|
||||
import org.springframework.data.repository.query.Param;
|
||||
import putBit.app.models.User;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
|
||||
public interface UserRepository extends JpaRepository<User, Integer> {
|
||||
|
||||
Optional<User> findByEmailAndPassword(String email, String password);
|
||||
}
|
@ -1 +1,12 @@
|
||||
spring.application.name=app
|
||||
spring.main.banner-mode=off
|
||||
#server.port=8081
|
||||
spring.datasource.url=jdbc:h2:file:./data
|
||||
spring.datasource.driverClassName=org.h2.Driver
|
||||
spring.datasource.username=sa
|
||||
spring.datasource.password=password
|
||||
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
|
||||
spring.jpa.hibernate.ddl-auto=update
|
||||
spring.h2.console.enabled=true
|
||||
spring.h2.console.settings.trace=false
|
||||
spring.h2.console.settings.web-allow-others=false
|
Loading…
Reference in New Issue
Block a user