Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

added caching and normalized db #5

Open
wants to merge 5 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
76 changes: 38 additions & 38 deletions data/createdatabase.sql
Original file line number Diff line number Diff line change
@@ -1,115 +1,115 @@
USE [master]
GO

/****** Object: Database [sql101.firstname.lastname] Script Date: 1/21/2019 9:11:50 PM ******/
CREATE DATABASE [sql101.firstname.lastname]
/****** Object: Database [sql101.simtembile.soginga] Script Date: 1/21/2019 9:11:50 PM ******/
CREATE DATABASE [sql101.simtembile.soginga]
CONTAINMENT = NONE
ON PRIMARY
( NAME = N'sql101.firstname.lastname', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\sql101.firstname.lastname.mdf' , SIZE = 8192KB , MAXSIZE = UNLIMITED, FILEGROWTH = 65536KB )
( NAME = N'sql101.simtembile.soginga', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\sql101.simtembile.soginga.mdf' , SIZE = 8192KB , MAXSIZE = UNLIMITED, FILEGROWTH = 65536KB )
LOG ON
( NAME = N'sql101.firstname.lastname_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\sql101.firstname.lastname_log.ldf' , SIZE = 8192KB , MAXSIZE = 2048GB , FILEGROWTH = 65536KB )
( NAME = N'sql101.simtembile.soginga_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\sql101.simtembile.soginga_log.ldf' , SIZE = 8192KB , MAXSIZE = 2048GB , FILEGROWTH = 65536KB )
GO

ALTER DATABASE [sql101.firstname.lastname] SET COMPATIBILITY_LEVEL = 130
ALTER DATABASE [sql101.simtembile.soginga] SET COMPATIBILITY_LEVEL = 130
GO

IF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled'))
begin
EXEC [sql101.firstname.lastname].[dbo].[sp_fulltext_database] @action = 'enable'
EXEC [sql101.simtembile.soginga].[dbo].[sp_fulltext_database] @action = 'enable'
end
GO

ALTER DATABASE [sql101.firstname.lastname] SET ANSI_NULL_DEFAULT OFF
ALTER DATABASE [sql101.simtembile.soginga] SET ANSI_NULL_DEFAULT OFF
GO

ALTER DATABASE [sql101.firstname.lastname] SET ANSI_NULLS OFF
ALTER DATABASE [sql101.simtembile.soginga] SET ANSI_NULLS OFF
GO

ALTER DATABASE [sql101.firstname.lastname] SET ANSI_PADDING OFF
ALTER DATABASE [sql101.simtembile.soginga] SET ANSI_PADDING OFF
GO

ALTER DATABASE [sql101.firstname.lastname] SET ANSI_WARNINGS OFF
ALTER DATABASE [sql101.simtembile.soginga] SET ANSI_WARNINGS OFF
GO

ALTER DATABASE [sql101.firstname.lastname] SET ARITHABORT OFF
ALTER DATABASE [sql101.simtembile.soginga] SET ARITHABORT OFF
GO

ALTER DATABASE [sql101.firstname.lastname] SET AUTO_CLOSE OFF
ALTER DATABASE [sql101.simtembile.soginga] SET AUTO_CLOSE OFF
GO

ALTER DATABASE [sql101.firstname.lastname] SET AUTO_SHRINK OFF
ALTER DATABASE [sql101.simtembile.soginga] SET AUTO_SHRINK OFF
GO

ALTER DATABASE [sql101.firstname.lastname] SET AUTO_UPDATE_STATISTICS ON
ALTER DATABASE [sql101.simtembile.soginga] SET AUTO_UPDATE_STATISTICS ON
GO

ALTER DATABASE [sql101.firstname.lastname] SET CURSOR_CLOSE_ON_COMMIT OFF
ALTER DATABASE [sql101.simtembile.soginga] SET CURSOR_CLOSE_ON_COMMIT OFF
GO

ALTER DATABASE [sql101.firstname.lastname] SET CURSOR_DEFAULT GLOBAL
ALTER DATABASE [sql101.simtembile.soginga] SET CURSOR_DEFAULT GLOBAL
GO

ALTER DATABASE [sql101.firstname.lastname] SET CONCAT_NULL_YIELDS_NULL OFF
ALTER DATABASE [sql101.simtembile.soginga] SET CONCAT_NULL_YIELDS_NULL OFF
GO

ALTER DATABASE [sql101.firstname.lastname] SET NUMERIC_ROUNDABORT OFF
ALTER DATABASE [sql101.simtembile.soginga] SET NUMERIC_ROUNDABORT OFF
GO

ALTER DATABASE [sql101.firstname.lastname] SET QUOTED_IDENTIFIER OFF
ALTER DATABASE [sql101.simtembile.soginga] SET QUOTED_IDENTIFIER OFF
GO

ALTER DATABASE [sql101.firstname.lastname] SET RECURSIVE_TRIGGERS OFF
ALTER DATABASE [sql101.simtembile.soginga] SET RECURSIVE_TRIGGERS OFF
GO

ALTER DATABASE [sql101.firstname.lastname] SET DISABLE_BROKER
ALTER DATABASE [sql101.simtembile.soginga] SET DISABLE_BROKER
GO

ALTER DATABASE [sql101.firstname.lastname] SET AUTO_UPDATE_STATISTICS_ASYNC OFF
ALTER DATABASE [sql101.simtembile.soginga] SET AUTO_UPDATE_STATISTICS_ASYNC OFF
GO

ALTER DATABASE [sql101.firstname.lastname] SET DATE_CORRELATION_OPTIMIZATION OFF
ALTER DATABASE [sql101.simtembile.soginga] SET DATE_CORRELATION_OPTIMIZATION OFF
GO

ALTER DATABASE [sql101.firstname.lastname] SET TRUSTWORTHY OFF
ALTER DATABASE [sql101.simtembile.soginga] SET TRUSTWORTHY OFF
GO

ALTER DATABASE [sql101.firstname.lastname] SET ALLOW_SNAPSHOT_ISOLATION OFF
ALTER DATABASE [sql101.simtembile.soginga] SET ALLOW_SNAPSHOT_ISOLATION OFF
GO

ALTER DATABASE [sql101.firstname.lastname] SET PARAMETERIZATION SIMPLE
ALTER DATABASE [sql101.simtembile.soginga] SET PARAMETERIZATION SIMPLE
GO

ALTER DATABASE [sql101.firstname.lastname] SET READ_COMMITTED_SNAPSHOT OFF
ALTER DATABASE [sql101.simtembile.soginga] SET READ_COMMITTED_SNAPSHOT OFF
GO

ALTER DATABASE [sql101.firstname.lastname] SET HONOR_BROKER_PRIORITY OFF
ALTER DATABASE [sql101.simtembile.soginga] SET HONOR_BROKER_PRIORITY OFF
GO

ALTER DATABASE [sql101.firstname.lastname] SET RECOVERY FULL
ALTER DATABASE [sql101.simtembile.soginga] SET RECOVERY FULL
GO

ALTER DATABASE [sql101.firstname.lastname] SET MULTI_USER
ALTER DATABASE [sql101.simtembile.soginga] SET MULTI_USER
GO

ALTER DATABASE [sql101.firstname.lastname] SET PAGE_VERIFY CHECKSUM
ALTER DATABASE [sql101.simtembile.soginga] SET PAGE_VERIFY CHECKSUM
GO

ALTER DATABASE [sql101.firstname.lastname] SET DB_CHAINING OFF
ALTER DATABASE [sql101.simtembile.soginga] SET DB_CHAINING OFF
GO

ALTER DATABASE [sql101.firstname.lastname] SET FILESTREAM( NON_TRANSACTED_ACCESS = OFF )
ALTER DATABASE [sql101.simtembile.soginga] SET FILESTREAM( NON_TRANSACTED_ACCESS = OFF )
GO

ALTER DATABASE [sql101.firstname.lastname] SET TARGET_RECOVERY_TIME = 60 SECONDS
ALTER DATABASE [sql101.simtembile.soginga] SET TARGET_RECOVERY_TIME = 60 SECONDS
GO

ALTER DATABASE [sql101.firstname.lastname] SET DELAYED_DURABILITY = DISABLED
ALTER DATABASE [sql101.simtembile.soginga] SET DELAYED_DURABILITY = DISABLED
GO

ALTER DATABASE [sql101.firstname.lastname] SET QUERY_STORE = OFF
ALTER DATABASE [sql101.simtembile.soginga] SET QUERY_STORE = OFF
GO

USE [sql101.firstname.lastname]
USE [sql101.simtembile.soginga]
GO

ALTER DATABASE SCOPED CONFIGURATION SET LEGACY_CARDINALITY_ESTIMATION = OFF;
Expand All @@ -124,7 +124,7 @@ GO
ALTER DATABASE SCOPED CONFIGURATION SET QUERY_OPTIMIZER_HOTFIXES = OFF;
GO

ALTER DATABASE [sql101.firstname.lastname] SET READ_WRITE
ALTER DATABASE [sql101.simtembile.soginga] SET READ_WRITE
GO


12 changes: 6 additions & 6 deletions data/createuser.sql
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
USE [master]
GO
CREATE LOGIN [firstnamelastname] WITH PASSWORD=N'rabbit123!@#' MUST_CHANGE, DEFAULT_DATABASE=[sql101.firstname.lastname], CHECK_EXPIRATION=ON, CHECK_POLICY=ON
CREATE LOGIN [simtembilesoginga] WITH PASSWORD=N'rabbit123!@#' MUST_CHANGE, DEFAULT_DATABASE=[sql101.simtembile.soginga], CHECK_EXPIRATION=ON, CHECK_POLICY=ON
GO
use [sql101.firstname.lastname]
use [sql101.simtembile.soginga]

GO
use [master]

GO
USE [sql101.firstname.lastname]
USE [sql101.simtembile.soginga]
GO
CREATE USER [firstnamelastname] FOR LOGIN [firstnamelastname]
CREATE USER [simtembilesoginga] FOR LOGIN [simtembilesoginga]
GO
USE [sql101.firstname.lastname]
USE [sql101.simtembile.soginga]
GO
ALTER ROLE [db_owner] ADD MEMBER [firstnamelastname]
ALTER ROLE [db_owner] ADD MEMBER [simtembilesoginga]
GO
3 changes: 3 additions & 0 deletions src/MyTimesheet/MyTimesheet/CasheSecrets.config
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
<appSettings>
<add key="CacheConnection" value="101.redis.cache.windows.net.redis.cache.windows.net,abortConnect=false,ssl=true,password=85BYRVqUHV6aW7Jz8zIIxRnaYMgbBd2kwo4bpDiz4vw"/>
</appSettings>
22 changes: 20 additions & 2 deletions src/MyTimesheet/MyTimesheet/Controllers/TimesheetController.cs
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using MyTimesheet.Models;
using StackExchange.Redis;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Threading.Tasks;

namespace MyTimesheet.Controllers
Expand All @@ -13,9 +16,12 @@ namespace MyTimesheet.Controllers
public class TimesheetController : ControllerBase
{
private readonly TimesheetContext _db;
public TimesheetController(TimesheetContext context)
readonly IConfiguration _config;

public TimesheetController(TimesheetContext context, IConfiguration config)
{
_db = context;
_config = config;
}

// GET api/values
Expand All @@ -34,10 +40,22 @@ public async Task<ActionResult<TimesheetEntry>> Get(int id)

// POST api/values
[HttpPost]
public async Task Post([FromBody] TimesheetEntry value)
public async Task<string> Post([FromBody] TimesheetEntry value)
{
await _db.Entries.AddAsync(value);
await _db.SaveChangesAsync();
var CacheConnection = _config.GetValue<string>("CacheConnection").ToString();
var lazyConnection = new Lazy<ConnectionMultiplexer>(() =>
{
return ConnectionMultiplexer.Connect(CacheConnection);
});

IDatabase cache = lazyConnection.Value.GetDatabase();
await cache.StringSetAsync($"{value.Date}-{value.Developer.Name}-{value.Client}-{value.Project.Name}", value.ToString());
var cacheItem = await cache.StringGetAsync($"{value.Date}-{value.Developer.Name}-{value.Client}-{value.Project.Name}");
lazyConnection.Value.Dispose();

return cacheItem;
}

// PUT api/values/5
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
using System;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Migrations;

namespace MyTimesheet.Migrations
{
public partial class InitialCreate : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "Entries",
columns: table => new
{
Id = table.Column<int>(nullable: false)
.Annotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn),
Name = table.Column<string>(nullable: true),
Surname = table.Column<string>(nullable: true),
Client = table.Column<string>(nullable: true),
Project = table.Column<string>(nullable: true),
Date = table.Column<DateTime>(nullable: false),
TimeStart = table.Column<DateTime>(nullable: false),
TimeEnd = table.Column<DateTime>(nullable: false),
Duration = table.Column<int>(nullable: false),
Description = table.Column<string>(nullable: true),
Billable = table.Column<bool>(nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Entries", x => x.Id);
});
}

protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "Entries");
}
}
}
Loading