Skip to content

Commit a185aae

Browse files
committed
[NO_REF] Add suppliers table and supplier search
1 parent 5724100 commit a185aae

File tree

5 files changed

+77
-2
lines changed

5 files changed

+77
-2
lines changed

src/main/java/com/getourguide/interview/ActivitiesController.java renamed to src/main/java/com/getourguide/interview/controller/ActivitiesController.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
package com.getourguide.interview;
1+
package com.getourguide.interview.controller;
22

3+
import com.getourguide.interview.dto.Activity;
34
import jakarta.persistence.EntityManager;
45
import jakarta.persistence.PersistenceContext;
56
import java.util.List;
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package com.getourguide.interview.controller;
2+
3+
import com.getourguide.interview.dto.Supplier;
4+
import jakarta.persistence.EntityManager;
5+
import jakarta.persistence.PersistenceContext;
6+
import java.util.List;
7+
import org.springframework.http.ResponseEntity;
8+
import org.springframework.stereotype.Controller;
9+
import org.springframework.web.bind.annotation.GetMapping;
10+
import org.springframework.web.bind.annotation.PathVariable;
11+
12+
@Controller
13+
public class SupplierController {
14+
15+
@PersistenceContext
16+
private EntityManager entityManager;
17+
18+
@GetMapping("/suppliers")
19+
public ResponseEntity<List<Supplier>> suppliers() {
20+
var list = (List<Supplier>) entityManager.createNativeQuery("SELECT * FROM GETYOURGUIDE.SUPPLIER", Supplier.class).getResultList();
21+
return ResponseEntity.ok(list);
22+
}
23+
24+
@GetMapping("/suppliers/search/{search}")
25+
public ResponseEntity<List<Supplier>> suppliersSearch(@PathVariable String search) {
26+
var list = (List<Supplier>) entityManager.createNativeQuery("SELECT * FROM GETYOURGUIDE.SUPPLIER", Supplier.class).getResultList();
27+
for(Supplier s: list) {
28+
String sb =
29+
new StringBuilder().append(s.getName()).append(s.getAddress()).append(s.getZip()).append(s.getCity())
30+
.append(s.getCountry()).toString();
31+
if(sb.contains(search)) {
32+
return ResponseEntity.ok(List.of(s));
33+
}
34+
}
35+
return ResponseEntity.ok(list);
36+
}
37+
}

src/main/java/com/getourguide/interview/Activity.java renamed to src/main/java/com/getourguide/interview/dto/Activity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.getourguide.interview;
1+
package com.getourguide.interview.dto;
22

33
import jakarta.persistence.Entity;
44
import jakarta.persistence.GeneratedValue;
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.getourguide.interview.dto;
2+
3+
import jakarta.persistence.Entity;
4+
import jakarta.persistence.Id;
5+
import jakarta.persistence.Table;
6+
import lombok.Data;
7+
import lombok.NoArgsConstructor;
8+
9+
@Data
10+
@Entity
11+
@Table(name = "getyourguide.supplier")
12+
@NoArgsConstructor
13+
public class Supplier {
14+
@Id
15+
private Long id;
16+
private String name;
17+
private String address;
18+
private String zip;
19+
private String city;
20+
private String country;
21+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
CREATE TABLE getyourguide.supplier (
2+
id INT PRIMARY KEY,
3+
name VARCHAR(255),
4+
address VARCHAR(255),
5+
zip VARCHAR(20),
6+
city VARCHAR(100),
7+
country VARCHAR(100)
8+
);
9+
10+
INSERT INTO getyourguide.supplier (id, name, address, zip, city, country) VALUES
11+
(1, 'John Doe', '123 Main St', '12345', 'Anytown', 'USA'),
12+
(2, 'Jane Doe', '456 Main St', '12345', 'Anytown', 'USA'),
13+
(3, 'Charlie Doe', '678 Main St', '12345', 'Anytown', 'USA'),
14+
(200, 'Jackie Chan', '789 Main St', '10000', 'Hong Kong', 'China'),
15+
(250, 'Ion Popescu', 'Str. Veseliei, Nr. 4', '253445', 'Bucharest', 'Romania');
16+

0 commit comments

Comments
 (0)