Changes in / [c0a75ab:aed1148]


Ignore:
Location:
iknow-api
Files:
5 added
4 deleted
6 edited

Legend:

Unmodified
Added
Removed
  • iknow-api/Controllers/UsersControllers.cs

    rc0a75ab raed1148  
    1 //using iknow_api.Data;
    2 using iknow_api.Models;
     1using iknow_api.Core.Models;
    32using System.Threading.Tasks;
    43using Microsoft.AspNetCore.Mvc;
    5 
     4using iknow_api.Core.Data;
     5using iknow_api.Repository.Interfaces;
     6using iknow_api.Core.Interfaces;
    67
    78namespace iknow_api.Controllers
    … …  
    1112    public class UsersController : ControllerBase
    1213    {
    13         private readonly AppDbContext _context;
    14         private readonly IConfiguration _configuration;
     14        private readonly IUserService _users;
    1515
    16         public UsersController(AppDbContext context, IConfiguration configuration)
     16        public UsersController(IUserService users)
    1717        {
    18             _context = context;
    19             _configuration = configuration;
     18            _users = users;
    2019        }
    2120
    2221        [HttpPost("add")]
    23         public async Task<IActionResult> Add([FromBody] JsonContent body)
     22        public async Task<IActionResult> Add([FromBody] User user)
    2423        {
    25            
    26             return null;
     24            var created = await _users.AddUserAsync(user);
     25            return Ok(created);
    2726        }
    2827
     28        [HttpGet("id/{id}")]
     29        public async Task<IActionResult> GetById(int id)
     30        {
     31            var user = await _users.GetUserByIdAsync(id);
     32            if (user == null)
     33                return NotFound();
     34            return Ok(user);
     35        }
    2936    }
    3037}
  • iknow-api/Data/AppDbContext.cs

    rc0a75ab raed1148  
    11using Microsoft.EntityFrameworkCore;
    2 using iknow_api.Models;
     2using iknow_api.Core.Models;
    33
    4 public class AppDbContext : DbContext
     4namespace iknow_api.Core.Data
    55{
    6     public AppDbContext(DbContextOptions<AppDbContext> options)
    7         : base(options) { }
     6    public class AppDbContext : DbContext
     7    {
     8        public AppDbContext(DbContextOptions<AppDbContext> options)
     9            : base(options) { }
    810
    9     public DbSet<Users> Users { get; set; }
     11        public DbSet<User> User { get; set; }
     12    }
    1013}
  • iknow-api/Migrations/AppDbContextModelSnapshot.cs

    rc0a75ab raed1148  
    55using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
    66using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
     7using iknow_api.Core.Data;
    78
    89#nullable disable
    … …  
    2223            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
    2324
    24             modelBuilder.Entity("iknow_api.Models.Users", b =>
     25            modelBuilder.Entity("iknow_api.Core.Models.User", b =>
    2526                {
    2627                    b.Property<int>("Id")
    … …  
    5657                    b.HasKey("Id");
    5758
    58                     b.ToTable("Users");
     59                    b.ToTable("User");
    5960                });
    6061#pragma warning restore 612, 618
  • iknow-api/Program.cs

    rc0a75ab raed1148  
    11using Microsoft.EntityFrameworkCore;
     2using iknow_api.Core.Data;
    23
    34var builder = WebApplication.CreateBuilder(args);
    … …  
    910builder.Services.AddOpenApi();
    1011
     12
    1113builder.Services.AddDbContext<AppDbContext>(options =>
    1214    options.UseNpgsql(builder.Configuration.GetConnectionString("DefaultConnection")));
     15
     16builder.Services.AddScoped<iknow_api.Repository.Interfaces.IUserRepository, iknow_api.Repository.UserRepository>();
    1317
    1418var app = builder.Build();
    … …  
    2024}
    2125
    22 
     26builder.Services.AddDbContext<AppDbContext>(options =>
     27    options.UseNpgsql(builder.Configuration.GetConnectionString("DefaultConnection")));
    2328
    2429   
  • iknow-api/Services/Implementations/UserService.cs

    rc0a75ab raed1148  
    1 using Microsoft.AspNetCore.Mvc;
     1using Microsoft.EntityFrameworkCore;
     2using iknow_api.Core.Models;
     3using iknow_api.Repository.Interfaces;
     4// ...existing code...
    25
    36namespace iknow_api.Core.Services
    … …  
    58    public class UserService
    69    {
    7         private readonly AppDbContext _context;
     10        private readonly IUserRepository _users;
    811
    9         public UserService(AppDbContext context)
     12        public UserService(IUserRepository users)
    1013        {
    11             _context = context;
     14            _users = users;
    1215        }
    1316
     17        public async Task<User> AddUserAsync(User user, CancellationToken cancellationToken = default)
     18        {
     19            if (user == null) throw new ArgumentNullException(nameof(user));
    1420
     21            if (!string.IsNullOrWhiteSpace(user.Email))
     22            {
     23                user.Email = user.Email.Trim();
     24
     25                var exists = await _users.EmailExistsAsync(user.Email, cancellationToken);
     26                if (exists)
     27                    throw new InvalidOperationException("A user with this email already exists.");
     28            }
     29
     30            return await _users.AddUserAsync(user, cancellationToken);
     31        }
    1532    }
    1633}
  • iknow-api/Services/Interfaces/IUserService.cs

    rc0a75ab raed1148  
     1using System.Threading;
     2using System.Threading.Tasks;
     3using iknow_api.Core.Models;
    14
    25namespace iknow_api.Core.Interfaces
    … …  
    47    public interface IUserService
    58    {
    6         Task<JsonContent> AddUser(JsonContent newUser);
     9        Task<User> AddUserAsync(User user, CancellationToken cancellationToken = default);
     10        Task<int> GetUserByIdAsync(int id, CancellationToken cancellationToken = default);
    711    }
    812}
Note: See TracChangeset for help on using the changeset viewer.