Files
keepr/keepr/Repositories/VaultsRepository.cs
T

101 lines
2.2 KiB
C#

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();
}
internal List<Vault> GetMyVaults(string id)
{
string sql = @"
SELECT *
FROM vaults
WHERE creatorId = @id;";
return _db.Query<Vault>(sql, new {id}).ToList();
}
internal Vault Create(Vault vaultData)
{
string sql = @"
INSERT INTO vaults
(creatorId, name, description, isPrivate)
VALUES
(@CreatorId, @Name, @Description, @IsPrivate);
SELECT LAST_INSERT_ID();
";
vaultData.Id = _db.ExecuteScalar<int>(sql, vaultData);
return vaultData;
}
internal Vault GetById(int id)
{
string sql = @"
SELECT
a.*,
v.*
FROM vaults v
JOIN accounts a
ON v.creatorId = a.id
WHERE v.id = @id;
";
return _db.Query<Profile, Vault, Vault>(sql, (prof, vaul) =>
{
vaul.Creator = prof;
return vaul;
}, new {id}).FirstOrDefault();
}
internal Vault Update(Vault update)
{
string sql = @"
UPDATE vaults
SET
name = @Name,
description = @Description,
isPrivate = @IsPrivate
WHERE id = @Id;
";
_db.Execute(sql, update);
return update;
}
internal int Remove(int vaultId)
{
string sql = @"
DELETE FROM vaults
WHERE id = @vaultId
LIMIT 1;
";
_db.Execute(sql, new {vaultId});
return vaultId;
}
}
}