Add items crud to api

This commit is contained in:
2026-03-21 20:20:02 -05:00
parent cda10dfaa4
commit a9b4d136d5
12 changed files with 461 additions and 70 deletions

View File

@@ -14,14 +14,12 @@ public class AuthController : ControllerBase {
private readonly UserManager<User> userManager_;
private readonly SignInManager<User> signInManager_;
private readonly UserService users_;
private readonly JwtService jwt_;
public AuthController(UserManager<User> userManager, SignInManager<User> signInManager, UserService users, JwtService jwt) {
public AuthController(UserManager<User> userManager, SignInManager<User> signInManager, JwtService jwt) {
userManager_ = userManager;
signInManager_ = signInManager;
users_ = users;
jwt_ = jwt;
}

View File

@@ -7,39 +7,39 @@ using agologumApi.Services;
[ApiController]
[Route("api/[controller]")]
public class UsersController : ControllerBase {
public class ItemsController : ControllerBase {
private readonly UserService service_;
private readonly ItemService service_;
public UsersController(UserService service) {
public ItemsController(ItemService service) {
service_ = service;
}
[AllowAnonymous] // accessible if not authorized
[HttpGet]
public async Task<ActionResult<List<User>>> getUsers() {
public async Task<ActionResult<List<Item>>> getItemss() {
return Ok(await service_.GetAll());
}
[AllowAnonymous]
[HttpGet("{id:int}")]
public async Task<ActionResult<User>> getUser(int id) {
public async Task<ActionResult<Item>> getItem(int id) {
var user = await service_.Get(id);
var item = await service_.Get(id);
if (user == null) return NotFound();
if (item == null) return NotFound();
return Ok(user);
return Ok(item);
}
[Authorize] // testing the authorization
[HttpPost]
public async Task<ActionResult<User>> createUser(User user) {
public async Task<ActionResult<Item>> createItem(Item item) {
var created = await service_.Create(user);
var created = await service_.Create(item);
return CreatedAtAction(
nameof(getUser),
nameof(getItem),
new { id = created.Id },
created
);
@@ -47,9 +47,9 @@ public class UsersController : ControllerBase {
[Authorize]
[HttpPut("{id}")]
public async Task<ActionResult<User>> updateUser(int id, User user) {
public async Task<ActionResult<Item>> updateItem(int id, Item item) {
var updated = await service_.Update(user);
var updated = await service_.Update(item);
if (updated == null) return NotFound();
@@ -58,7 +58,7 @@ public class UsersController : ControllerBase {
[Authorize]
[HttpDelete("{id}")]
public async Task<ActionResult> deleteUser(int id) {
public async Task<ActionResult> deleteItem(int id) {
var success = await service_.Delete(id);

View File

@@ -10,4 +10,7 @@ public class AppDbContext : IdentityDbContext<User> {
}
// Db set for each model besides Users (DbSet<template> is already defined in IdenityDbContext<template>)
public DbSet<Item> Items { get; set; }
}

View File

@@ -13,3 +13,10 @@ public class LoginDto {
public string Password { get; set; } = "";
}
public class ItemDto {
public String Name { get; set; } = "";
public String Description { get; set; } = "";
}

12
api/src/Models/Item.cs Normal file
View File

@@ -0,0 +1,12 @@
namespace agologumApi.Models;
public class Item {
public int Id { get; set; }
public String Name { get; set; } = "";
public String Description { get; set; } = "";
public DateTime CreatedAt { get; set; }
public DateTime LastEditedAt { get; set; }
};

View File

@@ -0,0 +1,51 @@
using Microsoft.EntityFrameworkCore;
using agologumApi.Models;
namespace agologumApi.Services;
public class ItemService {
private readonly AppDbContext db_;
public ItemService(AppDbContext db) {
db_ = db;
}
public async Task<List<Item>> GetAll() {
return await db_.Items.ToListAsync();
}
public async Task<Item?> Get(int id) {
return await db_.Items.FindAsync(id);
}
public async Task<Item?> Get(string name) {
return await db_.Items.FirstOrDefaultAsync(u => u.Name == name);
}
public async Task<Item> Create(Item item) {
db_.Items.Add(item);
await db_.SaveChangesAsync();
return item;
}
public async Task<Item> Update(Item item) {
db_.Items.Update(item);
await db_.SaveChangesAsync();
return item;
}
public async Task<bool> Delete(int id) {
Item? item = await db_.Items.FindAsync(id);
if(item != null) {
db_.Items.Remove(item);
await db_.SaveChangesAsync();
return true;
} else {
return false;
}
}
}

View File

@@ -1,51 +0,0 @@
using Microsoft.EntityFrameworkCore;
using agologumApi.Models;
namespace agologumApi.Services;
public class UserService {
private readonly AppDbContext db_;
public UserService(AppDbContext db) {
db_ = db;
}
public async Task<List<User>> GetAll() {
return await db_.Users.ToListAsync();
}
public async Task<User?> Get(int id) {
return await db_.Users.FindAsync(id);
}
public async Task<User?> Get(string username) {
return await db_.Users.FirstOrDefaultAsync(u => u.UserName == username);
}
public async Task<User> Create(User user) {
db_.Users.Add(user);
await db_.SaveChangesAsync();
return user;
}
public async Task<User> Update(User user) {
db_.Users.Update(user);
await db_.SaveChangesAsync();
return user;
}
public async Task<bool> Delete(int id) {
User? user = await db_.Users.FindAsync(id);
if(user != null) {
db_.Users.Remove(user);
await db_.SaveChangesAsync();
return true;
} else {
return false;
}
}
}