Skip to content

Commit

Permalink
Merge pull request #5 from SWM-M3PRO/feature/M3-139-entityResetting
Browse files Browse the repository at this point in the history
M3-139 엔티티 다시 세팅하기
  • Loading branch information
qjvk2880 authored Jun 26, 2024
2 parents b2f5552 + 879ba3d commit 1658305
Show file tree
Hide file tree
Showing 12 changed files with 251 additions and 15 deletions.
3 changes: 3 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,9 @@ dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-validation'
implementation group: 'org.hibernate', name: 'hibernate-spatial', version: '6.4.2.Final'

compileOnly 'org.projectlombok:lombok'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
runtimeOnly 'com.mysql:mysql-connector-j'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ public class IndividualPixelResponse {
private double y;

public static IndividualPixelResponse from(Pixel pixel) {
return new IndividualPixelResponse(pixel.getLatitude(), pixel.getLongitude(), pixel.getX(), pixel.getY());
return new IndividualPixelResponse(pixel.getCoordinate().getX(), pixel.getCoordinate().getY(), pixel.getX(),
pixel.getY());
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package com.m3pro.groundflip.domain.entity;

import java.time.LocalDateTime;

import com.m3pro.groundflip.domain.entity.global.BaseTimeEntity;

import jakarta.persistence.Column;
Expand Down Expand Up @@ -35,4 +37,6 @@ public class Community extends BaseTimeEntity {
private String backgroundImageUrl;

private String description;

private LocalDateTime deletedAt;
}
17 changes: 6 additions & 11 deletions src/main/java/com/m3pro/groundflip/domain/entity/Pixel.java
Original file line number Diff line number Diff line change
@@ -1,17 +1,14 @@
package com.m3pro.groundflip.domain.entity;

import org.locationtech.jts.geom.Point;

import com.m3pro.groundflip.domain.entity.global.BaseTimeEntity;

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Index;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Builder;
Expand All @@ -20,7 +17,6 @@

@Getter
@Entity
@Table(name = "pixel", indexes = @Index(name = "index__x__y", columnList = "x, y"))
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor
@Builder
Expand All @@ -34,11 +30,10 @@ public class Pixel extends BaseTimeEntity {

private Long y;

private double latitude;
@Column(columnDefinition = "POINT SRID 4326 NOT NULL")
private Point coordinate;

private double longitude;
private String address;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "user_id")
private User user;
private Integer addressNumber;
}
47 changes: 47 additions & 0 deletions src/main/java/com/m3pro/groundflip/domain/entity/PixelUser.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package com.m3pro.groundflip.domain.entity;

import java.time.LocalDateTime;

import com.m3pro.groundflip.domain.entity.global.BaseTimeEntity;

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Getter
@Entity
@Table(name = "pixel_user")
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor
@Builder
public class PixelUser extends BaseTimeEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "pixel_user_id")
private Long id;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "user_id")
private User user;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "pixel_id")
private Pixel pixel;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "community_id")
private Community community;

private LocalDateTime deletedAt;
}
34 changes: 34 additions & 0 deletions src/main/java/com/m3pro/groundflip/domain/entity/StepRecord.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package com.m3pro.groundflip.domain.entity;

import java.sql.Date;

import com.m3pro.groundflip.domain.entity.global.BaseTimeEntity;

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Getter
@Entity
@Table(name = "step_record")
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor
@Builder
public class StepRecord extends BaseTimeEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "step_record_id")
private Long id;

private Date date;

private Integer steps;
}
49 changes: 48 additions & 1 deletion src/main/java/com/m3pro/groundflip/domain/entity/User.java
Original file line number Diff line number Diff line change
@@ -1 +1,48 @@
package com.m3pro.groundflip.domain.entity;import com.m3pro.groundflip.domain.entity.global.BaseTimeEntity;import jakarta.persistence.Column;import jakarta.persistence.Entity;import jakarta.persistence.GeneratedValue;import jakarta.persistence.GenerationType;import jakarta.persistence.Id;import jakarta.persistence.Table;import lombok.AccessLevel;import lombok.AllArgsConstructor;import lombok.Builder;import lombok.Getter;import lombok.NoArgsConstructor;@Getter@Entity@Table(name = "user")@NoArgsConstructor(access = AccessLevel.PROTECTED)@AllArgsConstructor@Builderpublic class User extends BaseTimeEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "user_id") private Long id; private String nickname;}
package com.m3pro.groundflip.domain.entity;

import java.util.Date;

import com.m3pro.groundflip.domain.entity.global.BaseTimeEntity;
import com.m3pro.groundflip.enums.Gender;
import com.m3pro.groundflip.enums.Provider;

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.Pattern;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Getter
@Entity
@Table(name = "user")
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor
@Builder
public class User extends BaseTimeEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "user_id")
private Long id;

@Pattern(regexp = "[가-힣a-zA-Z0-9]{3,10}", message = "닉네임은 한글, 영어, 숫자를 조합해 3글자 이상, 10글자 이하입니다.")
private String nickname;

private Date birthYear;

private Gender gender;

private Provider provider;

@Email
private String email;

private Date deletedAt;
}
Original file line number Diff line number Diff line change
@@ -1 +1,43 @@
package com.m3pro.groundflip.domain.entity;import com.m3pro.groundflip.domain.entity.global.BaseTimeEntity;import jakarta.persistence.Column;import jakarta.persistence.Entity;import jakarta.persistence.FetchType;import jakarta.persistence.GeneratedValue;import jakarta.persistence.GenerationType;import jakarta.persistence.Id;import jakarta.persistence.JoinColumn;import jakarta.persistence.ManyToOne;import jakarta.persistence.Table;import lombok.AccessLevel;import lombok.AllArgsConstructor;import lombok.Builder;import lombok.Getter;import lombok.NoArgsConstructor;@Getter@Entity@Table(name = "user_community")@NoArgsConstructor(access = AccessLevel.PROTECTED)@AllArgsConstructor@Builderpublic class UserCommunity extends BaseTimeEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "user_community_id") private Long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "user_id") private User user; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "community_id") private Community community;}
package com.m3pro.groundflip.domain.entity;

import java.time.LocalDateTime;

import com.m3pro.groundflip.domain.entity.global.BaseTimeEntity;

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Getter
@Entity
@Table(name = "user_community")
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor
@Builder
public class UserCommunity extends BaseTimeEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "user_community_id")
private Long id;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "user_id")
private User user;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "community_id")
private Community community;

private LocalDateTime deletedAt;
}
13 changes: 13 additions & 0 deletions src/main/java/com/m3pro/groundflip/enums/Gender.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.m3pro.groundflip.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;

@AllArgsConstructor
@Getter
public enum Gender {
MALE("남성"),
FEMALE("여성");

private final String gender;
}
15 changes: 15 additions & 0 deletions src/main/java/com/m3pro/groundflip/enums/Provider.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.m3pro.groundflip.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;

@AllArgsConstructor
@Getter
public enum Provider {
MALE("네이버"),
GOOGLE("구글"),
APPLE("애플"),
KAKAO("카카오");

private final String provider;
}
1 change: 1 addition & 0 deletions src/main/resources/application.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ spring:
password: ${DB_PASSWORD}

jpa:
database-platform: org.hibernate.spatial.dialect.mysql.MySQL56InnoDBSpatialDialect
hibernate:
ddl-auto: update
properties:
Expand Down
36 changes: 35 additions & 1 deletion src/main/resources/static/pixel_insert.sql
Original file line number Diff line number Diff line change
@@ -1 +1,35 @@
DROP PROCEDURE IF EXISTS insertPixel;DELIMITER $$CREATE PROCEDURE insertPixel ()BEGIN DECLARE lat_per_pixel DOUBLE DEFAULT 0.0000724; DECLARE lon_per_pixel DOUBLE DEFAULT 0.000909; DECLARE upper_left_lat DOUBLE DEFAULT 38.240675; DECLARE upper_left_lon DOUBLE DEFAULT 125.905952; DECLARE current_lat DOUBLE; DECLARE current_lon DOUBLE; DECLARE i BIGINT DEFAULT 0; DECLARE j BIGINT DEFAULT 0; SET current_lat = upper_left_lat; SET current_lon = upper_left_lon; WHILE i < 7000 DO START TRANSACTION; SET current_lat = upper_left_lat - (i * lat_per_pixel); SET j = 0; WHILE j < 4156 DO SET current_lon = upper_left_lon + (j * lon_per_pixel);INSERT INTO pixel (latitude, longitude, x, y, created_at, modified_at) VALUES (current_lat, current_lon, i, j, NOW(), NOW());SET j = j + 1;END WHILE; SET current_lon = upper_left_lon; -- Reset current longitude to the initial value SET i = i + 1;COMMIT;END WHILE;END $$DELIMITER ;-- Call the stored procedure to insert the coordinatesCALL InsertPixel();
DROP PROCEDURE IF EXISTS insertPixel;
DELIMITER $$
CREATE PROCEDURE insertPixel()
BEGIN
DECLARE lat_per_pixel DOUBLE DEFAULT 0.0000724;
DECLARE lon_per_pixel DOUBLE DEFAULT 0.000909;
DECLARE upper_left_lat DOUBLE DEFAULT 38.240675;
DECLARE upper_left_lon DOUBLE DEFAULT 125.905952;
DECLARE current_lat DOUBLE;
DECLARE current_lon DOUBLE;
DECLARE i BIGINT DEFAULT 0;
DECLARE j BIGINT DEFAULT 0;
SET current_lat = upper_left_lat;
SET current_lon = upper_left_lon;
START TRANSACTION;
WHILE i < 7000
DO
SET current_lat = upper_left_lat - (i * lat_per_pixel);
SET j = 0;
WHILE j < 4156
DO
SET current_lon = upper_left_lon + (j * lon_per_pixel);
INSERT INTO pixel (coordinate, x, y, created_at, modified_at)
VALUES (ST_GeomFromText(CONCAT('POINT(', current_lat, ' ', current_lon, ')'), 4326), i, j, NOW(),
NOW());
SET j = j + 1;
END WHILE;
SET current_lon = upper_left_lon; -- Reset current longitude to the initial value
SET i = i + 1;
END WHILE;
COMMIT;
END $$
DELIMITER ;
-- Call the stored procedure to insert the coordinates
CALL InsertPixel();

0 comments on commit 1658305

Please sign in to comment.