Skip to content

Commit 7a28a39

Browse files
Alexandre AkiraAlexandreAkao
Alexandre Akira
authored andcommitted
CRUD music
1 parent e7ef509 commit 7a28a39

34 files changed

+343
-617
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package br.com.spotify.config;
2+
3+
import org.springframework.context.annotation.Bean;
4+
import org.springframework.context.annotation.Configuration;
5+
import org.springframework.http.HttpHeaders;
6+
import org.springframework.http.HttpMethod;
7+
import org.springframework.http.HttpStatus;
8+
import org.springframework.http.server.reactive.ServerHttpRequest;
9+
import org.springframework.http.server.reactive.ServerHttpResponse;
10+
import org.springframework.web.cors.reactive.CorsUtils;
11+
import org.springframework.web.reactive.config.CorsRegistry;
12+
import org.springframework.web.reactive.config.WebFluxConfigurer;
13+
import org.springframework.web.reactive.config.WebFluxConfigurerComposite;
14+
import org.springframework.web.server.ServerWebExchange;
15+
import org.springframework.web.server.WebFilter;
16+
import org.springframework.web.server.WebFilterChain;
17+
import reactor.core.publisher.Mono;
18+
19+
@Configuration
20+
public class CorsGlobalConfiguration {
21+
22+
@Bean
23+
public WebFluxConfigurer corsConfigurer() {
24+
return new WebFluxConfigurerComposite() {
25+
26+
@Override
27+
public void addCorsMappings(CorsRegistry registry) {
28+
registry.addMapping("/**")
29+
.allowedOrigins("*")
30+
.allowedHeaders("*")
31+
.allowedMethods("*");
32+
}
33+
};
34+
}
35+
}

backend/src/main/java/br/com/spotify/controller/MusicController.java

+6
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package br.com.spotify.controller;
22

33
import br.com.spotify.document.Music;
4+
import br.com.spotify.document.Playlist;
45
import br.com.spotify.service.MusicService;
56
import org.springframework.beans.factory.annotation.Autowired;
67
import org.springframework.web.bind.annotation.*;
@@ -22,6 +23,11 @@ public Flux<Music> findByNameAndAuthor(@RequestParam(value = "search", required
2223
return musicService.findAll();
2324
}
2425

26+
@GetMapping(value = "/musics/{id}")
27+
public Mono<Music> findById(@PathVariable String id) {
28+
return musicService.findById(id);
29+
}
30+
2531
@PostMapping(value = "/musics")
2632
public Mono<Music> create(@RequestBody Music music) {
2733
return musicService.save(music);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package br.com.spotify.controller;
2+
3+
import br.com.spotify.document.Session;
4+
import br.com.spotify.service.SessionService;
5+
import org.springframework.beans.factory.annotation.Autowired;
6+
import org.springframework.web.bind.annotation.PostMapping;
7+
import org.springframework.web.bind.annotation.RequestBody;
8+
import org.springframework.web.bind.annotation.RestController;
9+
import reactor.core.publisher.Mono;
10+
11+
import java.util.Map;
12+
13+
@RestController
14+
public class SessionController {
15+
16+
@Autowired
17+
private SessionService sessionService;
18+
19+
@PostMapping(value = "/sessions")
20+
public Mono<Session> login(@RequestBody Map<String, String> username) {
21+
22+
/*
23+
Map<String, Object> res = new LinkedHashMap<>();
24+
res.put("user", newSession.);
25+
res.put("token", "odjsaidjasdoiusjdsidjsaiojdsaoidjadoia");
26+
*/
27+
28+
return sessionService.login(username.get("username"), username.get("password"))
29+
.map(user -> {
30+
Session s = new Session();
31+
s.setName(user.getUsername());
32+
s.setEmail(user.getEmail());
33+
s.setUserId(user.getId());
34+
35+
return s;
36+
});
37+
// return sessionService.getById(username.get("username"));
38+
}
39+
}

backend/src/main/java/br/com/spotify/document/Playlist.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package br.com.spotify.document;
22

33
import org.springframework.data.annotation.Id;
4-
import org.springframework.data.mongodb.core.mapping.DBRef;
54

65
import java.util.List;
76

@@ -13,10 +12,11 @@ public class Playlist {
1312
private String image;
1413
private Boolean isPrivate;
1514
private int duration;
16-
@DBRef
1715
private List<Music> musics;
1816
private String userId;
1917

18+
public Playlist() {}
19+
2020
public Playlist(String id, String name, String image, Boolean isPrivate, int duration, List<Music> musics, String userId) {
2121
this.id = id;
2222
this.name = name;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package br.com.spotify.document;
2+
3+
public class Session {
4+
5+
String id;
6+
String name;
7+
String email;
8+
String token;
9+
10+
public String getUserId() {
11+
return id;
12+
}
13+
14+
public void setUserId(String userId) {
15+
this.id = userId;
16+
}
17+
18+
public String getName() {
19+
return name;
20+
}
21+
22+
public void setName(String name) {
23+
this.name = name;
24+
}
25+
26+
public String getEmail() {
27+
return email;
28+
}
29+
30+
public void setEmail(String email) {
31+
this.email = email;
32+
}
33+
34+
public String getToken() {
35+
return "7d41b658912d5c39eeaf4fe94eb5e3e7";
36+
}
37+
38+
public void setToken(String token) {
39+
this.token = token;
40+
}
41+
}

backend/src/main/java/br/com/spotify/document/User.java

+7-7
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,15 @@ public class User {
1010

1111
@Id
1212
private String id;
13-
private String name;
13+
private String username;
1414
private String email;
1515
private String senha;
1616
private Date dataDeNascimento;
1717
private String sexo;
1818

19-
public User(String id, String name, String email, String senha, Date dataDeNascimento, String sexo) {
19+
public User(String id, String username, String email, String senha, Date dataDeNascimento, String sexo) {
2020
this.id = id;
21-
this.name = name;
21+
this.username = username;
2222
this.email = email;
2323
this.senha = senha;
2424
this.dataDeNascimento = dataDeNascimento;
@@ -33,12 +33,12 @@ public void setId(String id) {
3333
this.id = id;
3434
}
3535

36-
public String getName() {
37-
return name;
36+
public String getUsername() {
37+
return username;
3838
}
3939

40-
public void setName(String name) {
41-
this.name = name;
40+
public void setUsername(String username) {
41+
this.username = username;
4242
}
4343

4444
public String getEmail() {

backend/src/main/java/br/com/spotify/repository/MusicRepository.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,6 @@
66
import reactor.core.publisher.Flux;
77

88
public interface MusicRepository extends ReactiveMongoRepository<Music, String> {
9-
@Query("{$or: [{ 'name': ?0 }, { 'author': ?0 }]}")
9+
@Query("{$or: [{ 'name': { $regex: ?0, $options: 'i' } }, { 'author': { $regex: ?0, $options: 'i'}}]}")
1010
Flux<Music> findByNameOrAuthor(String search);
1111
}
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,15 @@
11
package br.com.spotify.repository;
22

3+
4+
import br.com.spotify.document.Session;
35
import br.com.spotify.document.User;
6+
import org.springframework.data.mongodb.repository.Query;
47
import org.springframework.data.mongodb.repository.ReactiveMongoRepository;
58

9+
import reactor.core.publisher.Flux;
10+
import reactor.core.publisher.Mono;
11+
612
public interface UserRepository extends ReactiveMongoRepository<User, String> {
13+
@Query("{$or: [{ 'name': ?0 }, { 'email': ?0 }]}")
14+
Mono<User> login(String username, String password);
715
}

backend/src/main/java/br/com/spotify/service/MusicService.java

+2
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,7 @@ public interface MusicService {
99

1010
Flux<Music> findByNameOrAuthor(String search);
1111

12+
Mono<Music> findById(String id);
13+
1214
Mono<Music> save(Music music);
1315
}

backend/src/main/java/br/com/spotify/service/MusicServiceImpl.java

+5-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import br.com.spotify.document.Music;
44
import br.com.spotify.repository.MusicRepository;
55
import org.springframework.beans.factory.annotation.Autowired;
6-
import org.springframework.data.domain.Example;
76
import org.springframework.stereotype.Service;
87
import reactor.core.publisher.Flux;
98
import reactor.core.publisher.Mono;
@@ -24,6 +23,11 @@ public Flux<Music> findByNameOrAuthor(String search) {
2423
return musicRepository.findByNameOrAuthor(search);
2524
}
2625

26+
@Override
27+
public Mono<Music> findById(String id) {
28+
return musicRepository.findById(id);
29+
}
30+
2731
@Override
2832
public Mono<Music> save(Music music) {
2933
return musicRepository.save(music);

backend/src/main/java/br/com/spotify/service/PlaylistServiceImpl.java

+56-11
Original file line numberDiff line numberDiff line change
@@ -40,16 +40,61 @@ public Mono<Playlist> save(Playlist playlist) {
4040

4141
@Override
4242
public Mono<Playlist> update(String id, Playlist newPlaylist) {
43-
Playlist updatedPlaylist = new Playlist(
44-
id,
45-
newPlaylist.getName(),
46-
newPlaylist.getImage(),
47-
newPlaylist.getPrivate(),
48-
newPlaylist.getDuration(),
49-
newPlaylist.getMusics(),
50-
newPlaylist.getUserId()
51-
);
52-
53-
return playlistRepository.save(updatedPlaylist);
43+
// Playlist updatedPlaylist = new Playlist(
44+
// id,
45+
// newPlaylist.getName(),
46+
// newPlaylist.getImage(),
47+
// newPlaylist.getPrivate(),
48+
// newPlaylist.getDuration(),
49+
// newPlaylist.getMusics(),
50+
// newPlaylist.getUserId()
51+
// );
52+
53+
//
54+
return playlistRepository.save(newPlaylist);
55+
// return playlistRepository.findById(id).map(playlist -> {
56+
// if (newPlaylist.getName() != null) {
57+
// playlist.setName(newPlaylist.getName());
58+
// }
59+
//
60+
// if (newPlaylist.getImage() != null && newPlaylist.getImage().equals("")) {
61+
// playlist.setImage(newPlaylist.getImage());
62+
// }
63+
//
64+
// if (newPlaylist.getPrivate() != null) {
65+
// playlist.setPrivate(newPlaylist.getPrivate());
66+
// }
67+
//
68+
// if (newPlaylist.getMusics() != null) {
69+
// playlist.setMusics(newPlaylist.getMusics());
70+
// }
71+
//
72+
// if (newPlaylist.getUserId() != null) {
73+
// playlist.setUserId(newPlaylist.getUserId());
74+
// }
75+
//
76+
// //playlistRepository.save(playlist);
77+
//
78+
// return playlist;
79+
// });
80+
81+
82+
// updatedPlaylist.setId(id);
83+
//
84+
// if (newPlaylist.getName() != null) {
85+
// updatedPlaylist.setName(newPlaylist.getName());
86+
// }
87+
// if (newPlaylist.getImage() != null && newPlaylist.getImage().equals("")) {
88+
// updatedPlaylist.setImage(newPlaylist.getImage());
89+
// }
90+
// if (newPlaylist.getPrivate() != null) {
91+
// updatedPlaylist.setPrivate(newPlaylist.getPrivate());
92+
// }
93+
// if (newPlaylist.getMusics() != null) {
94+
// updatedPlaylist.setMusics(newPlaylist.getMusics());
95+
// }
96+
// if (newPlaylist.getUserId() != null) {
97+
// updatedPlaylist.setUserId(newPlaylist.getUserId());
98+
// }
5499
}
55100
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package br.com.spotify.service;
2+
3+
import br.com.spotify.document.Session;
4+
import br.com.spotify.document.User;
5+
import reactor.core.publisher.Mono;
6+
7+
public interface SessionService {
8+
Mono<User> login(String username, String password);
9+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package br.com.spotify.service;
2+
3+
import br.com.spotify.document.User;
4+
import br.com.spotify.repository.UserRepository;
5+
import org.springframework.beans.factory.annotation.Autowired;
6+
import org.springframework.stereotype.Service;
7+
import reactor.core.publisher.Mono;
8+
9+
@Service
10+
public class SessionServiceImpl implements SessionService {
11+
12+
@Autowired
13+
private UserRepository userRepository;
14+
15+
@Override
16+
public Mono<User> login(String username, String password) {
17+
return userRepository.login(username, password);
18+
}
19+
}

backend/src/main/java/br/com/spotify/service/UserServiceImpl.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import br.com.spotify.document.User;
44
import br.com.spotify.repository.UserRepository;
55
import org.springframework.beans.factory.annotation.Autowired;
6-
import org.springframework.data.mongodb.core.query.Update;
76
import org.springframework.stereotype.Service;
87
import reactor.core.publisher.Flux;
98
import reactor.core.publisher.Mono;
@@ -31,7 +30,7 @@ public Mono<User> save(User user) {
3130

3231
@Override
3332
public Mono<User> update(String id, User newUser) {
34-
User updatedUser = new User(id, newUser.getName(), newUser.getEmail(), newUser.getSenha(), newUser.getDataDeNascimento(), newUser.getSexo());
33+
User updatedUser = new User(id, newUser.getUsername(), newUser.getEmail(), newUser.getSenha(), newUser.getDataDeNascimento(), newUser.getSexo());
3534

3635
return userRepository.save(updatedUser);
3736
}

0 commit comments

Comments
 (0)