diff options
Diffstat (limited to 'Backend/Api')
-rw-r--r-- | Backend/Api/Api/Api.csproj | 2 | ||||
-rw-r--r-- | Backend/Api/Api/Database/DatabaseConnection.cs | 1 | ||||
-rw-r--r-- | Backend/Api/Api/Interfaces/IDatabaseConnection.cs | 1 | ||||
-rw-r--r-- | Backend/Api/Api/Interfaces/IUserService.cs | 14 | ||||
-rw-r--r-- | Backend/Api/Api/Models/User.cs | 17 | ||||
-rw-r--r-- | Backend/Api/Api/Program.cs | 3 | ||||
-rw-r--r-- | Backend/Api/Api/Services/UserService.cs | 58 | ||||
-rw-r--r-- | Backend/Api/Api/appsettings.json | 3 |
8 files changed, 96 insertions, 3 deletions
diff --git a/Backend/Api/Api/Api.csproj b/Backend/Api/Api/Api.csproj index f8d2732..eeacb93 100644 --- a/Backend/Api/Api/Api.csproj +++ b/Backend/Api/Api/Api.csproj @@ -13,8 +13,6 @@ <ItemGroup> <Folder Include="Controllers\" /> - <Folder Include="Models\" /> - <Folder Include="Services\" /> </ItemGroup> </Project> diff --git a/Backend/Api/Api/Database/DatabaseConnection.cs b/Backend/Api/Api/Database/DatabaseConnection.cs index 560eaee..65f4f52 100644 --- a/Backend/Api/Api/Database/DatabaseConnection.cs +++ b/Backend/Api/Api/Database/DatabaseConnection.cs @@ -6,5 +6,6 @@ namespace Api.Database { public string ConnectionString { get; set; } = String.Empty; public string DatabaseName { get; set; } = String.Empty; + public string UserCollectionName { get; set; } = String.Empty; } } diff --git a/Backend/Api/Api/Interfaces/IDatabaseConnection.cs b/Backend/Api/Api/Interfaces/IDatabaseConnection.cs index ca5e320..8938127 100644 --- a/Backend/Api/Api/Interfaces/IDatabaseConnection.cs +++ b/Backend/Api/Api/Interfaces/IDatabaseConnection.cs @@ -4,5 +4,6 @@ { string ConnectionString { get; set; } string DatabaseName { get; set; } + string UserCollectionName { get; set; } } } diff --git a/Backend/Api/Api/Interfaces/IUserService.cs b/Backend/Api/Api/Interfaces/IUserService.cs new file mode 100644 index 0000000..6de648e --- /dev/null +++ b/Backend/Api/Api/Interfaces/IUserService.cs @@ -0,0 +1,14 @@ +using Api.Models; + +namespace Api.Interfaces +{ + public interface IUserService + { + User createUser(User user); + List<User> getUsers(); + User getUserByEmail(String email); + User getUserByUsername(String username); + User updateUser(User user); + Boolean deleteUser(String email); + } +} diff --git a/Backend/Api/Api/Models/User.cs b/Backend/Api/Api/Models/User.cs new file mode 100644 index 0000000..eb7d1e8 --- /dev/null +++ b/Backend/Api/Api/Models/User.cs @@ -0,0 +1,17 @@ +using MongoDB.Bson; +using MongoDB.Bson.Serialization.Attributes; + +namespace Api.Models +{ + public class User + { + [BsonId] + [BsonRepresentation(BsonType.ObjectId)] + public String _id { get; set; } + public String name { get; set; } + public String username { get; set; } + public String email { get; set; } + public String password { get; set; } + public DateTime creationDate { get; set; } + } +} diff --git a/Backend/Api/Api/Program.cs b/Backend/Api/Api/Program.cs index 2dfd84d..7ae8798 100644 --- a/Backend/Api/Api/Program.cs +++ b/Backend/Api/Api/Program.cs @@ -1,5 +1,6 @@ using Api.Database; using Api.Interfaces; +using Api.Services; using Microsoft.Extensions.Options; using MongoDB.Driver; @@ -16,6 +17,8 @@ builder.Services.AddSingleton<IDatabaseConnection>(sp => builder.Services.AddSingleton<IMongoClient>(s => new MongoClient(builder.Configuration.GetValue<string>("DatabaseSettings:ConnectionString"))); +builder.Services.AddScoped<IUserService, UserService>(); + builder.Services.AddControllers(); // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle builder.Services.AddEndpointsApiExplorer(); diff --git a/Backend/Api/Api/Services/UserService.cs b/Backend/Api/Api/Services/UserService.cs new file mode 100644 index 0000000..787cf6a --- /dev/null +++ b/Backend/Api/Api/Services/UserService.cs @@ -0,0 +1,58 @@ +using Api.Interfaces; +using Api.Models; +using MongoDB.Driver; + +namespace Api.Services +{ + public class UserService : IUserService + { + private readonly IMongoCollection<User> _users; + public UserService(IDatabaseConnection settings, IMongoClient mongoClient) + { + var database = mongoClient.GetDatabase(settings.DatabaseName); + _users = database.GetCollection<User>(settings.UserCollectionName); + + } + + public User createUser(User user) + { + _users.InsertOne(user); + return user; + } + + public bool deleteUser(string email) + { + _users.FindOneAndDelete(x => x.email == email); + return true; + } + + public User getUserByEmail(string email) + { + return _users.Find(x => x.email == email).First(); + } + + public User getUserByUsername(string username) + { + return _users.Find(x => x.username == username).First(); + } + + public List<User> getUsers() + { + return _users.Find(_=>true).ToList(); + } + + public User updateUser(User user) + { + /* + * ovako je odradjeno da bi radilo i kada se posalje potpuno novi objekat User-a bez generisanog _id polja + */ + User foundUser = _users.Find(x => x.email == user.email).First(); + if (foundUser!=null && user._id==null) + { + user._id = foundUser._id; + } + _users.ReplaceOne(x => x.email == user.email, user); + return user; + } + } +} diff --git a/Backend/Api/Api/appsettings.json b/Backend/Api/Api/appsettings.json index c2cbe28..e02ac8d 100644 --- a/Backend/Api/Api/appsettings.json +++ b/Backend/Api/Api/appsettings.json @@ -9,7 +9,8 @@ "DatabaseSettings": { "ConnectionString": "mongodb://127.0.0.1:27017/", - "DatabaseName": "Odyssey" + "DatabaseName": "Odyssey", + "UserCollectionName": "users" } } |