|
|
|
@@ -13,10 +13,10 @@ namespace IdentityProvider.Services |
|
|
|
private readonly IMongoCollection<TrackModel> _trackCollection; |
|
|
|
public IdentityService(IOptions<SpotifyDbConfig> spotifyDbConfig) |
|
|
|
{ |
|
|
|
var mongoClient = new MongoClient(spotifyDbConfig.Value.ConnString); |
|
|
|
var mongoDbContext = mongoClient.GetDatabase(spotifyDbConfig.Value.DBName); |
|
|
|
var mongoClient = new MongoClient(spotifyDbConfig.Value.ConnectionString); |
|
|
|
var mongoDbContext = mongoClient.GetDatabase(spotifyDbConfig.Value.DatabaseName); |
|
|
|
_userCollection = mongoDbContext.GetCollection<UserModel>(spotifyDbConfig.Value.UserCollection); |
|
|
|
_trackCollection = mongoDbContext.GetCollection<TrackModel>(spotifyDbConfig.Value.TrackCollection); |
|
|
|
_trackCollection = mongoDbContext.GetCollection<TrackModel>(spotifyDbConfig.Value.TracksCollection); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@@ -24,11 +24,12 @@ namespace IdentityProvider.Services |
|
|
|
{ |
|
|
|
List<UserModel> users = await _userCollection.Find(_ => true).ToListAsync(); |
|
|
|
//map users to match the grpc response |
|
|
|
return users.Select(u => new UserResponse |
|
|
|
var usersRes = users.Select(u => new UserResponse |
|
|
|
{ |
|
|
|
Id = u.Id, |
|
|
|
Token = u.Token |
|
|
|
}).ToList(); |
|
|
|
return usersRes; |
|
|
|
} |
|
|
|
public async Task<UserResponse> GetTokenByIdAsync(DbRequestMessage request) |
|
|
|
{ |
|
|
|
@@ -47,7 +48,8 @@ namespace IdentityProvider.Services |
|
|
|
Id = track.Id, |
|
|
|
Album = track.Album, |
|
|
|
Artist = track.Artist, |
|
|
|
Title = track.Title |
|
|
|
Title = track.Title, |
|
|
|
TrackId = track.TrackId |
|
|
|
}; |
|
|
|
} |
|
|
|
public async Task<VoidMessage> SaveTrackAsync(SaveTrackRequest track) |
|
|
|
@@ -58,12 +60,13 @@ namespace IdentityProvider.Services |
|
|
|
Title = track.Title, |
|
|
|
Album = track.Album, |
|
|
|
Artist = track.Artist, |
|
|
|
UserId = track.UserId |
|
|
|
UserId = track.UserId, |
|
|
|
TrackId = track.TrackId |
|
|
|
}; |
|
|
|
//first check if there's already a song in the db, if yes, update the row |
|
|
|
var song = await _trackCollection.FindAsync(x => x.UserId == track.UserId); |
|
|
|
var song = await _trackCollection.Find(x => x.UserId == track.UserId).AnyAsync(); |
|
|
|
|
|
|
|
if (song != null) await _trackCollection.ReplaceOneAsync(x => x.UserId == track.UserId, trackModel); |
|
|
|
if (song) await _trackCollection.ReplaceOneAsync(x => x.UserId == track.UserId, trackModel); |
|
|
|
|
|
|
|
else await _trackCollection.InsertOneAsync(trackModel); |
|
|
|
|
|
|
|
@@ -71,12 +74,12 @@ namespace IdentityProvider.Services |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
public async Task<VoidMessage> SaveUserAsync(UserResponse user) |
|
|
|
public async Task<VoidMessage> SaveUserAsync(UserResponse userRequest) |
|
|
|
{ |
|
|
|
await _userCollection.InsertOneAsync(new UserModel |
|
|
|
bool user = await _userCollection.Find(x => x.Id == userRequest.Id).AnyAsync(); |
|
|
|
if (!user) await _userCollection.InsertOneAsync(new UserModel |
|
|
|
{ |
|
|
|
Id = user.Id, |
|
|
|
Token = user.Token |
|
|
|
Token = userRequest.Token |
|
|
|
}); |
|
|
|
return new VoidMessage(); |
|
|
|
} |
|
|
|
@@ -85,9 +88,17 @@ namespace IdentityProvider.Services |
|
|
|
await _trackCollection.DeleteOneAsync(x => x.Id == request.Id); |
|
|
|
return new VoidMessage(); |
|
|
|
} |
|
|
|
public async Task<VoidMessage> DeleteUserAsync(DbRequestMessage user) |
|
|
|
public async Task<VoidMessage> DeleteUserAsync(DbRequestMessage userRequest) |
|
|
|
{ |
|
|
|
await _userCollection.DeleteOneAsync(x => x.Id == user.Id); |
|
|
|
//check if user exists |
|
|
|
bool user = await _userCollection.Find(x => x.Id == userRequest.Id).AnyAsync(); |
|
|
|
//delete track related to him |
|
|
|
if (user) |
|
|
|
{ |
|
|
|
await _trackCollection.DeleteManyAsync(x => x.UserId == userRequest.Id); |
|
|
|
//delete user |
|
|
|
await _userCollection.DeleteOneAsync(x => x.Id == userRequest.Id); |
|
|
|
} |
|
|
|
return new VoidMessage(); |
|
|
|
} |
|
|
|
|