From 6732613466845a426528c8aaf71b3828cdedfa81 Mon Sep 17 00:00:00 2001 From: shept Date: Tue, 25 Mar 2025 22:05:28 +0500 Subject: [PATCH] idk something about efcore --- .../SurveyBackend.API/DTOs/UserLoginDTO.cs | 7 +++ .../DTOs/UserRegistrationDTO.cs | 10 +++++ .../SurveyBackend.Core/Models/User.cs | 2 + .../Repositories/IGenericRepository.cs | 10 +++++ .../Repositories/IUserRepository.cs | 7 +++ .../Data/DataContext.cs | 15 +++++++ .../Repositories/UserRepository.cs | 44 +++++++++++++++++++ .../SurveyBackend.Infrastructure.csproj | 8 ++++ 8 files changed, 103 insertions(+) create mode 100644 SurveyBackend/SurveyBackend.API/DTOs/UserLoginDTO.cs create mode 100644 SurveyBackend/SurveyBackend.API/DTOs/UserRegistrationDTO.cs create mode 100644 SurveyBackend/SurveyBackend.Core/Repositories/IGenericRepository.cs create mode 100644 SurveyBackend/SurveyBackend.Core/Repositories/IUserRepository.cs create mode 100644 SurveyBackend/SurveyBackend.Infrastructure/Data/DataContext.cs create mode 100644 SurveyBackend/SurveyBackend.Infrastructure/Repositories/UserRepository.cs diff --git a/SurveyBackend/SurveyBackend.API/DTOs/UserLoginDTO.cs b/SurveyBackend/SurveyBackend.API/DTOs/UserLoginDTO.cs new file mode 100644 index 0000000..a6125a7 --- /dev/null +++ b/SurveyBackend/SurveyBackend.API/DTOs/UserLoginDTO.cs @@ -0,0 +1,7 @@ +namespace SurveyBackend.DTOs; + +public record UserLoginDTO +{ + public string Email { get; set; } + public string Password { get; set; } +} \ No newline at end of file diff --git a/SurveyBackend/SurveyBackend.API/DTOs/UserRegistrationDTO.cs b/SurveyBackend/SurveyBackend.API/DTOs/UserRegistrationDTO.cs new file mode 100644 index 0000000..b3013db --- /dev/null +++ b/SurveyBackend/SurveyBackend.API/DTOs/UserRegistrationDTO.cs @@ -0,0 +1,10 @@ +namespace SurveyBackend.DTOs; + +public record UserRegistrationDTO +{ + public string Email { get; set; } + public string Username { get; set; } + public string FirstName { get; set; } + public string LastName { get; set; } + public string Password { get; set; } +} \ No newline at end of file diff --git a/SurveyBackend/SurveyBackend.Core/Models/User.cs b/SurveyBackend/SurveyBackend.Core/Models/User.cs index fd8e2fd..0f57f37 100644 --- a/SurveyBackend/SurveyBackend.Core/Models/User.cs +++ b/SurveyBackend/SurveyBackend.Core/Models/User.cs @@ -3,6 +3,8 @@ namespace SurveyBackend.Core.Models; public class User { public int Id { get; set; } + public string FirstName { get; set; } + public string LastName { get; set; } public string Username { get; set; } public string Email { get; set; } diff --git a/SurveyBackend/SurveyBackend.Core/Repositories/IGenericRepository.cs b/SurveyBackend/SurveyBackend.Core/Repositories/IGenericRepository.cs new file mode 100644 index 0000000..228d3b1 --- /dev/null +++ b/SurveyBackend/SurveyBackend.Core/Repositories/IGenericRepository.cs @@ -0,0 +1,10 @@ +namespace SurveyBackend.Core.Repositories; + +public interface IGenericRepository where T : class +{ + Task GetByIdAsync(int id); + Task> GetAllAsync(); + Task AddAsync(T entity); + Task UpdateAsync(T entity); + Task DeleteAsync(T entity); +} \ No newline at end of file diff --git a/SurveyBackend/SurveyBackend.Core/Repositories/IUserRepository.cs b/SurveyBackend/SurveyBackend.Core/Repositories/IUserRepository.cs new file mode 100644 index 0000000..791059a --- /dev/null +++ b/SurveyBackend/SurveyBackend.Core/Repositories/IUserRepository.cs @@ -0,0 +1,7 @@ +using SurveyBackend.Core.Models; + +namespace SurveyBackend.Core.Repositories; + +public interface IUserRepository : IGenericRepository +{ +} \ No newline at end of file diff --git a/SurveyBackend/SurveyBackend.Infrastructure/Data/DataContext.cs b/SurveyBackend/SurveyBackend.Infrastructure/Data/DataContext.cs new file mode 100644 index 0000000..26cabc9 --- /dev/null +++ b/SurveyBackend/SurveyBackend.Infrastructure/Data/DataContext.cs @@ -0,0 +1,15 @@ +using Microsoft.EntityFrameworkCore; +using SurveyBackend.Core.Models; + +namespace SurveyBackend.Infrastructure.Data; + +public class DataContext : DbContext +{ + public DbSet Users { get; set; } + public DbSet Groups { get; set; } + + public DataContext(DbContextOptions options) : base(options) + { + Database.EnsureCreated(); + } +} \ No newline at end of file diff --git a/SurveyBackend/SurveyBackend.Infrastructure/Repositories/UserRepository.cs b/SurveyBackend/SurveyBackend.Infrastructure/Repositories/UserRepository.cs new file mode 100644 index 0000000..306872e --- /dev/null +++ b/SurveyBackend/SurveyBackend.Infrastructure/Repositories/UserRepository.cs @@ -0,0 +1,44 @@ +using Microsoft.EntityFrameworkCore; +using SurveyBackend.Core.Models; +using SurveyBackend.Core.Repositories; +using SurveyBackend.Infrastructure.Data; + +namespace SurveyBackend.Infrastructure.Repositories; + +public class UserRepository : IUserRepository +{ + private readonly DataContext _context; + + public UserRepository(DataContext context) + { + _context = context; + } + + public async Task GetByIdAsync(int id) + { + return await _context.Users.FindAsync(id); + } + + public async Task> GetAllAsync() + { + return await _context.Users.ToListAsync(); + } + + public async Task AddAsync(User entity) + { + await _context.Users.AddAsync(entity); + await _context.SaveChangesAsync(); + } + + public async Task UpdateAsync(User entity) + { + _context.Users.Update(entity); + await _context.SaveChangesAsync(); + } + + public async Task DeleteAsync(User entity) + { + _context.Users.Remove(entity); + await _context.SaveChangesAsync(); + } +} \ No newline at end of file diff --git a/SurveyBackend/SurveyBackend.Infrastructure/SurveyBackend.Infrastructure.csproj b/SurveyBackend/SurveyBackend.Infrastructure/SurveyBackend.Infrastructure.csproj index 3a63532..eeefcab 100644 --- a/SurveyBackend/SurveyBackend.Infrastructure/SurveyBackend.Infrastructure.csproj +++ b/SurveyBackend/SurveyBackend.Infrastructure/SurveyBackend.Infrastructure.csproj @@ -6,4 +6,12 @@ enable + + + + + + + +