diff --git a/pom.xml b/pom.xml index 68a734d..5d76e0c 100644 --- a/pom.xml +++ b/pom.xml @@ -52,8 +52,8 @@ - org.hsqldb - hsqldb + com.h2database + h2 runtime diff --git a/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/controler/CategoryController.java b/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/controler/CategoryController.java index 06454ed..69a162e 100644 --- a/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/controler/CategoryController.java +++ b/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/controler/CategoryController.java @@ -1,18 +1,49 @@ package de.uni_passau.fim.PADAS.group3.DataDash.controler; +import java.util.List; +import java.util.UUID; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.RestController; -import de.uni_passau.fim.PADAS.group3.DataDash.model.Category; +import de.uni_passau.fim.PADAS.group3.DataDash.model.CategoryDto; +import de.uni_passau.fim.PADAS.group3.DataDash.model.CategoryService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + + @RestController @RequestMapping("/api/v1/categories") public class CategoryController { + @Autowired + private CategoryService categoryService; + @GetMapping - public Category[] getMethodName() { - return Category.values(); + public List getMethodName() { + return categoryService.getAllCategories() ; } + + @GetMapping("/id/{id}") + public ResponseEntity fetchCategoryById(@PathVariable("id") UUID id) { + CategoryDto category = categoryService.getCategoryById(id); + if(category == null) { + return new ResponseEntity<>(HttpStatus.NOT_FOUND); + } + return new ResponseEntity<>(category, HttpStatus.OK); + } + @ResponseStatus(HttpStatus.CREATED) + @PostMapping + public void createCategory(@RequestBody CategoryDto dto) { + categoryService.addCategory(dto); + } + + } diff --git a/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/controler/DatasetController.java b/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/controler/DatasetController.java index 824c5ff..6a8f2a6 100644 --- a/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/controler/DatasetController.java +++ b/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/controler/DatasetController.java @@ -9,8 +9,11 @@ import de.uni_passau.fim.PADAS.group3.DataDash.model.Category; import de.uni_passau.fim.PADAS.group3.DataDash.model.Dataset; import de.uni_passau.fim.PADAS.group3.DataDash.model.DatasetService; import de.uni_passau.fim.PADAS.group3.DataDash.model.Type; + import org.springframework.data.domain.Pageable; import org.springframework.data.web.config.EnableSpringDataWebSupport; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; import org.springframework.data.domain.Sort; import java.util.UUID; @@ -24,58 +27,64 @@ public class DatasetController { @Autowired private DatasetService datasetService; - // @GetMapping - // public List getAllDatasets() { - // return datasetService.getAllDatasets(); - // } - @GetMapping("/id/{id}") - public Dataset getDatasetById(@PathVariable("id") UUID id) { - return datasetService.getDatasetById(id); + public ResponseEntity getDatasetById(@PathVariable("id") UUID id) { + Dataset d = datasetService.getDatasetById(id); + if (d == null) { + return new ResponseEntity<>(HttpStatus.NOT_FOUND); + } + return new ResponseEntity<>(d, HttpStatus.OK); } + @ResponseStatus(HttpStatus.CREATED) @PostMapping public Dataset createDataset(@RequestBody Dataset dataset) { - datasetService.addDataset(dataset); - // TODO: figure out what the fuck i need to do here - return null; + return datasetService.addDataset(dataset); } - // @PutMapping("/{id}") - // public Dataset updateDataset(@PathVariable("id") Long id, @RequestBody - // Dataset dataset) { - // return datasetService.updateDataset(id, dataset); - // } - // - @DeleteMapping("/id/{id}") - public void deleteDataset(@PathVariable("id") UUID id) { + public ResponseEntity deleteDataset(@PathVariable("id") UUID id) { + if (datasetService.getDatasetById(id) == null) { + return new ResponseEntity<>(HttpStatus.NOT_FOUND); + } datasetService.deleteDataset(id); + return new ResponseEntity<>(HttpStatus.OK); } @PutMapping("/id/{id}/upvote") - public Dataset upvote(@PathVariable("id") UUID id) { + public ResponseEntity upvote(@PathVariable("id") UUID id) { + if (datasetService.getDatasetById(id) == null) { + return new ResponseEntity<>(HttpStatus.NOT_FOUND); + } + datasetService.upvoteDataset(id); - return datasetService.getDatasetById(id); + return new ResponseEntity<>(datasetService.getDatasetById(id), HttpStatus.OK); } @PutMapping("/id/{id}/downvote") - public Dataset downvote(@PathVariable("id") UUID id) { + public ResponseEntity downvote(@PathVariable("id") UUID id) { + if (datasetService.getDatasetById(id) == null) { + return new ResponseEntity<>(HttpStatus.NOT_FOUND); + } datasetService.downvoteDataset(id); - return getDatasetById(id); // new ResponseEntity<>(null, HttpStatus.OK); + return new ResponseEntity<>(datasetService.getDatasetById(id), HttpStatus.OK); } @PutMapping("/id/{id}/stars") - public Dataset postMethodName(@PathVariable("id") UUID id, + public ResponseEntity postMethodName(@PathVariable("id") UUID id, @RequestParam("stars") int stars) { - if (stars > 0 && stars < 6) { - datasetService.voteDataset(id, stars); + if (datasetService.getDatasetById(id) == null) { + return new ResponseEntity<>(HttpStatus.NOT_FOUND); } - return datasetService.getDatasetById(id); + if (!(stars > 0 && stars < 6)) { + return new ResponseEntity<>(HttpStatus.BAD_REQUEST); + } + datasetService.voteDataset(id, stars); + return new ResponseEntity<>(datasetService.getDatasetById(id), HttpStatus.OK); } @GetMapping - public Page getDatasetsByDateAfter(@RequestParam(value = "author", required = false) String author, + public Page getDatasetsByDateAfter(@RequestParam(value = "author", required = false) String author, @RequestParam(value = "title", required = false) String title, @RequestParam(value = "description", required = false) String description, @RequestParam(value = "abst", required = false) String abst, @@ -87,21 +96,32 @@ public class DatasetController { @RequestParam(value = "direction", required = false, defaultValue = "desc") String direction, @RequestParam(value = "category", required = false) Category category) { Pageable pageable = PageRequest.of(page, size, - Sort.by(direction.equals("asc") ? Sort.Direction.ASC : Sort.Direction.DESC, sort)); - return datasetService.getDatasetsByOptionalCriteria(title, description, author, abst, type, rating, category,pageable); + Sort.by(Sort.Direction.fromString(direction), sort)); + return datasetService.getDatasetsByOptionalCriteria(title, description, author, abst, type, rating, category, + pageable); } @GetMapping("/search") - public Page search(@RequestParam(value = "search", required = false, defaultValue = "%") String search, + public ResponseEntity> search( + @RequestParam(value = "search", required = false, defaultValue = "%") String search, @RequestParam(value = "page", required = false, defaultValue = "0") int page, @RequestParam(value = "size", required = false, defaultValue = "20") int size, @RequestParam(value = "sort", required = false, defaultValue = "upvotes") String sort, @RequestParam(value = "direction", required = false, defaultValue = "desc") String direction, @RequestParam(value = "category", required = false, defaultValue = "%") String category, - @RequestParam(value = "type", required = false, defaultValue = "%") String type){ - Pageable pageable = PageRequest.of(page, size, - Sort.by(direction.equals("asc") ? Sort.Direction.ASC : Sort.Direction.DESC, sort)); - return datasetService.searchByOptionalCriteria(search, category, type, pageable); + @RequestParam(value = "type", required = false, defaultValue = "%") String type) { + Pageable pageable = null; + if (!Dataset.getSort().contains(sort)) + return new ResponseEntity<>(HttpStatus.BAD_REQUEST); + try { + pageable = PageRequest.of(page, size, + Sort.by(Sort.Direction.fromString(direction), sort)); + } catch (Exception e) { + return new ResponseEntity<>(HttpStatus.BAD_REQUEST); + } + + return new ResponseEntity<>(datasetService.searchByOptionalCriteria(search, category, type, pageable), + HttpStatus.OK); } -} \ No newline at end of file +} \ No newline at end of file diff --git a/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/model/Category.java b/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/model/Category.java index b7cc30e..4246baa 100644 --- a/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/model/Category.java +++ b/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/model/Category.java @@ -1,14 +1,45 @@ package de.uni_passau.fim.PADAS.group3.DataDash.model; -public enum Category { - HEALTH, - ENVIRONMENT, - ECONOMY, - POLITICS, - TECHNOLOGY, - SPORTS, - SCIENCE, - CULTURE, - EDUCATION, - OTHER +import java.util.List; +import java.util.UUID; + +import org.springframework.context.annotation.Lazy; + +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.OneToMany; + +@Entity +public class Category { + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private UUID id; + + private String name; + + @Lazy + @OneToMany(mappedBy = "categorie") + private List datasets; + + public Category(String name) { + this.name = name; + } + + public Category() { + } + + public UUID getId() { + return id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } } diff --git a/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/model/CategoryDto.java b/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/model/CategoryDto.java new file mode 100644 index 0000000..a21d0cf --- /dev/null +++ b/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/model/CategoryDto.java @@ -0,0 +1,27 @@ +package de.uni_passau.fim.PADAS.group3.DataDash.model; + +import java.util.UUID; + +public class CategoryDto { + + private String name; + private UUID id; + + public CategoryDto() { + } + + CategoryDto(String name, UUID id) { + this.name = name; + this.id = id; + } + + + public String getName() { + return name; + } + + public UUID getId() { + return id; + } +} + diff --git a/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/model/CategoryDtoMapper.java b/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/model/CategoryDtoMapper.java new file mode 100644 index 0000000..e7ecc10 --- /dev/null +++ b/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/model/CategoryDtoMapper.java @@ -0,0 +1,10 @@ +package de.uni_passau.fim.PADAS.group3.DataDash.model; + +public class CategoryDtoMapper { + + public static CategoryDto toDto(Category category) { + CategoryDto dto = new CategoryDto(category.getName(), category.getId()); + return dto; + } + +} diff --git a/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/model/CategoryRepository.java b/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/model/CategoryRepository.java new file mode 100644 index 0000000..a0b67e5 --- /dev/null +++ b/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/model/CategoryRepository.java @@ -0,0 +1,20 @@ +package de.uni_passau.fim.PADAS.group3.DataDash.model; + +import java.util.List; +import java.util.Optional; +import java.util.UUID; + +import org.springframework.data.jpa.repository.JpaRepository; + + +public interface CategoryRepository extends JpaRepository{ + + Category getCategoryById(UUID id); + + @SuppressWarnings("null") + List findAll(); + List findByName(String name); + @SuppressWarnings("null") + Optional findById(UUID id); + +} diff --git a/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/model/CategoryService.java b/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/model/CategoryService.java new file mode 100644 index 0000000..d975497 --- /dev/null +++ b/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/model/CategoryService.java @@ -0,0 +1,34 @@ +package de.uni_passau.fim.PADAS.group3.DataDash.model; + +import org.springframework.stereotype.Service; +import java.util.List; +import java.util.UUID; + +@Service +public class CategoryService { + private CategoryRepository categoryRepository; + + public CategoryService(CategoryRepository categoryRepository) { + this.categoryRepository = categoryRepository; + } + + public void addCategory(CategoryDto category) { + Category cat = new Category(category.getName()); + categoryRepository.save(cat); + } + + public List getAllCategories() { + List tmp = categoryRepository.findAll(); + List s = tmp.stream().map(CategoryDtoMapper::toDto).toList(); + return s; + } + + public CategoryDto getCategoryById(UUID id) { + Category c = categoryRepository.getCategoryById(id); + if (c == null) { + return null; + } + return CategoryDtoMapper.toDto(c); + } + +} diff --git a/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/model/Dataset.java b/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/model/Dataset.java index 7d694fb..5f28d40 100644 --- a/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/model/Dataset.java +++ b/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/model/Dataset.java @@ -2,6 +2,8 @@ package de.uni_passau.fim.PADAS.group3.DataDash.model; import java.net.URL; import java.time.LocalDate; +import java.util.Arrays; +import java.util.List; import java.util.UUID; import java.sql.Date; @@ -11,6 +13,7 @@ import jakarta.persistence.Enumerated; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; +import jakarta.persistence.ManyToOne; @Entity public class Dataset { @@ -39,7 +42,10 @@ public class Dataset { private int upvotes; private URL url; - @Enumerated(EnumType.STRING) + + private static final List sortable = Arrays.asList("author", "title", "upvotes", "date"); + + @ManyToOne private Category categorie; public Dataset(String title, String abst, String description, String author, URL url, Category categories, Type type) { @@ -109,6 +115,10 @@ public class Dataset { return url; } + public static List getSort() { + return sortable; + } + public void setAbst(String abst) { this.abst = abst.substring(0, Math.min(abst.length(), 100)); } diff --git a/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/model/DatasetService.java b/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/model/DatasetService.java index a3ac52d..ea1fe96 100644 --- a/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/model/DatasetService.java +++ b/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/model/DatasetService.java @@ -9,13 +9,14 @@ import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import org.springframework.data.domain.Page; - @Service public class DatasetService { private dataRepository datasetRepository; + private CategoryRepository categoryRepository; - public DatasetService(dataRepository datasetRepository) { + public DatasetService(dataRepository datasetRepository, CategoryRepository categoryRepository) { this.datasetRepository = datasetRepository; + this.categoryRepository = categoryRepository; } public List getAllDatasets() { @@ -26,9 +27,9 @@ public class DatasetService { return datasetRepository.getDatasetById(id); } - public void addDataset(Dataset dataset) { + public Dataset addDataset(Dataset dataset) { dataset.setDate(LocalDate.now()); - datasetRepository.save(dataset); + return datasetRepository.save(dataset); } public void updateDatasetTitle(UUID id, String title) { @@ -89,15 +90,22 @@ public class DatasetService { public Page getDatasetsByOptionalCriteria(String title, String description, String author, String abst, Type type, Float raiting, Category category, Pageable pageable) { return datasetRepository.findByOptionalCriteria(Optional.ofNullable(title), Optional.ofNullable(description), - Optional.ofNullable(author), Optional.ofNullable(abst), Optional.ofNullable(type), Optional.ofNullable(category), + Optional.ofNullable(author), Optional.ofNullable(abst), Optional.ofNullable(type), + Optional.ofNullable(category), Optional.ofNullable(raiting), pageable); } public Page searchByOptionalCriteria(String search, String categories, String type, Pageable pageable) { - //TODO: make it not Crash - Category category = categories.equals("%") ? null : Category.valueOf(categories); + Category category = categories.equals("%") ? null + : categoryRepository.getCategoryById(UUID.fromString(categories)); Type t = type.equals("%") ? null : Type.valueOf(type); - return datasetRepository.searchByOptionalCriteria(Optional.ofNullable(search), Optional.ofNullable(category), Optional.ofNullable(t),pageable); + if (category == null) { + return datasetRepository.searchByOptionalCriteria(Optional.ofNullable(search), Optional.ofNullable(t), + pageable); + } + return datasetRepository.searchByOptionalCriteriaWithCategory(Optional.ofNullable(search), category, + Optional.ofNullable(t), pageable); } + } \ No newline at end of file diff --git a/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/model/LoadDummyDatabase.java b/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/model/LoadDummyDatabase.java index dd6d8e0..ba3dd32 100644 --- a/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/model/LoadDummyDatabase.java +++ b/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/model/LoadDummyDatabase.java @@ -15,18 +15,22 @@ public class LoadDummyDatabase { private static final org.slf4j.Logger log = LoggerFactory.getLogger(LoadDummyDatabase.class); - @Bean - CommandLineRunner initDatabase(dataRepository repository) { + //@Bean + CommandLineRunner initDatabase(dataRepository repository, CategoryRepository categoryRepository) { return args -> { for (int i = 0; i < 100; i++) { - Dataset dataset = new Dataset("Title" + i, "Abst" + i, "Description" + i, "Author" + i,null, Category.EDUCATION, Type.API); + Category category = new Category("Category" + i); + log.info("Preloading" + categoryRepository.save(category)); + + Dataset dataset = new Dataset("Title" + i, "Abst" + i, "Description" + i, "Author" + i,null, category, Type.API); for (int j = 0; j < new Random().nextInt(50); j++) { dataset.upvote(); } log.info("Preloading" + repository.save(dataset)); + log.info("Preloading" + categoryRepository.save(category)); } List s = repository.findByTitleLike("%Title%"); log.info("Found Entry with ID: " + s.get(1).getId());}; diff --git a/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/model/dataRepository.java b/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/model/dataRepository.java index 17fde64..130415d 100644 --- a/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/model/dataRepository.java +++ b/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/model/dataRepository.java @@ -65,10 +65,19 @@ public interface dataRepository extends JpaRepository { "((LOWER(d.title) LIKE LOWER(:search)) OR " + "(LOWER(d.description) LIKE LOWER(:search)) OR " + "(LOWER(d.author) LIKE LOWER(:search))) AND" + - "(:categorie IS NULL OR d.categorie = :categorie) AND" + + "(d.categorie = :categorie) AND" + "(:type IS NULL OR d.type = :type)") - Page searchByOptionalCriteria(@Param("search") Optional search, - @Param("categorie") Optional categories, + Page searchByOptionalCriteriaWithCategory(@Param("search") Optional search, + @Param("categorie") Category categories, @Param("type") Optional type, Pageable pageable); -} \ No newline at end of file + + @Query("SELECT d FROM Dataset d WHERE " + + "((LOWER(d.title) LIKE LOWER(:search)) OR " + + "(LOWER(d.description) LIKE LOWER(:search)) OR " + + "(LOWER(d.author) LIKE LOWER(:search))) AND" + + "(:type IS NULL OR d.type = :type)") + Page searchByOptionalCriteria(@Param("search") Optional search, + @Param("type") Optional type, + Pageable pageable); +} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 11b8d6e..defb9dd 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1 +1,14 @@ spring.application.name=DataDash + +# Datasource configuration +spring.datasource.url=jdbc:h2:mem:studentcoursedb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE +spring.datasource.driverClassName=org.h2.Driver +spring.jpa.database-platform=org.hibernate.dialect.H2Dialect +spring.sql.init.mode=always +spring.jpa.hibernate.ddl-auto=none + +# Uncomment for web console +#spring.h2.console.enabled=true +#spring.h2.console.path=/h2-console +#spring.datasource.username=sa +#spring.datasource.password=pwd \ No newline at end of file diff --git a/src/main/resources/data.sql b/src/main/resources/data.sql new file mode 100644 index 0000000..68993c1 --- /dev/null +++ b/src/main/resources/data.sql @@ -0,0 +1,30 @@ +-- Insert sample data into category +INSERT INTO category (id, name) VALUES +('123e4567-e89b-12d3-a456-426614174003', 'Business'), +('123e4567-e89b-12d3-a456-426614174004', 'Education'), +('123e4567-e89b-12d3-a456-426614174005', 'Sports'), +('123e4567-e89b-12d3-a456-426614174006', 'Entertainment'), +('123e4567-e89b-12d3-a456-426614174007', 'Art'), +('123e4567-e89b-12d3-a456-426614174000', 'Science'), +('123e4567-e89b-12d3-a456-426614174001', 'Technology'), +('123e4567-e89b-12d3-a456-426614174002', 'Health'); + +-- Insert sample data into dataset +INSERT INTO dataset (date, raiting, upvotes, votes, categorie_id, id, abst, author, description, title, url, type) VALUES +('2023-01-01', 4.5, 100, 120, '123e4567-e89b-12d3-a456-426614174000', '123e4567-e89b-12d3-a456-426614174100', 'Abstract 1', 'Author 1', 'Description 1', 'Title 1', 'http://example.com/1', 'API'), +('2023-01-02', 4.7, 150, 170, '123e4567-e89b-12d3-a456-426614174001', '123e4567-e89b-12d3-a456-426614174101', 'Abstract 2', 'Author 2', 'Description 2', 'Title 2', 'http://example.com/2', 'DATASET'), +('2023-01-03', 4.9, 200, 220, '123e4567-e89b-12d3-a456-426614174002', '123e4567-e89b-12d3-a456-426614174102', 'Abstract 3', 'Author 3', 'Description 3', 'Title 3', 'http://example.com/3', 'API'), +('2023-01-04', 4.2, 80, 100, '123e4567-e89b-12d3-a456-426614174003', '123e4567-e89b-12d3-a456-426614174103', 'Abstract 4', 'Author 4', 'Description 4', 'Title 4', 'http://example.com/4', 'DATASET'), +('2023-01-05', 4.6, 120, 140, '123e4567-e89b-12d3-a456-426614174004', '123e4567-e89b-12d3-a456-426614174104', 'Abstract 5', 'Author 5', 'Description 5', 'Title 5', 'http://example.com/5', 'API'); +-- Insert 10 more sample data into dataset +INSERT INTO dataset (date, raiting, upvotes, votes, categorie_id, id, abst, author, description, title, url, type) VALUES +('2023-01-06', 4.8, 180, 200, '123e4567-e89b-12d3-a456-426614174005', '123e4567-e89b-12d3-a456-426614174105', 'Abstract 6', 'Author 6', 'Description 6', 'Title 6', 'http://example.com/6', 'API'), +('2023-01-07', 4.3, 90, 110, '123e4567-e89b-12d3-a456-426614174006', '123e4567-e89b-12d3-a456-426614174106', 'Abstract 7', 'Author 7', 'Description 7', 'Title 7', 'http://example.com/7', 'DATASET'), +('2023-01-08', 4.7, 150, 170, '123e4567-e89b-12d3-a456-426614174007', '123e4567-e89b-12d3-a456-426614174107', 'Abstract 8', 'Author 8', 'Description 8', 'Title 8', 'http://example.com/8', 'API'), +('2023-01-09', 4.9, 200, 220, '123e4567-e89b-12d3-a456-426614174000', '123e4567-e89b-12d3-a456-426614174108', 'Abstract 9', 'Author 9', 'Description 9', 'Title 9', 'http://example.com/9', 'DATASET'), +('2023-01-10', 4.2, 80, 100, '123e4567-e89b-12d3-a456-426614174001', '123e4567-e89b-12d3-a456-426614174109', 'Abstract 10', 'Author 10', 'Description 10', 'Title 10', 'http://example.com/10', 'API'), +('2023-11-11', 4.6, 120, 140, '123e4567-e89b-12d3-a456-426614174002', '123e4567-e89b-12d3-a456-426614174110', 'Abstract 11', 'Author 11', 'Description 11', 'Title 11', 'http://example.com/11', 'DATASET'), +('2023-09-12', 4.8, 180, 200, '123e4567-e89b-12d3-a456-426614174003', '123e4567-e89b-12d3-a456-426614174111', 'Abstract 12', 'Author 12', 'Description 12', 'Title 12', 'http://example.com/12', 'API'), +('2023-03-13', 4.3, 90, 110, '123e4567-e89b-12d3-a456-426614174004', '123e4567-e89b-12d3-a456-426614174112', 'Abstract 13', 'Author 13', 'Description 13', 'Title 13', 'http://example.com/13', 'DATASET'), +('2021-01-14', 4.7, 150, 170, '123e4567-e89b-12d3-a456-426614174005', '123e4567-e89b-12d3-a456-426614174113', 'Abstract 14', 'Author 14', 'Description 14', 'Title 14', 'http://example.com/14', 'API'), +('2024-01-15', 4.9, 200, 220, '123e4567-e89b-12d3-a456-426614174006', '123e4567-e89b-12d3-a456-426614174114', 'Abstract 15', 'Author 15', 'Description 15', 'Title 15', 'http://example.com/15', 'DATASET'); \ No newline at end of file diff --git a/src/main/resources/schema.sql b/src/main/resources/schema.sql new file mode 100644 index 0000000..bb7c8b1 --- /dev/null +++ b/src/main/resources/schema.sql @@ -0,0 +1,7 @@ +DROP TABLE IF EXISTS dataset; +DROP TABLE IF EXISTS category; + + +create table category (id uuid not null, name varchar(255), primary key (id)); +create table dataset (date date, raiting float(24) not null, upvotes integer not null, votes integer not null, categorie_id uuid, id uuid not null, abst varchar(255), author varchar(255), description varchar(255), title varchar(255), url varchar(255), type enum ('API','DATASET'), primary key (id)); +alter table if exists dataset add constraint FKq6qwq6u473f89h71s7rf97ruy foreign key (categorie_id) references category;