Skip to content

Commit 2fdda54

Browse files
committed
Merge branch 'develop'
2 parents 791213c + f34fb50 commit 2fdda54

File tree

17 files changed

+273
-112
lines changed

17 files changed

+273
-112
lines changed

README.md

+6
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,12 @@ You can use prebuilt images generated by our CI workflow.
6666
docker-compose -f docker-compose.yml --compatibility up -d
6767
```
6868
69+
- To Stop and Cleanup crAPI
70+
71+
```
72+
docker-compose -f docker-compose.yml --compatibility down –volumes
73+
```
74+
6975
Visit [http://localhost:8888](http://localhost:8888)
7076
7177
**Note**: All emails are sent to mailhog service by default and can be checked on

deploy/docker/docker-compose.yml

+3-3
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ services:
100100
resources:
101101
limits:
102102
cpus: '0.3'
103-
memory: 128M
103+
memory: 192M
104104

105105
crapi-workshop:
106106
container_name: crapi-workshop
@@ -194,8 +194,8 @@ services:
194194
deploy:
195195
resources:
196196
limits:
197-
cpus: '0.3'
198-
memory: 128M
197+
cpus: '0.5'
198+
memory: 256M
199199

200200
mongodb:
201201
container_name: mongodb

deploy/vagrant/crapi.service

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ Type=oneshot
88
RemainAfterExit=true
99
WorkingDirectory=/opt/crapi
1010
ExecStart=/bin/bash -c "/usr/local/bin/docker-compose up -d --remove-orphans"
11-
ExecStop=/bin/bash -c "/usr/local/bin/docker-compose down"
11+
ExecStop=/bin/bash -c "/usr/local/bin/docker-compose down –volumes"
1212

1313
[Install]
1414
WantedBy=multi-user.target

openapi-spec/openapi-spec.json

+4-4
Original file line numberDiff line numberDiff line change
@@ -1125,7 +1125,7 @@
11251125
"schema" : {
11261126
"type" : "string",
11271127
"format" : "uuid",
1128-
"example" : "0be319f0-f0dd-44aa-af0b-af927f3a383f"
1128+
"example" : "1929186d-8b67-4163-a208-de52a41f7301"
11291129
}
11301130
} ]
11311131
},
@@ -2730,8 +2730,8 @@
27302730
}
27312731
},
27322732
"example" : {
2733-
"id" : 23,
2734-
"vin" : "0FOPP90TFEE927859",
2733+
"id" : 3,
2734+
"vin" : "1G1OP124017231334",
27352735
"owner" : {
27362736
"email" : "[email protected]",
27372737
"number" : "4156895423"
@@ -3096,7 +3096,7 @@
30963096
"example" : {
30973097
"nickname" : "Hacker",
30983098
"email" : "[email protected]",
3099-
"vehicleid" : "abac4018-5a38-466c-ab7f-361908afeab6",
3099+
"vehicleid" : "4bae9968-ec7f-4de3-a3a0-ba1b2ab5e5e5",
31003100
"profile_pic_url" : "",
31013101
"created_at" : "2021-09-16T01:46:32.432Z"
31023102
}

services/identity/src/main/java/com/crapi/config/InitialDataConfig.java

+103-19
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,23 @@
1515
package com.crapi.config;
1616

1717
import com.crapi.constant.TestUsers;
18+
import com.crapi.entity.ProfileVideo;
1819
import com.crapi.entity.User;
1920
import com.crapi.entity.UserDetails;
21+
import com.crapi.entity.VehicleCompany;
2022
import com.crapi.entity.VehicleDetails;
23+
import com.crapi.entity.VehicleLocation;
24+
import com.crapi.entity.VehicleModel;
25+
import com.crapi.enums.EFuelType;
2126
import com.crapi.enums.ERole;
2227
import com.crapi.model.SeedUser;
2328
import com.crapi.repository.*;
2429
import com.crapi.service.VehicleService;
30+
import com.crapi.utils.GenerateVIN;
2531
import com.crapi.utils.UserData;
26-
import com.crapi.utils.VehicleLocationData;
27-
import com.crapi.utils.VehicleModelData;
2832
import java.util.ArrayList;
33+
import java.util.List;
34+
import java.util.Random;
2935
import org.slf4j.Logger;
3036
import org.slf4j.LoggerFactory;
3137
import org.springframework.beans.factory.annotation.Autowired;
@@ -40,8 +46,16 @@ public class InitialDataConfig {
4046

4147
private static final Logger logger = LoggerFactory.getLogger(InitialDataConfig.class);
4248

49+
private static long seed = 0;
50+
51+
private Random random;
52+
53+
GenerateVIN generateVIN;
54+
4355
@Autowired VehicleLocationRepository vehicleLocationRepository;
4456

57+
@Autowired VehicleCompanyRepository vehicleCompanyRepository;
58+
4559
@Autowired VehicleModelRepository vehicleModelRepository;
4660

4761
@Autowired VehicleDetailsRepository vehicleDetailsRepository;
@@ -56,30 +70,57 @@ public class InitialDataConfig {
5670

5771
@Autowired PasswordEncoder encoder;
5872

59-
public void addLocation() {
60-
if (CollectionUtils.isEmpty(vehicleLocationRepository.findAll())) {
61-
VehicleLocationData vehicleLocationData = new VehicleLocationData();
62-
vehicleLocationRepository.saveAll(vehicleLocationData.getVehicleLocationData());
63-
}
73+
public void createModels() {
74+
VehicleCompany vehicleCompany = new VehicleCompany("Hyundai");
75+
VehicleModel vehicleModel =
76+
new VehicleModel("Creta", EFuelType.DIESEL, vehicleCompany, "images/hyundai-creta.jpg");
77+
vehicleModelRepository.save(vehicleModel);
78+
79+
vehicleCompany = new VehicleCompany("Lamborghini");
80+
vehicleModel =
81+
new VehicleModel(
82+
"Aventador", EFuelType.PETROL, vehicleCompany, "images/lamborghini-aventador.jpg");
83+
vehicleModel = vehicleModelRepository.save(vehicleModel);
84+
85+
vehicleCompany = new VehicleCompany("Mercedes-Benz");
86+
vehicleModel =
87+
new VehicleModel(
88+
"GLA Class", EFuelType.DIESEL, vehicleCompany, "images/mercedesbenz-gla.jpg");
89+
vehicleModelRepository.save(vehicleModel);
90+
91+
vehicleCompany = new VehicleCompany("BMW");
92+
vehicleModel =
93+
new VehicleModel("5 Series", EFuelType.PETROL, vehicleCompany, "images/bmw-5.jpg");
94+
vehicleModelRepository.save(vehicleModel);
95+
96+
vehicleCompany = new VehicleCompany("Audi");
97+
vehicleModel = new VehicleModel("RS7", EFuelType.DIESEL, vehicleCompany, "images/audi-rs7.jpg");
98+
vehicleModelRepository.save(vehicleModel);
99+
100+
vehicleCompany = new VehicleCompany("MG Motor");
101+
vehicleModel =
102+
new VehicleModel(
103+
"Hector Plus", EFuelType.PETROL, vehicleCompany, "images/mgmotor-hectorplus.jpg");
104+
vehicleModel = vehicleModelRepository.save(vehicleModel);
64105
}
65106

66107
public void addVehicleModel() {
67108
if (CollectionUtils.isEmpty(vehicleModelRepository.findAll())) {
68-
VehicleModelData vehicleModelData = new VehicleModelData();
69-
vehicleModelRepository.saveAll(vehicleModelData.getModelList());
109+
createModels();
70110
}
71111
}
72112

73113
@EventListener
74114
public void setup(ApplicationReadyEvent event) {
75-
76-
addLocation();
115+
random = new Random();
116+
random.setSeed(seed);
117+
generateVIN = new GenerateVIN();
77118
addVehicleModel();
78119
addUser();
79120
}
80121

81122
public void addUser() {
82-
if (CollectionUtils.isEmpty(userDetailsRepository.findAll())) {
123+
if (CollectionUtils.isEmpty(userDetailsRepository.findAll()) || false) {
83124
ArrayList<SeedUser> userDetailList = new TestUsers().getUsers();
84125
for (SeedUser userDetails : userDetailList) {
85126
boolean user =
@@ -88,32 +129,75 @@ public void addUser() {
88129
userDetails.getEmail(),
89130
userDetails.getPassword(),
90131
userDetails.getNumber(),
91-
userDetails.getRole());
132+
userDetails.getRole(),
133+
userDetails.getCarid(),
134+
userDetails.getVin(),
135+
userDetails.getPincode(),
136+
userDetails.getLatitude(),
137+
userDetails.getLongitude());
92138
if (!user) {
93139
logger.error("Fail to create predefined users");
94140
}
95141
}
96142
}
97143
}
98144

145+
public VehicleDetails createVehicle(
146+
String carId, String vin, String pincode, String latitude, String longitude) {
147+
List<VehicleModel> modelList = null;
148+
modelList = vehicleModelRepository.findAll();
149+
if (modelList != null) {
150+
VehicleLocation vehicleLocation = new VehicleLocation(latitude, longitude);
151+
VehicleDetails vehicleDetails = new VehicleDetails(carId, pincode, vin);
152+
VehicleModel vehicleModel = modelList.get(random.nextInt(modelList.size()));
153+
vehicleModel = vehicleModelRepository.findById(vehicleModel.getId()).get();
154+
vehicleDetails.setVehicleLocation(vehicleLocation);
155+
vehicleDetails = vehicleDetailsRepository.save(vehicleDetails);
156+
vehicleDetails.setModel(vehicleModel);
157+
vehicleDetails = vehicleDetailsRepository.save(vehicleDetails);
158+
logger.debug("Created vehicle for {} successfully", vehicleDetails);
159+
return vehicleDetails;
160+
}
161+
return null;
162+
}
163+
99164
public boolean predefineUserData(
100-
String name, String email, String password, String number, ERole role) {
165+
String name,
166+
String email,
167+
String password,
168+
String number,
169+
ERole role,
170+
String carId,
171+
String vin,
172+
String pincode,
173+
String latitude,
174+
String longitude) {
101175
UserData userData = new UserData();
102176
VehicleDetails vehicleDetails = null;
103177
UserDetails userDetails = null;
104178
try {
105179
User user = new User(email, number, encoder.encode(password), role);
106180
user = userRepository.save(user);
181+
user = userRepository.findById(user.getId()).get();
107182
userDetails = userData.getPredefineUser(name, user);
108-
userDetailsRepository.save(userDetails);
109-
vehicleDetails = vehicleService.createVehicle();
183+
userDetails = userDetailsRepository.save(userDetails);
184+
vehicleDetails = createVehicle(carId, vin, pincode, latitude, longitude);
110185
if (vehicleDetails != null) {
111186
vehicleDetails.setOwner(user);
112187
vehicleDetailsRepository.save(vehicleDetails);
113-
return true;
188+
} else {
189+
logger.error("Fail to create vehicle for user {}", email);
190+
return false;
114191
}
115-
logger.error("Fail to create vehicle for user {}", email);
116-
return false;
192+
// generate random bytes
193+
byte[] videoBytes = new byte[10];
194+
random.nextBytes(videoBytes);
195+
String videoName = userDetails.getName().replace(" ", "_") + "_video";
196+
String conversionParam = "-v codec h264";
197+
ProfileVideo profileVideo = new ProfileVideo(videoName, videoBytes, user);
198+
profileVideo.setConversion_params(conversionParam);
199+
profileVideoRepository.save(profileVideo);
200+
return true;
117201
} catch (Exception e) {
118202
logger.error("Fail to create user {}, Exception :: {}", email, e);
119203
return false;

services/identity/src/main/java/com/crapi/constant/TestUsers.java

+53-5
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,63 @@ public class TestUsers {
2525
public TestUsers() {
2626
users.add(
2727
new SeedUser(
28-
"Adam", "[email protected]", "9876895423", "adam007!123", ERole.ROLE_PREDEFINE));
28+
"Adam",
29+
30+
"9876895423",
31+
"adam007!123",
32+
ERole.ROLE_PREDEFINE,
33+
"f89b5f21-7829-45cb-a650-299a61090378",
34+
"7ECOX34KJTV359804",
35+
"123456",
36+
"32.778889",
37+
"-91.919243"));
2938
users.add(
3039
new SeedUser(
31-
"Pogba", "[email protected]", "9876570006", "pogba006!123", ERole.ROLE_PREDEFINE));
40+
"Pogba",
41+
42+
"9876570006",
43+
"pogba006!123",
44+
ERole.ROLE_PREDEFINE,
45+
"cd515c12-0fc1-48ae-8b61-9230b70a845b",
46+
"8VAUI03PRUQ686911",
47+
"123456",
48+
"31.284788",
49+
"-92.471176"));
3250
users.add(
3351
new SeedUser(
34-
"Robot", "[email protected]", "9876570001", "robot001!123", ERole.ROLE_PREDEFINE));
35-
users.add(new SeedUser("Test", "[email protected]", "9876540001", "Test!123", ERole.ROLE_USER));
52+
"Robot",
53+
54+
"9876570001",
55+
"robot001!123",
56+
ERole.ROLE_PREDEFINE,
57+
"4bae9968-ec7f-4de3-a3a0-ba1b2ab5e5e5",
58+
"0NKPZ09IHOP508673",
59+
"123456",
60+
"37.746880",
61+
"-84.301460"));
3662
users.add(
37-
new SeedUser("Admin", "[email protected]", "9010203040", "Admin!123", ERole.ROLE_ADMIN));
63+
new SeedUser(
64+
"Test",
65+
66+
"9876540001",
67+
"Test!123",
68+
ERole.ROLE_USER,
69+
"1929186d-8b67-4163-a208-de52a41f7301",
70+
"8IGEF39BZUJ159285",
71+
"123456",
72+
"38.206348",
73+
"-84.270172"));
74+
users.add(
75+
new SeedUser(
76+
"Admin",
77+
78+
"9010203040",
79+
"Admin!123",
80+
ERole.ROLE_ADMIN,
81+
"f5c506f5-3af2-4120-926c-64ad8b10ddc2",
82+
"6NBBY70FWUM324316",
83+
"123456",
84+
"37.406769",
85+
"-94.705528"));
3886
}
3987
}

services/identity/src/main/java/com/crapi/entity/VehicleDetails.java

+11-2
Original file line numberDiff line numberDiff line change
@@ -33,15 +33,15 @@ public class VehicleDetails {
3333
private long id;
3434

3535
@Column(name = "uuid", updatable = false, nullable = false, unique = true)
36-
private UUID uuid = UUID.randomUUID();
36+
private UUID uuid;
3737

3838
private String pincode;
3939
private String vin;
4040
private long year;
4141
private EStatus status;
4242
@Transient List<VehicleOwnership> previousOwners;
4343

44-
@OneToOne(cascade = CascadeType.ALL)
44+
@ManyToOne(cascade = CascadeType.ALL)
4545
@JoinColumn(name = "vehicle_model_id")
4646
private VehicleModel model;
4747

@@ -54,7 +54,16 @@ public class VehicleDetails {
5454
private User owner;
5555

5656
public VehicleDetails(String pincode, String vin) {
57+
this.uuid = UUID.randomUUID();
58+
this.pincode = pincode;
59+
this.vin = vin;
60+
this.status = EStatus.ACTIVE;
61+
this.year = LocalDate.now().getYear();
62+
this.previousOwners = Arrays.asList();
63+
}
5764

65+
public VehicleDetails(String uuid, String pincode, String vin) {
66+
this.uuid = UUID.fromString(uuid);
5867
this.pincode = pincode;
5968
this.vin = vin;
6069
this.status = EStatus.ACTIVE;

services/identity/src/main/java/com/crapi/entity/VehicleModel.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public class VehicleModel implements Serializable {
3232
private EFuelType fuel_type;
3333
private String vehicle_img;
3434

35-
@OneToOne(cascade = CascadeType.ALL)
35+
@ManyToOne(cascade = CascadeType.ALL)
3636
private VehicleCompany vehiclecompany;
3737

3838
public VehicleModel() {}

0 commit comments

Comments
 (0)