From 234912badbd2f9842daacfd237513867d0ff07b2 Mon Sep 17 00:00:00 2001 From: Bangara Raju Kottedi Date: Mon, 22 Apr 2024 17:46:50 +0530 Subject: [PATCH] Add project files. --- PortBlog.API.sln | 25 +++++++++ PortBlog.API/DbContexts/BlogContext.cs | 8 +++ PortBlog.API/DbContexts/PortfolioContext.cs | 8 +++ PortBlog.API/PortBlog.API.csproj | 25 +++++++++ PortBlog.API/Program.cs | 56 ++++++++++++++++++++ PortBlog.API/Properties/launchSettings.json | 41 ++++++++++++++ PortBlog.API/appsettings.Development.json | 8 +++ PortBlog.API/appsettings.Production.json | 9 ++++ PortBlog.API/appsettings.json | 12 +++++ Resume Database Design.docx | Bin 0 -> 19762 bytes 10 files changed, 192 insertions(+) create mode 100644 PortBlog.API.sln create mode 100644 PortBlog.API/DbContexts/BlogContext.cs create mode 100644 PortBlog.API/DbContexts/PortfolioContext.cs create mode 100644 PortBlog.API/PortBlog.API.csproj create mode 100644 PortBlog.API/Program.cs create mode 100644 PortBlog.API/Properties/launchSettings.json create mode 100644 PortBlog.API/appsettings.Development.json create mode 100644 PortBlog.API/appsettings.Production.json create mode 100644 PortBlog.API/appsettings.json create mode 100644 Resume Database Design.docx diff --git a/PortBlog.API.sln b/PortBlog.API.sln new file mode 100644 index 0000000..3246ead --- /dev/null +++ b/PortBlog.API.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.9.34701.34 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PortBlog.API", "PortBlog.API\PortBlog.API.csproj", "{2E50B5D7-56E2-4E89-8742-BB57FF4245F9}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {2E50B5D7-56E2-4E89-8742-BB57FF4245F9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2E50B5D7-56E2-4E89-8742-BB57FF4245F9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2E50B5D7-56E2-4E89-8742-BB57FF4245F9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2E50B5D7-56E2-4E89-8742-BB57FF4245F9}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {B74EF3B9-68FB-42A1-9635-817DFB28CD9E} + EndGlobalSection +EndGlobal diff --git a/PortBlog.API/DbContexts/BlogContext.cs b/PortBlog.API/DbContexts/BlogContext.cs new file mode 100644 index 0000000..3a7ff3b --- /dev/null +++ b/PortBlog.API/DbContexts/BlogContext.cs @@ -0,0 +1,8 @@ +using Microsoft.EntityFrameworkCore; + +namespace PortBlog.API.DbContexts +{ + public class BlogContext : DbContext + { + } +} diff --git a/PortBlog.API/DbContexts/PortfolioContext.cs b/PortBlog.API/DbContexts/PortfolioContext.cs new file mode 100644 index 0000000..d4f8732 --- /dev/null +++ b/PortBlog.API/DbContexts/PortfolioContext.cs @@ -0,0 +1,8 @@ +using Microsoft.EntityFrameworkCore; + +namespace PortBlog.API.DbContexts +{ + public class PortfolioContext : DbContext + { + } +} diff --git a/PortBlog.API/PortBlog.API.csproj b/PortBlog.API/PortBlog.API.csproj new file mode 100644 index 0000000..e3acc73 --- /dev/null +++ b/PortBlog.API/PortBlog.API.csproj @@ -0,0 +1,25 @@ + + + + net8.0 + enable + enable + + + + + + + + + + + + + + + + + + + diff --git a/PortBlog.API/Program.cs b/PortBlog.API/Program.cs new file mode 100644 index 0000000..c5985b9 --- /dev/null +++ b/PortBlog.API/Program.cs @@ -0,0 +1,56 @@ +using Microsoft.EntityFrameworkCore; +using PortBlog.API.DbContexts; +using Serilog; + +Log.Logger = new LoggerConfiguration() + .MinimumLevel.Debug() + .WriteTo.Console() + .WriteTo.File("logs/portblog.txt", rollingInterval: RollingInterval.Day) + .CreateLogger(); + +var builder = WebApplication.CreateBuilder(args); + +builder.Host.UseSerilog(); + +// Add services to the container. + +builder.Services.AddControllers(options => +{ + options.ReturnHttpNotAcceptable = true; +}).AddNewtonsoftJson(); + +builder.Services.AddProblemDetails(); + +// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle +builder.Services.AddEndpointsApiExplorer(); +builder.Services.AddSwaggerGen(); + +builder.Services + .AddDbContext(dbContextOptions + => dbContextOptions.UseSqlite(builder.Configuration["ConnectionStrings:PortBlogDBConnectionString"])); + +builder.Services + .AddDbContext(dbContextOptions + => dbContextOptions.UseSqlite(builder.Configuration["ConnectionStrings:PortBlogDBConnectionString"])); + +var app = builder.Build(); + +if (!app.Environment.IsDevelopment()) +{ + app.UseExceptionHandler(); +} + +// Configure the HTTP request pipeline. +if (app.Environment.IsDevelopment()) +{ + app.UseSwagger(); + app.UseSwaggerUI(); +} + +app.UseHttpsRedirection(); + +app.UseAuthorization(); + +app.MapControllers(); + +app.Run(); diff --git a/PortBlog.API/Properties/launchSettings.json b/PortBlog.API/Properties/launchSettings.json new file mode 100644 index 0000000..229725e --- /dev/null +++ b/PortBlog.API/Properties/launchSettings.json @@ -0,0 +1,41 @@ +{ + "$schema": "http://json.schemastore.org/launchsettings.json", + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:37113", + "sslPort": 44357 + } + }, + "profiles": { + "http": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "launchUrl": "swagger", + "applicationUrl": "http://localhost:5039", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "PortBlog.API": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "launchUrl": "swagger", + "applicationUrl": "https://localhost:7013;http://localhost:5039", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "launchUrl": "swagger", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} diff --git a/PortBlog.API/appsettings.Development.json b/PortBlog.API/appsettings.Development.json new file mode 100644 index 0000000..0c208ae --- /dev/null +++ b/PortBlog.API/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/PortBlog.API/appsettings.Production.json b/PortBlog.API/appsettings.Production.json new file mode 100644 index 0000000..ec04bc1 --- /dev/null +++ b/PortBlog.API/appsettings.Production.json @@ -0,0 +1,9 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*" +} \ No newline at end of file diff --git a/PortBlog.API/appsettings.json b/PortBlog.API/appsettings.json new file mode 100644 index 0000000..bdf1af0 --- /dev/null +++ b/PortBlog.API/appsettings.json @@ -0,0 +1,12 @@ +{ + "ConnectionString": { + "PortBlogDBConnectionString": "Data Source=Database\\PortBlogDB.db" + }, + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*" +} diff --git a/Resume Database Design.docx b/Resume Database Design.docx new file mode 100644 index 0000000000000000000000000000000000000000..215b3415a22f44b742cf394fe020d3ac914f3d7e GIT binary patch literal 19762 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 literal 0 HcmV?d00001