Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
O
order-management-backend
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Ascend
order-management-backend
Commits
7f73aef5
Commit
7f73aef5
authored
May 12, 2021
by
Alex Segers
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[AFP-129]
🌱
Create 'Order' model seeder (
@asegers
)
parent
af28a51a
Pipeline
#1708
failed with stage
in 38 seconds
Changes
1
Pipelines
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
107 additions
and
0 deletions
+107
-0
OrderSeeder.java
...main/java/com/afp/ordermanagement/seeder/OrderSeeder.java
+107
-0
No files found.
src/main/java/com/afp/ordermanagement/seeder/OrderSeeder.java
0 → 100644
View file @
7f73aef5
package
com
.
afp
.
ordermanagement
.
seeder
;
import
com.afp.ordermanagement.model.CustomerAddress
;
import
com.afp.ordermanagement.model.Item
;
import
com.afp.ordermanagement.model.Order
;
import
com.afp.ordermanagement.model.OrderStatus
;
import
com.afp.ordermanagement.repository.OrderRepository
;
import
com.github.javafaker.Faker
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.context.event.ContextRefreshedEvent
;
import
org.springframework.context.event.EventListener
;
import
org.springframework.core.env.Environment
;
import
org.springframework.core.env.Profiles
;
import
org.springframework.stereotype.Component
;
import
java.util.List
;
import
java.util.stream.Collectors
;
import
java.util.stream.IntStream
;
import
java.util.stream.Stream
;
@Component
public
class
OrderSeeder
{
// Toggle
static
private
final
boolean
RUN_SEEDER
=
false
;
// FIXME: <- Set to `true` to run seeder on app start-up (in development)
@Autowired
OrderRepository
orderRepository
;
@Autowired
Faker
faker
;
@Autowired
Environment
env
;
// Verify that the current environment is NOT production or test
boolean
isEnvDevelopment
()
{
return
env
.
acceptsProfiles
(
Profiles
.
of
(
"default"
,
"dev"
,
"development"
,
"local"
));
}
static
private
Stream
<
String
>
CUSTOMER_USERNAMES
=
Stream
.
of
(
"nrobinson"
,
"rsara"
,
"agannamaneni"
,
"rsayannagari"
,
// Superiors
"ccottier"
,
"kmuldoon"
,
"nmoosapet"
,
"spangburn"
,
"xlu"
,
// ECom Team
"asegers"
,
"dbhuller"
,
"earndt"
,
"kkaminski"
,
"svalencia"
,
"vivaddadhi"
// OMan Team
);
// Create order seeds as soon as app is up and running
@EventListener
public
void
seedOrders
(
ContextRefreshedEvent
event
)
{
// Only generate seeds if in development environment
if
(
isEnvDevelopment
()
&&
RUN_SEEDER
)
{
orderRepository
.
deleteAll
()
.
subscribe
();
CUSTOMER_USERNAMES
.
forEach
(
username
->
{
String
email
=
String
.
format
(
"%s@nisum.com"
,
username
);
orderRepository
.
insert
(
generateOrder
(
email
))
.
subscribe
();
});
}
}
private
Order
generateOrder
(
String
email
){
OrderStatus
randStatus
=
OrderStatus
.
values
()[
faker
.
number
().
numberBetween
(
0
,
2
)];
// exclusive range
Order
order
=
new
Order
(
randStatus
);
order
.
setOrderTrackingCode
(
faker
.
number
().
digits
(
27
));
long
unixTime
=
System
.
currentTimeMillis
();
order
.
setOrderCreatedAt
(
unixTime
);
order
.
setOrderUpdatedAt
(
unixTime
);
order
.
setCustomerId
(
faker
.
number
().
digits
(
12
));
order
.
setCustomerEmailAddress
(
email
);
// Order items
int
randOrderCount
=
faker
.
number
().
numberBetween
(
1
,
10
);
List
<
Item
>
orderItems
=
IntStream
.
range
(
0
,
randOrderCount
)
.
mapToObj
(
n
->
generateItem
())
.
collect
(
Collectors
.
toList
());
order
.
setOrderItems
(
orderItems
);
// Order address
order
.
setCustomerAddress
(
generateOrderAddress
());
return
order
;
}
private
Item
generateItem
(){
Item
item
=
new
Item
();
item
.
setItemId
(
faker
.
number
().
digits
(
12
));
item
.
setItemName
(
faker
.
commerce
().
productName
());
item
.
setItemSku
(
faker
.
random
().
hex
(
12
));
item
.
setItemQuantity
(
faker
.
number
().
numberBetween
(
1
,
30
));
item
.
setItemPrice
(
faker
.
number
().
randomDouble
(
2
,
5
,
1000
));
return
item
;
}
private
CustomerAddress
generateOrderAddress
(){
CustomerAddress
address
=
new
CustomerAddress
();
address
.
setStreet
(
faker
.
address
().
streetAddress
());
address
.
setCity
(
faker
.
address
().
city
());
String
stateAbbr
=
faker
.
address
().
stateAbbr
();
address
.
setState
(
stateAbbr
);
address
.
setZip
(
faker
.
address
().
zipCode
());
return
address
;
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment