Bulletin Board System Example
TODO
This document is under construction. Full implementation examples will be added.
Overview
A step-by-step guide to implementing a BBS (Bulletin Board System) using ElastiCORE.
Domain Model
Entity Definition
entity:
BaseEntity:
meta: entity @abstract
fields:
createDate: datetime @search(between) @updatable(false) @jpa:org.springframework.data.annotation.CreatedDate
createdBy: string(20) @updatable(false) @jpa:org.springframework.data.annotation.CreatedBy
AuditEntity:
meta: entity @abstract @extend(BaseEntity)
fields:
lastModifiedBy: string(20) @jpa:org.springframework.data.annotation.LastModifiedBy
lastModifiedDate: datetime @jpa:org.springframework.data.annotation.LastModifiedDate
Board:
meta: entity @expose(50) @extend(AuditEntity)
fields:
bid: long @id @sequence -- Board ID
name: string(100)! @search(like) -- Board name
boardType: BoardType -- Board type
articles: List<Article> @dtype(List<ArticleDTO>) @OneToMany(mappedBy="board")
Article:
meta: entity @expose(50) @extend(AuditEntity)
fields:
aid: string @id @genid -- Article ID
title: string(200)! @search(like) -- Title
content: text -- Content body
board: Board @ManyToOne -- Parent board
Enumeration Definition
enumeration:
BoardType:
meta: enum @db(code) @json(code)
fields:
code: string(2) @length(3) -- Type code
name: string(50) -- Name
enum:
PUBLIC: PB,Public
PRIVATE: PV,Private
NOTICE: NT,Notice
DTO Definition
dto:
ArticleDTO:
meta: dto @template(Article)
fields:
boardName: string @ref(board.name) -- Board name
boardType: BoardType @ref(board.boardType) -- Board type
Code Generation and Execution
# 1. Generate code
./gradlew elcore
# 2. Build
./gradlew build
# 3. Run
./gradlew bootRun