Last active
April 29, 2022 08:48
-
-
Save deepu105/028cc8ba6fb25f63f61ae8be3d3df5b3 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* Store gateway application */ | |
application { | |
config { | |
baseName store | |
applicationType gateway | |
packageName com.mycompany.store | |
serviceDiscoveryType eureka | |
authenticationType jwt | |
prodDatabaseType mysql | |
cacheProvider hazelcast | |
buildTool gradle | |
clientFramework angularX | |
useSass true | |
languages [en, zh-cn, ta] | |
websocket spring-websocket | |
testFrameworks [protractor] | |
} | |
entities * | |
} | |
/* Invoice microservice application */ | |
application { | |
config { | |
baseName invoice, | |
applicationType microservice, | |
packageName com.mycompany.store, | |
serviceDiscoveryType eureka, | |
authenticationType jwt, | |
prodDatabaseType mysql, | |
buildTool gradle, | |
serverPort 8081, | |
languages [en, zh-cn, ta] | |
} | |
entities Invoice, Shipment | |
} | |
/* Notification microservice application */ | |
application { | |
config { | |
baseName notification, | |
applicationType microservice, | |
packageName com.mycompany.store, | |
serviceDiscoveryType eureka, | |
authenticationType jwt, | |
databaseType mongodb, | |
cacheProvider no, | |
enableHibernateCache false, | |
buildTool gradle, | |
serverPort 8082, | |
languages [en, zh-cn, ta] | |
} | |
entities Notification | |
} | |
/* Entiteis for store service */ | |
/** Product sold by the Online store */ | |
entity Product { | |
name String required | |
description String | |
price BigDecimal required min(0) | |
size Size required | |
image ImageBlob | |
} | |
enum Size { | |
S, M, L, XL, XXL | |
} | |
entity ProductCategory { | |
name String required | |
description String | |
} | |
entity Customer { | |
firstName String required | |
lastName String required | |
gender Gender required | |
email String required pattern(/^[^@\s]+@[^@\s]+\.[^@\s]+$/) | |
phone String required | |
addressLine1 String required | |
addressLine2 String | |
city String required | |
country String required | |
} | |
enum Gender { | |
MALE, FEMALE, OTHER | |
} | |
entity ProductOrder { | |
placedDate Instant required | |
status OrderStatus required | |
code String required | |
} | |
enum OrderStatus { | |
COMPLETED, PENDING, CANCELLED | |
} | |
entity OrderItem { | |
quantity Integer required min(0) | |
totalPrice BigDecimal required min(0) | |
status OrderItemStatus required | |
} | |
enum OrderItemStatus { | |
AVAILABLE, OUT_OF_STOCK, BACK_ORDER | |
} | |
relationship OneToOne { | |
Customer{user(login) required} to User | |
} | |
relationship ManyToOne { | |
OrderItem{product(name) required} to Product | |
} | |
relationship OneToMany { | |
Customer{order} to ProductOrder{customer(email) required}, | |
ProductOrder{orderItem} to OrderItem{order(code) required}, | |
ProductCategory{product} to Product{productCategory(name)} | |
} | |
/* Entities for Invoice microservice */ | |
entity Invoice { | |
code String required | |
date Instant required | |
details String | |
status InvoiceStatus required | |
paymentMethod PaymentMethod required | |
paymentDate Instant required | |
paymentAmount BigDecimal required | |
productOrderId Long required | |
} | |
enum InvoiceStatus { | |
PAID, ISSUED, CANCELLED | |
} | |
enum PaymentMethod { | |
CREDIT_CARD, CASH_ON_DELIVERY, PAYPAL | |
} | |
entity Shipment { | |
trackingCode String | |
date Instant required | |
details String | |
} | |
relationship OneToMany { | |
Invoice{shipment} to Shipment{invoice(code) required} | |
} | |
microservice Invoice, Shipment with invoice | |
/* Entities for notification microservice */ | |
entity Notification { | |
date Instant required | |
details String | |
sentDate Instant required | |
format NotificationType required | |
userId Long required | |
productId Long required | |
} | |
enum NotificationType { | |
EMAIL, SMS, PARCEL | |
} | |
microservice Notification with notification | |
/* General options */ | |
service * with serviceClass | |
paginate Product, Customer, ProductOrder, Invoice, Shipment, OrderItem with pagination |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment