profile crud complete, keeps, halfway
This commit is contained in:
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 245 KiB |
@@ -0,0 +1 @@
|
||||
<!-- <a href="https://www.freepik.com/vectors/404">404 vector created by freepik - www.freepik.com</a> -->
|
||||
@@ -0,0 +1,54 @@
|
||||
using System.Collections.Generic;
|
||||
using keepr.Models;
|
||||
using keepr.Services;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using CodeWorks.Auth0Provider;
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
|
||||
namespace keepr.Controllers
|
||||
{
|
||||
[ApiController]
|
||||
[Route("api/[controller]")]
|
||||
public class KeepsController : ControllerBase
|
||||
{
|
||||
private readonly KeepsService _ks;
|
||||
public KeepsController(KeepsService ks)
|
||||
{
|
||||
_ks = ks;
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
[Authorize]
|
||||
public async Task<ActionResult<Keep>> Create([FromBody] Keep keep)
|
||||
{
|
||||
try
|
||||
{
|
||||
Account userInfo = await HttpContext.GetUserInfoAsync<Account>();
|
||||
keep.CreatorId = userInfo.Id;
|
||||
Keep newKeep = _ks.Create(keep);
|
||||
return Ok(newKeep);
|
||||
}
|
||||
catch (System.Exception e)
|
||||
{
|
||||
return BadRequest(e.Message);
|
||||
}
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
public ActionResult<List<Keep>> GetAll()
|
||||
{
|
||||
try
|
||||
{
|
||||
List<Keep> keeps = _ks.GetAll();
|
||||
return Ok(keeps);
|
||||
}
|
||||
catch (System.Exception e)
|
||||
{
|
||||
return BadRequest(e.Message);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,67 @@
|
||||
using System.Collections.Generic;
|
||||
using keepr.Models;
|
||||
using keepr.Services;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace keepr.Controllers
|
||||
{
|
||||
// Establish endpoint path
|
||||
[ApiController]
|
||||
[Route("api/[controller]")]
|
||||
public class ProfilesController : ControllerBase
|
||||
{
|
||||
// 'Instantiate' ProfilesService
|
||||
private readonly ProfilesService _ps;
|
||||
private readonly KeepsService _ks;
|
||||
private readonly VaultsService _vs;
|
||||
public ProfilesController(ProfilesService ps, KeepsService ks, VaultsService vs)
|
||||
{
|
||||
_ps = ps;
|
||||
_ks = ks;
|
||||
_vs = vs;
|
||||
}
|
||||
|
||||
// Get Profile by Id endpoint
|
||||
[HttpGet("{id}")]
|
||||
public ActionResult<Profile> Get(string id)
|
||||
{
|
||||
try
|
||||
{
|
||||
Profile profile = _ps.Get(id);
|
||||
return Ok(profile);
|
||||
}
|
||||
catch (System.Exception e)
|
||||
{
|
||||
return BadRequest(e.Message);
|
||||
}
|
||||
}
|
||||
|
||||
[HttpGet("{id}/keeps")]
|
||||
public ActionResult<List<Keep>> GetKeeps(string id)
|
||||
{
|
||||
try
|
||||
{
|
||||
List<Keep> keeps = _ks.GetProfileKeeps(id);
|
||||
return Ok(keeps);
|
||||
}
|
||||
catch (System.Exception e)
|
||||
{
|
||||
return BadRequest(e.Message);
|
||||
}
|
||||
}
|
||||
|
||||
[HttpGet("{id}/vaults")]
|
||||
public ActionResult<List<Vault>> GetProfileVaults(string id)
|
||||
{
|
||||
try
|
||||
{
|
||||
List<Vault> vaults = _vs.GetProfileVaults(id);
|
||||
return Ok(vaults);
|
||||
}
|
||||
catch (System.Exception e)
|
||||
{
|
||||
return BadRequest(e.Message);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -7,17 +7,21 @@ namespace keepr.Models
|
||||
public class Keep
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public string creatorId { get; set; }
|
||||
public string CreatorId { get; set; }
|
||||
public string Name { get; set; }
|
||||
public string Description { get; set; }
|
||||
public string Img { get; set; }
|
||||
public int Views { get; set; }
|
||||
public int Kept { get; set; }
|
||||
public Profile Creator { get; set; }
|
||||
|
||||
// populate creator?
|
||||
|
||||
// shares int - stretch goal
|
||||
}
|
||||
|
||||
public class
|
||||
// public class KeepVaultViewModel : Keep
|
||||
// {
|
||||
// public int MyProperty { get; set; }
|
||||
// }
|
||||
}
|
||||
@@ -11,5 +11,12 @@ namespace keepr.Models
|
||||
public string Description { get; set; }
|
||||
public bool IsPrivate { get; set; }
|
||||
|
||||
public Account Creator { get; set; }
|
||||
|
||||
}
|
||||
|
||||
public class VaultKeepViewModel : Vault
|
||||
{
|
||||
public Keep VaultKeep { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,67 @@
|
||||
using keepr.Controllers;
|
||||
using keepr.Models;
|
||||
using keepr.Repositories;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using keepr.Services;
|
||||
using CodeWorks.Auth0Provider;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Dapper;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
|
||||
|
||||
namespace keepr.Repositories
|
||||
{
|
||||
public class KeepsRepository
|
||||
{
|
||||
// Connect to Dapper
|
||||
private readonly IDbConnection _db;
|
||||
public KeepsRepository(IDbConnection db)
|
||||
{
|
||||
_db = db;
|
||||
}
|
||||
|
||||
public List<Keep> GetProfileKeeps(string id)
|
||||
{
|
||||
string sql = @"
|
||||
SELECT *
|
||||
FROM keeps
|
||||
WHERE creatorId = @id;
|
||||
";
|
||||
return _db.Query<Keep>(sql, new {id}).ToList();
|
||||
}
|
||||
|
||||
public Keep Create(Keep keep)
|
||||
{
|
||||
string sql = @"
|
||||
INSERT INTO keeps
|
||||
(creatorId, name, description, img)
|
||||
VALUES
|
||||
(@CreatorId, @Name, @Description, @Img);
|
||||
SELECT LAST_INSERT_ID();
|
||||
";
|
||||
keep.Id = _db.ExecuteScalar<int>(sql, keep);
|
||||
return keep;
|
||||
}
|
||||
|
||||
public List<Keep> GetAll()
|
||||
{
|
||||
string sql = @"
|
||||
SELECT
|
||||
a.*,
|
||||
k.*
|
||||
FROM keeps k
|
||||
JOIN accounts a
|
||||
ON a.id = k.creatorId;
|
||||
";
|
||||
return _db.Query<Profile, Keep, Keep>(sql, (prof, keep) =>
|
||||
{
|
||||
keep.Creator = prof;
|
||||
return keep;
|
||||
}).ToList();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using keepr.Models;
|
||||
using keepr.Services;
|
||||
using keepr.Repositories;
|
||||
using CodeWorks.Auth0Provider;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Dapper;
|
||||
using System.Data;
|
||||
|
||||
namespace keepr.Repositories
|
||||
{
|
||||
public class ProfilesRepository
|
||||
{
|
||||
// Connect to Dapper
|
||||
private readonly IDbConnection _db;
|
||||
public ProfilesRepository(IDbConnection db)
|
||||
{
|
||||
_db = db;
|
||||
}
|
||||
|
||||
public Profile Get(string id)
|
||||
{
|
||||
string sql = @"
|
||||
SELECT *
|
||||
FROM accounts
|
||||
WHERE id = @id;";
|
||||
return _db.QueryFirstOrDefault<Profile>(sql, new {id});
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
using keepr.Controllers;
|
||||
using keepr.Models;
|
||||
using keepr.Repositories;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using keepr.Services;
|
||||
using CodeWorks.Auth0Provider;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Dapper;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
|
||||
namespace keepr.Repositories
|
||||
{
|
||||
public class VaultsRepository
|
||||
{
|
||||
private readonly IDbConnection _db;
|
||||
public VaultsRepository(IDbConnection db)
|
||||
{
|
||||
_db = db;
|
||||
}
|
||||
|
||||
internal List<Vault> GetProfileVaults(string id)
|
||||
{
|
||||
string sql = @"
|
||||
SELECT *
|
||||
FROM vaults
|
||||
WHERE creatorId = @id
|
||||
AND isPrivate = 0;";
|
||||
return _db.Query<Vault>(sql, new {id}).ToList();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
using keepr.Controllers;
|
||||
using keepr.Models;
|
||||
using keepr.Repositories;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using keepr.Services;
|
||||
using CodeWorks.Auth0Provider;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace keepr.Services
|
||||
{
|
||||
public class KeepsService
|
||||
{
|
||||
private readonly KeepsRepository _repo;
|
||||
public KeepsService(KeepsRepository repo)
|
||||
{
|
||||
_repo = repo;
|
||||
}
|
||||
|
||||
internal List<Keep> GetProfileKeeps(string id)
|
||||
{
|
||||
return _repo.GetProfileKeeps(id);
|
||||
}
|
||||
|
||||
internal Keep Create(Keep keep)
|
||||
{
|
||||
Keep newKeep = _repo.Create(keep);
|
||||
return newKeep;
|
||||
}
|
||||
|
||||
internal List<Keep> GetAll()
|
||||
{
|
||||
List<Keep> keeps = _repo.GetAll();
|
||||
return keeps;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using keepr.Models;
|
||||
using keepr.Services;
|
||||
using keepr.Repositories;
|
||||
using CodeWorks.Auth0Provider;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace keepr.Services
|
||||
{
|
||||
public class ProfilesService
|
||||
{
|
||||
// 'Instantiate' ProfilesRepository
|
||||
private readonly ProfilesRepository _repo;
|
||||
public ProfilesService(ProfilesRepository repo)
|
||||
{
|
||||
_repo = repo;
|
||||
}
|
||||
|
||||
public Profile Get(string id)
|
||||
{
|
||||
Profile foundProfile = _repo.Get(id);
|
||||
if (foundProfile == null)
|
||||
{
|
||||
throw new Exception("Profile not found");
|
||||
}
|
||||
return foundProfile;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
using keepr.Controllers;
|
||||
using keepr.Models;
|
||||
using keepr.Repositories;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using keepr.Services;
|
||||
using CodeWorks.Auth0Provider;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace keepr.Services
|
||||
{
|
||||
public class VaultsService
|
||||
{
|
||||
private readonly VaultsRepository _repo;
|
||||
public VaultsService(VaultsRepository repo)
|
||||
{
|
||||
_repo = repo;
|
||||
}
|
||||
|
||||
internal List<Vault> GetProfileVaults(string id)
|
||||
{
|
||||
return _repo.GetProfileVaults(id);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -42,6 +42,15 @@ namespace keepr
|
||||
|
||||
services.AddScoped<AccountsRepository>();
|
||||
services.AddScoped<AccountService>();
|
||||
|
||||
services.AddScoped<ProfilesRepository>();
|
||||
services.AddScoped<ProfilesService>();
|
||||
|
||||
services.AddScoped<KeepsRepository>();
|
||||
services.AddScoped<KeepsService>();
|
||||
|
||||
services.AddScoped<VaultsRepository>();
|
||||
services.AddScoped<VaultsService>();
|
||||
}
|
||||
|
||||
private void ConfigureCors(IServiceCollection services)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"CONNECTION_STRING": "server=SG-Azula-6401-mysql-master.servers.mongodirector.com;port=3306;database=keepr;user id=keepr;password=sPZ6wy4nbfHj!NE;",
|
||||
"CONNECTION_STRING": "server=SG-Azula-6401-mysql-master.servers.mongodirector.com;port=3306;database=keepr;user id=keepr;password=PWMsucks123!;",
|
||||
"AUTH0_DOMAIN": "dev-h9kk6tgd.us.auth0.com",
|
||||
"AUTH0_AUDIENCE": "https://AnniDev.com"
|
||||
}
|
||||
|
||||
@@ -6,3 +6,40 @@ CREATE TABLE IF NOT EXISTS accounts(
|
||||
email varchar(255) COMMENT 'User Email',
|
||||
picture varchar(255) COMMENT 'User Picture'
|
||||
) default charset utf8 COMMENT '';
|
||||
|
||||
SELECT * FROM keepr.accounts;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS vaultKeeps(
|
||||
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT 'primary key',
|
||||
creatorId VARCHAR(255) NOT NULL COMMENT 'id of vault creator',
|
||||
vaultId INT NOT NULL COMMENT 'ID of vault this keep is in',
|
||||
keepId INT NOT NULL COMMENT 'ID of keep'
|
||||
) default charset utf8;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS vaults(
|
||||
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT 'primary key',
|
||||
creatorId VARCHAR(255) NOT NULL COMMENT 'id of vault creator',
|
||||
name VARCHAR(255) NOT NULL COMMENT 'name of vault',
|
||||
description VARCHAR(255) COMMENT 'description of vault'
|
||||
idPrivate TINYINT DEFAULT 0 COMMENT 'flag for if vault is private'
|
||||
) default charset utf8;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS keeps(
|
||||
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT 'primary key',
|
||||
creatorId VARCHAR(255) NOT NULL COMMENT 'id of keep creator',
|
||||
name VARCHAR(255) NOT NULL COMMENT 'name of keep',
|
||||
description VARCHAR(255) COMMENT 'description of keep',
|
||||
img VARCHAR(255) DEFAULT 'assets/img/404.svg' COMMENT 'URL of image',
|
||||
views INT DEFAULT 0 COMMENT 'Number of views',
|
||||
kept INT DEFAULT 0 COMMENT 'Number of times added to a vault'
|
||||
) default charset utf8;
|
||||
|
||||
|
||||
SELECT *
|
||||
FROM accounts
|
||||
WHERE id = '62df16f445a8ad25b2c9485c';
|
||||
|
||||
SELECT *
|
||||
FROM vaults
|
||||
WHERE creatorId = '62df16f445a8ad25b2c9485c'
|
||||
AND isPrivate = 0;
|
||||
Reference in New Issue
Block a user