From 0ca662dea6686a8359cec739035effabb4573760 Mon Sep 17 00:00:00 2001 From: ruibaby Date: Tue, 12 Mar 2019 22:24:59 +0800 Subject: [PATCH] create entity for the better halo --- .../ryanc/halo/model/entity/Attachment.java | 91 +++++++++++++++++++ .../cc/ryanc/halo/model/entity/Gallery.java | 80 ++++++++++++++++ .../java/cc/ryanc/halo/model/entity/Link.java | 73 +++++++++++++++ .../java/cc/ryanc/halo/model/entity/Menu.java | 73 +++++++++++++++ .../cc/ryanc/halo/model/entity/PostTag.java | 57 ++++++++++++ .../java/cc/ryanc/halo/model/entity/Tag.java | 55 +++++++++++ .../java/cc/ryanc/halo/model/entity/User.java | 79 ++++++++++++++++ .../halo/model/entity/enums/AttachOrigin.java | 20 ++++ .../halo/model/entity/enums/ValueEnum.java | 41 +++++++++ 9 files changed, 569 insertions(+) create mode 100644 src/main/java/cc/ryanc/halo/model/entity/Attachment.java create mode 100644 src/main/java/cc/ryanc/halo/model/entity/Gallery.java create mode 100644 src/main/java/cc/ryanc/halo/model/entity/Link.java create mode 100644 src/main/java/cc/ryanc/halo/model/entity/Menu.java create mode 100644 src/main/java/cc/ryanc/halo/model/entity/PostTag.java create mode 100644 src/main/java/cc/ryanc/halo/model/entity/Tag.java create mode 100644 src/main/java/cc/ryanc/halo/model/entity/User.java create mode 100644 src/main/java/cc/ryanc/halo/model/entity/enums/AttachOrigin.java create mode 100644 src/main/java/cc/ryanc/halo/model/entity/enums/ValueEnum.java diff --git a/src/main/java/cc/ryanc/halo/model/entity/Attachment.java b/src/main/java/cc/ryanc/halo/model/entity/Attachment.java new file mode 100644 index 000000000..4c61e866f --- /dev/null +++ b/src/main/java/cc/ryanc/halo/model/entity/Attachment.java @@ -0,0 +1,91 @@ +package cc.ryanc.halo.model.entity; + +import lombok.Data; + +import javax.persistence.*; +import java.util.Date; + +/** + * Attachment entity + * + * @author : RYAN0UP + * @date : 2019-03-12 + */ +@Data +@Entity +@Table(name = "attachments") +public class Attachment { + + @Id + @GeneratedValue + @Column(name = "id") + private Integer id; + + /** + * 附件名称 + */ + @Column(name = "name",columnDefinition = "varchar(255) not null") + private String name; + + /** + * 附件路径 + */ + @Column(name = "path",columnDefinition = "varchar(1023) default ''") + private String path; + + /** + * 缩略图路径 + */ + @Column(name = "thumb_path",columnDefinition = "varchar(1023) default ''") + private String thumbPath; + + /** + * 附件类型 + */ + @Column(name = "media_type",columnDefinition = "varchar(50) default ''") + private String mediaType; + + /** + * 附件后缀 + */ + @Column(name = "suffix",columnDefinition = "varchar(50) default ''") + private String suffix; + + /** + * 附件尺寸 + */ + @Column(name = "dimension",columnDefinition = "varchar(50) default ''") + private String dimension; + + /** + * 附件大小 + */ + @Column(name = "size",columnDefinition = "varchar(50) default ''") + private String size; + + /** + * 附件上传类型 + */ + @Column(name = "type",columnDefinition = "int default 0") + private Integer type; + + /** + * 创建时间戳 + */ + @Column(name = "create_time", columnDefinition = "timestamp default CURRENT_TIMESTAMP") + @Temporal(TemporalType.TIMESTAMP) + private Date createTime; + + /** + * 更新时间戳 + */ + @Column(name = "update_time", columnDefinition = "timestamp default CURRENT_TIMESTAMP") + @Temporal(TemporalType.TIMESTAMP) + private Date updateTime; + + /** + * 是否已删除 + */ + @Column(name = "deleted", columnDefinition = "TINYINT default 0") + private Boolean deleted; +} diff --git a/src/main/java/cc/ryanc/halo/model/entity/Gallery.java b/src/main/java/cc/ryanc/halo/model/entity/Gallery.java new file mode 100644 index 000000000..5c175a378 --- /dev/null +++ b/src/main/java/cc/ryanc/halo/model/entity/Gallery.java @@ -0,0 +1,80 @@ +package cc.ryanc.halo.model.entity; + +import lombok.Data; + +import javax.persistence.*; +import java.util.Date; + +/** + * Gallery entity + * + * @author : RYAN0UP + * @date : 2019-03-12 + */ +@Data +@Entity +@Table(name = "galleries") +public class Gallery { + + @Id + @GeneratedValue + @Column(name = "id") + private Integer id; + + /** + * 图片名称 + */ + @Column(name = "name",columnDefinition = "varchar(255) not null") + private String name; + + /** + * 描述 + */ + @Column(name = "description",columnDefinition = "varchar(255) default ''") + private String description; + + /** + * 拍摄时间/创作时间 + */ + @Column(name = "take_time",columnDefinition = "timestamp not null") + @Temporal(TemporalType.TIMESTAMP) + private Date takeTime; + + /** + * 拍摄地点 + */ + @Column(name = "location",columnDefinition = "varchar(255) default ''") + private String location; + + /** + * 缩略图 + */ + @Column(name = "thumbnail",columnDefinition = "varchar(1023) default ''") + private String thumbnail; + + /** + * 图片地址 + */ + @Column(name = "url",columnDefinition = "varchar(1023) not null") + private String url; + + /** + * 创建时间戳 + */ + @Column(name = "create_time", columnDefinition = "timestamp default CURRENT_TIMESTAMP") + @Temporal(TemporalType.TIMESTAMP) + private Date createTime; + + /** + * 更新时间戳 + */ + @Column(name = "update_time", columnDefinition = "timestamp default CURRENT_TIMESTAMP") + @Temporal(TemporalType.TIMESTAMP) + private Date updateTime; + + /** + * 是否已删除 + */ + @Column(name = "deleted", columnDefinition = "TINYINT default 0") + private Boolean deleted; +} diff --git a/src/main/java/cc/ryanc/halo/model/entity/Link.java b/src/main/java/cc/ryanc/halo/model/entity/Link.java new file mode 100644 index 000000000..a134005bc --- /dev/null +++ b/src/main/java/cc/ryanc/halo/model/entity/Link.java @@ -0,0 +1,73 @@ +package cc.ryanc.halo.model.entity; + +import lombok.Data; + +import javax.persistence.*; +import java.util.Date; + +/** + * Link entity + * + * @author : RYAN0UP + * @date : 2019-03-12 + */ +@Data +@Entity +@Table(name = "links") +public class Link { + + @Id + @GeneratedValue + @Column(name = "id") + private Integer id; + + /** + * 友链名称 + */ + @Column(name = "name",columnDefinition = "varchar(255) not null") + private String name; + + /** + * 友链地址 + */ + @Column(name = "url",columnDefinition = "varchar(255) not null") + private String url; + + /** + * 友链 Logo + */ + @Column(name = "logo",columnDefinition = "varchar(255) default ''") + private String logo; + + /** + * 描述 + */ + @Column(name = "description",columnDefinition = "varchar(255) default ''") + private String description; + + /** + * 分组 + */ + @Column(name = "group",columnDefinition = "varchar(255) default ''") + private String group; + + /** + * 创建时间戳 + */ + @Column(name = "create_time", columnDefinition = "timestamp default CURRENT_TIMESTAMP") + @Temporal(TemporalType.TIMESTAMP) + private Date createTime; + + /** + * 更新时间戳 + */ + @Column(name = "update_time", columnDefinition = "timestamp default CURRENT_TIMESTAMP") + @Temporal(TemporalType.TIMESTAMP) + private Date updateTime; + + /** + * 是否已删除 + */ + @Column(name = "deleted", columnDefinition = "TINYINT default 0") + private Boolean deleted; +} diff --git a/src/main/java/cc/ryanc/halo/model/entity/Menu.java b/src/main/java/cc/ryanc/halo/model/entity/Menu.java new file mode 100644 index 000000000..1ffbd3952 --- /dev/null +++ b/src/main/java/cc/ryanc/halo/model/entity/Menu.java @@ -0,0 +1,73 @@ +package cc.ryanc.halo.model.entity; + +import lombok.Data; + +import javax.persistence.*; +import java.util.Date; + +/** + * Menu entity + * + * @author : RYAN0UP + * @date : 2019-03-12 + */ +@Data +@Entity +@Table(name = "menus") +public class Menu { + + @Id + @GeneratedValue + @Column(name = "id") + private Integer id; + + /** + * 菜单名称 + */ + @Column(name = "name",columnDefinition = "varchar(255) not null") + private String name; + + /** + * 菜单地址 + */ + @Column(name = "url",columnDefinition = "varchar(255) not null") + private String url; + + /** + * 排序 + */ + @Column(name = "sort",columnDefinition = "int default 0") + private Integer sort; + + /** + * 窗口打开方式 + */ + @Column(name = "target",columnDefinition = "varchar(20) default '_self'") + private String target; + + /** + * 菜单图标 + */ + @Column(name = "icon",columnDefinition = "varchar(50) default ''") + private String icon; + + /** + * 创建时间戳 + */ + @Column(name = "create_time", columnDefinition = "timestamp default CURRENT_TIMESTAMP") + @Temporal(TemporalType.TIMESTAMP) + private Date createTime; + + /** + * 更新时间戳 + */ + @Column(name = "update_time", columnDefinition = "timestamp default CURRENT_TIMESTAMP") + @Temporal(TemporalType.TIMESTAMP) + private Date updateTime; + + /** + * 是否已删除 + */ + @Column(name = "deleted", columnDefinition = "TINYINT default 0") + private Boolean deleted; +} diff --git a/src/main/java/cc/ryanc/halo/model/entity/PostTag.java b/src/main/java/cc/ryanc/halo/model/entity/PostTag.java new file mode 100644 index 000000000..ee61be748 --- /dev/null +++ b/src/main/java/cc/ryanc/halo/model/entity/PostTag.java @@ -0,0 +1,57 @@ +package cc.ryanc.halo.model.entity; + +import lombok.Data; +import org.hibernate.annotations.SQLDelete; +import org.hibernate.annotations.Where; + +import javax.persistence.*; +import java.util.Date; + +/** + * @author : RYAN0UP + * @date : 2019-03-12 + */ +@Data +@Entity +@Table(name = "post_tags") +@SQLDelete(sql = "update post_tags set deleted = true where id = ?") +@Where(clause = "deleted = false") +public class PostTag { + + @Id + @GeneratedValue + @Column(name = "id") + private Integer id; + + /** + * 文章编号 + */ + @Column(name = "post_id", columnDefinition = "int not null") + private Integer postId; + + /** + * 标签编号 + */ + @Column(name = "tag_id", columnDefinition = "int not null") + private Integer tagId; + + /** + * 创建时间戳 + */ + @Column(name = "create_time", columnDefinition = "timestamp default CURRENT_TIMESTAMP") + @Temporal(TemporalType.TIMESTAMP) + private Date createTime; + + /** + * 更新时间戳 + */ + @Column(name = "update_time", columnDefinition = "timestamp default CURRENT_TIMESTAMP") + @Temporal(TemporalType.TIMESTAMP) + private Date updateTime; + + /** + * 是否已删除 + */ + @Column(name = "deleted", columnDefinition = "TINYINT default 0") + private Boolean deleted; +} diff --git a/src/main/java/cc/ryanc/halo/model/entity/Tag.java b/src/main/java/cc/ryanc/halo/model/entity/Tag.java new file mode 100644 index 000000000..15bf7731a --- /dev/null +++ b/src/main/java/cc/ryanc/halo/model/entity/Tag.java @@ -0,0 +1,55 @@ +package cc.ryanc.halo.model.entity; + +import lombok.Data; + +import javax.persistence.*; +import java.util.Date; + +/** + * Tag entity + * + * @author : RYAN0UP + * @date : 2019-03-12 + */ +@Data +@Entity +@Table(name = "menus") +public class Tag { + + @Id + @GeneratedValue + @Column(name = "id") + private Integer id; + + /** + * 标签名 + */ + @Column(name = "name",columnDefinition = "varchar(255) not null") + private String name; + + /** + * 缩略名 + */ + @Column(name = "snake_name",columnDefinition = "varchar(255) not null") + private String snakeName; + + /** + * 创建时间戳 + */ + @Column(name = "create_time", columnDefinition = "timestamp default CURRENT_TIMESTAMP") + @Temporal(TemporalType.TIMESTAMP) + private Date createTime; + + /** + * 更新时间戳 + */ + @Column(name = "update_time", columnDefinition = "timestamp default CURRENT_TIMESTAMP") + @Temporal(TemporalType.TIMESTAMP) + private Date updateTime; + + /** + * 是否已删除 + */ + @Column(name = "deleted", columnDefinition = "TINYINT default 0") + private Boolean deleted; +} diff --git a/src/main/java/cc/ryanc/halo/model/entity/User.java b/src/main/java/cc/ryanc/halo/model/entity/User.java new file mode 100644 index 000000000..fb71f4660 --- /dev/null +++ b/src/main/java/cc/ryanc/halo/model/entity/User.java @@ -0,0 +1,79 @@ +package cc.ryanc.halo.model.entity; + +import lombok.Data; + +import javax.persistence.*; +import java.util.Date; + +/** + * User entity + * + * @author : RYAN0UP + * @date : 2019-03-12 + */ +@Data +@Entity +@Table(name = "users") +public class User { + + @Id + @GeneratedValue + @Column(name = "id") + private Integer id; + + /** + * 用户名 + */ + @Column(name = "username",columnDefinition = "varchar(50) not null") + private String username; + + /** + * 昵称 + */ + @Column(name = "nickname",columnDefinition = "varchar(255) not null") + private String nickname; + + /** + * 密码 + */ + @Column(name = "password",columnDefinition = "varchar(255) not null") + private String password; + + /** + * 邮箱 + */ + @Column(name = "email",columnDefinition = "varchar(127) default ''") + private String email; + + /** + * 头像 + */ + @Column(name = "avatar",columnDefinition = "varchar(1023) default ''") + private String avatar; + + /** + * 描述 + */ + @Column(name = "description",columnDefinition = "varchar(1023) default ''") + private String description; + + /** + * 创建时间戳 + */ + @Column(name = "create_time", columnDefinition = "timestamp default CURRENT_TIMESTAMP") + @Temporal(TemporalType.TIMESTAMP) + private Date createTime; + + /** + * 更新时间戳 + */ + @Column(name = "update_time", columnDefinition = "timestamp default CURRENT_TIMESTAMP") + @Temporal(TemporalType.TIMESTAMP) + private Date updateTime; + + /** + * 是否已删除 + */ + @Column(name = "deleted", columnDefinition = "TINYINT default 0") + private Boolean deleted; +} diff --git a/src/main/java/cc/ryanc/halo/model/entity/enums/AttachOrigin.java b/src/main/java/cc/ryanc/halo/model/entity/enums/AttachOrigin.java new file mode 100644 index 000000000..f2f8d4baf --- /dev/null +++ b/src/main/java/cc/ryanc/halo/model/entity/enums/AttachOrigin.java @@ -0,0 +1,20 @@ +package cc.ryanc.halo.model.entity.enums; + +/** + * @author : RYAN0UP + * @date : 2019-03-12 + */ +public enum AttachOrigin implements ValueEnum {; + + private Integer value; + + /** + * Get enum value. + * + * @return enum value + */ + @Override + public Integer getValue() { + return null; + } +} diff --git a/src/main/java/cc/ryanc/halo/model/entity/enums/ValueEnum.java b/src/main/java/cc/ryanc/halo/model/entity/enums/ValueEnum.java new file mode 100644 index 000000000..26386c208 --- /dev/null +++ b/src/main/java/cc/ryanc/halo/model/entity/enums/ValueEnum.java @@ -0,0 +1,41 @@ +package cc.ryanc.halo.model.entity.enums; + +import org.springframework.util.Assert; + +import java.util.stream.Stream; + +/** + * Interface for value enum. + * + * @param value type + * @author johnniang + */ +public interface ValueEnum { + + /** + * Convert value to corresponding enum. + * + * @param enumType enum type + * @param value database value + * @param value generic + * @param enum generic + * @return corresponding enum + */ + static > E valueToEnum(Class enumType, V value) { + Assert.notNull(enumType, "enum type must not be null"); + Assert.notNull(value, "value must not be null"); + Assert.isTrue(enumType.isEnum(), "type must be an enum type"); + + return Stream.of(enumType.getEnumConstants()) + .filter(item -> item.getValue().equals(value)) + .findFirst() + .orElseThrow(() -> new IllegalArgumentException("unknown database value: " + value)); + } + + /** + * Get enum value. + * + * @return enum value + */ + T getValue(); +}