diff --git a/backend/streetdrop-notification/build.gradle b/backend/streetdrop-notification/build.gradle index e6f65553..2d4929fd 100644 --- a/backend/streetdrop-notification/build.gradle +++ b/backend/streetdrop-notification/build.gradle @@ -11,6 +11,7 @@ repositories { dependencies { implementation 'com.google.firebase:firebase-admin:9.1.0' + implementation 'org.springframework.boot:spring-boot-starter-data-mongodb' } test { diff --git a/backend/streetdrop-notification/src/main/java/com/depromeet/common/config/MongoAuditingConfig.java b/backend/streetdrop-notification/src/main/java/com/depromeet/common/config/MongoAuditingConfig.java new file mode 100644 index 00000000..e41e549c --- /dev/null +++ b/backend/streetdrop-notification/src/main/java/com/depromeet/common/config/MongoAuditingConfig.java @@ -0,0 +1,9 @@ +package com.depromeet.common.config; + +import org.springframework.context.annotation.Configuration; +import org.springframework.data.mongodb.config.EnableMongoAuditing; + +@Configuration +@EnableMongoAuditing +public class MongoAuditingConfig { +} diff --git a/backend/streetdrop-notification/src/main/java/com/depromeet/domain/Notification.java b/backend/streetdrop-notification/src/main/java/com/depromeet/domain/Notification.java new file mode 100644 index 00000000..a0477e4e --- /dev/null +++ b/backend/streetdrop-notification/src/main/java/com/depromeet/domain/Notification.java @@ -0,0 +1,30 @@ +package com.depromeet.domain; + +import lombok.Builder; +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.annotation.Id; +import org.springframework.data.annotation.LastModifiedDate; +import org.springframework.data.mongodb.core.mapping.Document; + +import java.time.LocalDateTime; +import java.util.Date; + +@Builder +@Document("notification") +public class Notification { + + @Id + private String id; + private String title; + private String content; + private String type; + private User user; + private Target target; + private LocalDateTime viewedTime; + private boolean isDeleted; + @CreatedDate + private Date createdAt; + @LastModifiedDate + private Date modifiedAt; + +} \ No newline at end of file diff --git a/backend/streetdrop-notification/src/main/java/com/depromeet/domain/Target.java b/backend/streetdrop-notification/src/main/java/com/depromeet/domain/Target.java new file mode 100644 index 00000000..b66ba6ad --- /dev/null +++ b/backend/streetdrop-notification/src/main/java/com/depromeet/domain/Target.java @@ -0,0 +1,14 @@ +package com.depromeet.domain; + +import com.depromeet.domain.vo.Channel; +import lombok.Builder; + +@Builder +public class Target { + + private Channel channel; + private int level; + private String page; + private long pageId; + +} diff --git a/backend/streetdrop-notification/src/main/java/com/depromeet/domain/User.java b/backend/streetdrop-notification/src/main/java/com/depromeet/domain/User.java new file mode 100644 index 00000000..28eadbe9 --- /dev/null +++ b/backend/streetdrop-notification/src/main/java/com/depromeet/domain/User.java @@ -0,0 +1,11 @@ +package com.depromeet.domain; + +import lombok.Builder; + +@Builder +public class User { + + private Long userId; + private String deviceToken; + +} diff --git a/backend/streetdrop-notification/src/main/java/com/depromeet/domain/UserDevice.java b/backend/streetdrop-notification/src/main/java/com/depromeet/domain/UserDevice.java new file mode 100644 index 00000000..cd368f57 --- /dev/null +++ b/backend/streetdrop-notification/src/main/java/com/depromeet/domain/UserDevice.java @@ -0,0 +1,27 @@ +package com.depromeet.domain; + +import com.depromeet.domain.vo.OsType; +import lombok.Builder; +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.annotation.Id; +import org.springframework.data.annotation.LastModifiedDate; +import org.springframework.data.mongodb.core.mapping.Document; + +import java.util.Date; + +@Builder +@Document(collection = "user_device") +public class UserDevice { + + @Id + private String id; + private Long userId; + private String deviceToken; + private OsType osType; + private String osVersion; + private boolean isDeleted; + @CreatedDate + private Date createdAt; + @LastModifiedDate + private Date modifiedAt; +} \ No newline at end of file diff --git a/backend/streetdrop-notification/src/main/java/com/depromeet/domain/vo/Channel.java b/backend/streetdrop-notification/src/main/java/com/depromeet/domain/vo/Channel.java new file mode 100644 index 00000000..442d404a --- /dev/null +++ b/backend/streetdrop-notification/src/main/java/com/depromeet/domain/vo/Channel.java @@ -0,0 +1,5 @@ +package com.depromeet.domain.vo; + +public enum Channel { + GENERAL +} diff --git a/backend/streetdrop-notification/src/main/java/com/depromeet/domain/vo/OsType.java b/backend/streetdrop-notification/src/main/java/com/depromeet/domain/vo/OsType.java new file mode 100644 index 00000000..935c93e3 --- /dev/null +++ b/backend/streetdrop-notification/src/main/java/com/depromeet/domain/vo/OsType.java @@ -0,0 +1,6 @@ +package com.depromeet.domain.vo; + + +public enum OsType { + IOS, ANDROID +} diff --git a/backend/streetdrop-notification/src/main/java/com/depromeet/repository/NotificationRepository.java b/backend/streetdrop-notification/src/main/java/com/depromeet/repository/NotificationRepository.java new file mode 100644 index 00000000..61eb8147 --- /dev/null +++ b/backend/streetdrop-notification/src/main/java/com/depromeet/repository/NotificationRepository.java @@ -0,0 +1,7 @@ +package com.depromeet.repository; + +import com.depromeet.domain.Notification; +import org.springframework.data.mongodb.repository.MongoRepository; + +public interface NotificationRepository extends MongoRepository { +} diff --git a/backend/streetdrop-notification/src/main/resources/application.yml b/backend/streetdrop-notification/src/main/resources/application.yml index 8cfc5071..232ee24d 100644 --- a/backend/streetdrop-notification/src/main/resources/application.yml +++ b/backend/streetdrop-notification/src/main/resources/application.yml @@ -1,2 +1,6 @@ +spring: + data: + mongodb: + uri: ${MONGO_DB_URL} fcm: value: streetdrop-notification-fcm.json \ No newline at end of file