Add JWT, OTP, and caching features
Upgraded projects to .NET 9.0 and added new projects `KBR.Cache`, `KBR.Shared`, and `KBR.Shared.Lite` to the solution. Introduced JWT authentication and OTP handling with new models, services, and configuration options. Updated database schema with new entities `Users` and `RefreshTokens`, and added migrations for schema changes. Implemented caching strategies using `AppDistributedCache` with support for in-memory, SQL Server, and Redis. Enhanced email handling with `MailHelpers` for domain replacement. Updated controllers, repositories, and configuration files to support new features.
This commit is contained in:
parent
912457755e
commit
3a7edb23c7
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<OutputType>Exe</OutputType>
|
<OutputType>Exe</OutputType>
|
||||||
<TargetFramework>net8.0</TargetFramework>
|
<TargetFramework>net9.0</TargetFramework>
|
||||||
<ImplicitUsings>enable</ImplicitUsings>
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<IsPublishable>false</IsPublishable>
|
<IsPublishable>false</IsPublishable>
|
||||||
|
|||||||
@ -7,6 +7,14 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PortBlog.API", "PortBlog.AP
|
|||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AesEncryption", "AesEncryption\AesEncryption.csproj", "{26654BFD-EE9B-49BA-84BA-9156AC348076}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AesEncryption", "AesEncryption\AesEncryption.csproj", "{26654BFD-EE9B-49BA-84BA-9156AC348076}"
|
||||||
EndProject
|
EndProject
|
||||||
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Shared", "Shared", "{868B8641-C2BB-415C-816A-4FB477DA009B}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "KBR.Cache", "Shared\KBR.Cache\KBR.Cache.csproj", "{DA0B3995-A83A-4D7C-A964-ADFE1F58B1FA}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "KBR.Shared", "Shared\KBR.Shared\KBR.Shared.csproj", "{1C0F86E4-A791-4150-B9B3-B761925681DD}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "KBR.Shared.Lite", "Shared\KBR.Share.Lite\KBR.Shared.Lite.csproj", "{F4B7078B-C59A-46B8-881A-C3CEE2634498}"
|
||||||
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|Any CPU = Debug|Any CPU
|
Debug|Any CPU = Debug|Any CPU
|
||||||
@ -21,10 +29,27 @@ Global
|
|||||||
{26654BFD-EE9B-49BA-84BA-9156AC348076}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{26654BFD-EE9B-49BA-84BA-9156AC348076}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{26654BFD-EE9B-49BA-84BA-9156AC348076}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{26654BFD-EE9B-49BA-84BA-9156AC348076}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{26654BFD-EE9B-49BA-84BA-9156AC348076}.Release|Any CPU.Build.0 = Release|Any CPU
|
{26654BFD-EE9B-49BA-84BA-9156AC348076}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{DA0B3995-A83A-4D7C-A964-ADFE1F58B1FA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{DA0B3995-A83A-4D7C-A964-ADFE1F58B1FA}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{DA0B3995-A83A-4D7C-A964-ADFE1F58B1FA}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{DA0B3995-A83A-4D7C-A964-ADFE1F58B1FA}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{1C0F86E4-A791-4150-B9B3-B761925681DD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{1C0F86E4-A791-4150-B9B3-B761925681DD}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{1C0F86E4-A791-4150-B9B3-B761925681DD}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{1C0F86E4-A791-4150-B9B3-B761925681DD}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{F4B7078B-C59A-46B8-881A-C3CEE2634498}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{F4B7078B-C59A-46B8-881A-C3CEE2634498}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{F4B7078B-C59A-46B8-881A-C3CEE2634498}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{F4B7078B-C59A-46B8-881A-C3CEE2634498}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
|
GlobalSection(NestedProjects) = preSolution
|
||||||
|
{DA0B3995-A83A-4D7C-A964-ADFE1F58B1FA} = {868B8641-C2BB-415C-816A-4FB477DA009B}
|
||||||
|
{1C0F86E4-A791-4150-B9B3-B761925681DD} = {868B8641-C2BB-415C-816A-4FB477DA009B}
|
||||||
|
{F4B7078B-C59A-46B8-881A-C3CEE2634498} = {868B8641-C2BB-415C-816A-4FB477DA009B}
|
||||||
|
EndGlobalSection
|
||||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
SolutionGuid = {B74EF3B9-68FB-42A1-9635-817DFB28CD9E}
|
SolutionGuid = {B74EF3B9-68FB-42A1-9635-817DFB28CD9E}
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
namespace PortBlog.API.Common
|
namespace PortBlog.API.Common.Constants
|
||||||
{
|
{
|
||||||
public static class MailConstants
|
public static class MailConstants
|
||||||
{
|
{
|
||||||
9
PortBlog.API/Common/Constants/OptionNames.cs
Normal file
9
PortBlog.API/Common/Constants/OptionNames.cs
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
namespace PortBlog.API.Common.Constants
|
||||||
|
{
|
||||||
|
public static class OptionNames
|
||||||
|
{
|
||||||
|
public const string JwtAuthentication = nameof(JwtAuthentication);
|
||||||
|
|
||||||
|
public const string OtpExpiryInMinutes = nameof(OtpExpiryInMinutes);
|
||||||
|
}
|
||||||
|
}
|
||||||
160
PortBlog.API/Controllers/AdminController.cs
Normal file
160
PortBlog.API/Controllers/AdminController.cs
Normal file
@ -0,0 +1,160 @@
|
|||||||
|
using Asp.Versioning;
|
||||||
|
using AutoMapper;
|
||||||
|
using Microsoft.AspNetCore.Authorization;
|
||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using PortBlog.API.Models;
|
||||||
|
using PortBlog.API.Repositories.Contracts;
|
||||||
|
using PortBlog.API.Services.Contracts;
|
||||||
|
|
||||||
|
namespace PortBlog.API.Controllers
|
||||||
|
{
|
||||||
|
[Route("api/v{version:apiVersion}/admin")]
|
||||||
|
[ApiController]
|
||||||
|
[ApiVersion(1)]
|
||||||
|
[Authorize]
|
||||||
|
public class AdminController : Controller
|
||||||
|
{
|
||||||
|
private readonly ILogger<CvController> _logger;
|
||||||
|
private readonly ICandidateRepository _candidateRepository;
|
||||||
|
private readonly IResumeRepository _resumeRepository;
|
||||||
|
private readonly IMapper _mapper;
|
||||||
|
public AdminController(ILogger<CvController> logger, ICandidateRepository candidateRepository, IResumeRepository resumeRepository, IMailService mailService, IMapper mapper, IMailRepository mailRepository)
|
||||||
|
{
|
||||||
|
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
|
||||||
|
_candidateRepository = candidateRepository ?? throw new ArgumentNullException(nameof(candidateRepository));
|
||||||
|
_resumeRepository = resumeRepository ?? throw new ArgumentNullException(nameof(resumeRepository));
|
||||||
|
_mapper = mapper;
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// Get hobbies of the candidate by candidateid
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="candidateId">The id of the candidate whose hobbies to get</param>
|
||||||
|
/// <returns>Hobbies of the candidate</returns>
|
||||||
|
/// <response code="200">Returns the requested hobbies of the candidate</response>
|
||||||
|
[HttpGet("GetHobbies/{candidateId}")]
|
||||||
|
[ProducesResponseType(StatusCodes.Status404NotFound)]
|
||||||
|
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
||||||
|
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
||||||
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||||
|
public async Task<ActionResult<AboutDto>> GetHobbies(int candidateId)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (!await _candidateRepository.CandidateExistAsync(candidateId))
|
||||||
|
{
|
||||||
|
_logger.LogInformation($"Candidate with id {candidateId} wasn't found when fetching about details.");
|
||||||
|
return NotFound();
|
||||||
|
}
|
||||||
|
|
||||||
|
var aboutDetails = await _resumeRepository.GetHobbiesAsync(candidateId);
|
||||||
|
|
||||||
|
return Ok(_mapper.Map<AboutDto>(aboutDetails));
|
||||||
|
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogCritical($"Exception while getting about details for the candidate with id {candidateId}.", ex);
|
||||||
|
return StatusCode(500, "A problem happened while handling your request.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Get Candidate details with social links by candidateid
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="candidateId">The id of the candidate whose detials to get with social links</param>
|
||||||
|
/// <returns>Candidate details with sociallinks</returns>
|
||||||
|
/// <response code="200">Returns the requested candidate details with social links</response>
|
||||||
|
[HttpGet("GetCandidateWithSocialLinks/{candidateId}")]
|
||||||
|
[ProducesResponseType(StatusCodes.Status404NotFound)]
|
||||||
|
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
||||||
|
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
||||||
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||||
|
public async Task<ActionResult<CandidateSocialLinksDto>> GetContact(int candidateId)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (!await _candidateRepository.CandidateExistAsync(candidateId))
|
||||||
|
{
|
||||||
|
_logger.LogInformation($"Candidate with id {candidateId} wasn't found when fetching candidate with social links.");
|
||||||
|
return NotFound();
|
||||||
|
}
|
||||||
|
|
||||||
|
var contact = await _resumeRepository.GetCandidateWithSocialLinksAsync(candidateId);
|
||||||
|
|
||||||
|
return Ok(_mapper.Map<CandidateSocialLinksDto>(contact));
|
||||||
|
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogCritical($"Exception while getting contact for the candidate with social links with id {candidateId}.", ex);
|
||||||
|
return StatusCode(500, "A problem happened while handling your request.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Get Candidate resume by candidateid
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="candidateId">The id of the candidate whose resume to get</param>
|
||||||
|
/// <returns>Candidate resume</returns>
|
||||||
|
/// <response code="200">Returns the requested candidate resume</response>
|
||||||
|
[HttpGet("GetResume/{candidateId}")]
|
||||||
|
[ProducesResponseType(StatusCodes.Status404NotFound)]
|
||||||
|
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
||||||
|
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
||||||
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||||
|
public async Task<ActionResult<ResumeDto>> GetResume(int candidateId)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (!await _candidateRepository.CandidateExistAsync(candidateId))
|
||||||
|
{
|
||||||
|
_logger.LogInformation($"Candidate with id {candidateId} wasn't found when fetching resume.");
|
||||||
|
return NotFound();
|
||||||
|
}
|
||||||
|
|
||||||
|
var resume = await _resumeRepository.GetResumeAsync(candidateId);
|
||||||
|
|
||||||
|
return Ok(_mapper.Map<ResumeDto>(resume));
|
||||||
|
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogCritical($"Exception while getting resume for the candidate with id {candidateId}.", ex);
|
||||||
|
return StatusCode(500, "A problem happened while handling your request.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Get Candidate projects by candidateid
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="candidateId">The id of the candidate whose projects to get</param>
|
||||||
|
/// <returns>Candidate projects</returns>
|
||||||
|
/// <response code="200">Returns the requested candidate projects</response>
|
||||||
|
[HttpGet("GetProjects/{candidateId}")]
|
||||||
|
[ProducesResponseType(StatusCodes.Status404NotFound)]
|
||||||
|
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
||||||
|
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
||||||
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||||
|
public async Task<ActionResult<ProjectsDto>> GetProjects(int candidateId)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (!await _candidateRepository.CandidateExistAsync(candidateId))
|
||||||
|
{
|
||||||
|
_logger.LogInformation($"Candidate with id {candidateId} wasn't found when fetching projects.");
|
||||||
|
return NotFound();
|
||||||
|
}
|
||||||
|
|
||||||
|
var projects = await _resumeRepository.GetProjectsAsync(candidateId);
|
||||||
|
|
||||||
|
return Ok(_mapper.Map<ProjectsDto>(projects));
|
||||||
|
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogCritical($"Exception while getting projects for the candidate with id {candidateId}.", ex);
|
||||||
|
return StatusCode(500, "A problem happened while handling your request.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
184
PortBlog.API/Controllers/AuthController.cs
Normal file
184
PortBlog.API/Controllers/AuthController.cs
Normal file
@ -0,0 +1,184 @@
|
|||||||
|
using Asp.Versioning;
|
||||||
|
using AutoMapper;
|
||||||
|
using Azure.Core;
|
||||||
|
using KBR.Cache;
|
||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using PortBlog.API.Entities;
|
||||||
|
using PortBlog.API.Models;
|
||||||
|
using PortBlog.API.Repositories.Contracts;
|
||||||
|
using PortBlog.API.Services;
|
||||||
|
using PortBlog.API.Services.Contracts;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace PortBlog.API.Controllers
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Controller for handling authentication-related operations.
|
||||||
|
/// </summary>
|
||||||
|
[Route("api/v{version:apiVersion}/auth")]
|
||||||
|
[ApiController]
|
||||||
|
[ApiVersion(1)]
|
||||||
|
public class AuthController(IAuthService authService, IMailService mailService, ICandidateRepository candidateRepository, ILogger<AuthController> logger, IMapper mapper, IConfiguration configuration, ITemplateService templateService, IAppDistributedCache cache) : ControllerBase
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Generates a One-Time Password (OTP) for the specified candidate and sends it via email.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="candidateId">The ID of the candidate for whom the OTP is generated.</param>
|
||||||
|
/// <returns>An ActionResult indicating the result of the operation.</returns>
|
||||||
|
[HttpPost("GenerateOtp")]
|
||||||
|
[ProducesResponseType(StatusCodes.Status404NotFound)]
|
||||||
|
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
||||||
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||||
|
public async Task<ActionResult> GenerateOtp([FromForm] string email)
|
||||||
|
{
|
||||||
|
var messageSendDto = new MessageSendDto();
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var candidate = await candidateRepository.GetCandidateAsync(email);
|
||||||
|
if (candidate == null)
|
||||||
|
{
|
||||||
|
logger.LogInformation($"Candidate with email ({email}) wasn't found.");
|
||||||
|
return NotFound();
|
||||||
|
}
|
||||||
|
|
||||||
|
var candidateDto = mapper.Map<CandidateDto>(candidate);
|
||||||
|
var otp = await authService.GenerateOtp(email);
|
||||||
|
|
||||||
|
var otpModel = new OtpMailModel()
|
||||||
|
{
|
||||||
|
OtpCode = otp,
|
||||||
|
Name = candidateDto.DisplayName,
|
||||||
|
ExpiryMinutes = configuration.GetValue<int>("OtpExpiryInMinutes", 3)
|
||||||
|
};
|
||||||
|
|
||||||
|
messageSendDto.CandidateId = candidate.CandidateId;
|
||||||
|
messageSendDto.ToEmail = candidateDto.Email;
|
||||||
|
messageSendDto.Name = candidateDto.DisplayName;
|
||||||
|
messageSendDto.Subject = "OTP for Login";
|
||||||
|
messageSendDto.Content = await templateService.GetViewTemplate("Views/Email/OtpEmailTemplate.cshtml", otpModel);
|
||||||
|
await mailService.SendAsync(messageSendDto);
|
||||||
|
return Ok(true);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
logger.LogCritical($"Exception while sending OTP for {messageSendDto.ToEmail}.", ex);
|
||||||
|
return StatusCode(500, "A problem happened while handling your request.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Verifies the One-Time Password (OTP) for the specified user.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="request">The request containing the user ID and OTP code to verify.</param>
|
||||||
|
/// <returns>An ActionResult indicating the result of the verification.</returns>
|
||||||
|
[HttpPost("ValidateOtp")]
|
||||||
|
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
||||||
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||||
|
public async Task<ActionResult> VerifyOtp([FromBody] VerifyOtpRequest request)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (request == null || string.IsNullOrEmpty(request.UserId) || string.IsNullOrEmpty(request.OtpCode))
|
||||||
|
return BadRequest(new { message = "Invalid request data." });
|
||||||
|
|
||||||
|
var secretKey = await CacheHelpers.GetUserOtpSecretAsync(cache, request.UserId);
|
||||||
|
|
||||||
|
if(secretKey == null)
|
||||||
|
{
|
||||||
|
return Unauthorized(new { message = "OTP Expired" });
|
||||||
|
}
|
||||||
|
|
||||||
|
var result = authService.ValidateOtp(secretKey, request.OtpCode);
|
||||||
|
|
||||||
|
if (!result)
|
||||||
|
return Unauthorized(new { message = "Invalid OTP" });
|
||||||
|
|
||||||
|
|
||||||
|
var accessToken = authService.GenerateAccessToken(request.UserId);
|
||||||
|
var refreshToken = authService.GenerateRefreshToken();
|
||||||
|
|
||||||
|
// Store hashed refresh token in DB
|
||||||
|
await authService.SaveRefreshToken(request.UserId, refreshToken, HttpContext);
|
||||||
|
|
||||||
|
// Set HttpOnly cookie
|
||||||
|
SetRefreshTokenCookie(refreshToken);
|
||||||
|
|
||||||
|
return Ok(new { accessToken }); // only access token is returned in response body
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
logger.LogCritical($"Exception while validating OTP for {request.UserId}.", ex);
|
||||||
|
return StatusCode(500, "A problem happened while handling your request.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpPost("RefreshToken")]
|
||||||
|
public async Task<IActionResult> Refresh()
|
||||||
|
{
|
||||||
|
// Read refresh token from HttpOnly cookie
|
||||||
|
if (!Request.Cookies.TryGetValue("refreshToken", out var refreshToken))
|
||||||
|
return Unauthorized();
|
||||||
|
|
||||||
|
var matchedToken = await authService.GetRefreshTokenAsync(refreshToken);
|
||||||
|
if (matchedToken == null) return Forbid();
|
||||||
|
|
||||||
|
// Rotate refresh token
|
||||||
|
matchedToken.Revoked = true;
|
||||||
|
var newRefreshToken = authService.GenerateRefreshToken();
|
||||||
|
var hashedNewToken = BCrypt.Net.BCrypt.HashPassword(newRefreshToken);
|
||||||
|
|
||||||
|
var newRefreshEntity = new RefreshToken
|
||||||
|
{
|
||||||
|
UserId = matchedToken.UserId,
|
||||||
|
Token = hashedNewToken,
|
||||||
|
ExpiryDate = DateTime.UtcNow.AddHours(configuration.GetValue<int>("Jwt:RefreshTokenExpiryInHours", 24)),
|
||||||
|
JwtId = Guid.NewGuid().ToString(),
|
||||||
|
DeviceInfo = matchedToken.DeviceInfo,
|
||||||
|
ReplacedByToken = matchedToken.Token
|
||||||
|
};
|
||||||
|
|
||||||
|
await authService.SaveRefreshToken(newRefreshEntity);
|
||||||
|
|
||||||
|
// Update cookie
|
||||||
|
SetRefreshTokenCookie(newRefreshToken);
|
||||||
|
|
||||||
|
var newAccessToken = authService.GenerateAccessToken(matchedToken.User.Email);
|
||||||
|
return Ok(new { accessToken = newAccessToken });
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpPost("logout")]
|
||||||
|
public async Task<IActionResult> Logout()
|
||||||
|
{
|
||||||
|
// Remove refresh token cookie
|
||||||
|
if (Request.Cookies.TryGetValue("refreshToken", out var incoming))
|
||||||
|
{
|
||||||
|
await authService.RemoveRefreshToken(incoming);
|
||||||
|
}
|
||||||
|
|
||||||
|
Response.Cookies.Delete("refreshToken", new CookieOptions
|
||||||
|
{
|
||||||
|
HttpOnly = true,
|
||||||
|
Secure = true,
|
||||||
|
SameSite = SameSiteMode.None,
|
||||||
|
Expires = DateTime.UtcNow.AddDays(-1)
|
||||||
|
});
|
||||||
|
|
||||||
|
return Ok(new { message = "Logged out successfully" });
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void SetRefreshTokenCookie(string refreshToken)
|
||||||
|
{
|
||||||
|
var cookieOptions = new CookieOptions
|
||||||
|
{
|
||||||
|
HttpOnly = true, // JS cannot access
|
||||||
|
Secure = true, // HTTPS only
|
||||||
|
SameSite = SameSiteMode.None, // Prevent CSRF
|
||||||
|
Expires = DateTime.UtcNow.AddDays(7)
|
||||||
|
};
|
||||||
|
|
||||||
|
Response.Cookies.Append("refreshToken", refreshToken, cookieOptions);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,6 +1,5 @@
|
|||||||
using Asp.Versioning;
|
using Asp.Versioning;
|
||||||
using AutoMapper;
|
using AutoMapper;
|
||||||
using Microsoft.AspNetCore.Http.HttpResults;
|
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using PortBlog.API.Entities;
|
using PortBlog.API.Entities;
|
||||||
using PortBlog.API.Models;
|
using PortBlog.API.Models;
|
||||||
|
|||||||
@ -1,8 +1,6 @@
|
|||||||
using Asp.Versioning;
|
using Asp.Versioning;
|
||||||
using AutoMapper;
|
using AutoMapper;
|
||||||
using Microsoft.AspNetCore.Http;
|
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using PortBlog.API.Entities;
|
|
||||||
using PortBlog.API.Models;
|
using PortBlog.API.Models;
|
||||||
using PortBlog.API.Repositories.Contracts;
|
using PortBlog.API.Repositories.Contracts;
|
||||||
using PortBlog.API.Services.Contracts;
|
using PortBlog.API.Services.Contracts;
|
||||||
@ -257,7 +255,7 @@ namespace PortBlog.API.Controllers
|
|||||||
var candidateDto = _mapper.Map<CandidateDto>(candidate);
|
var candidateDto = _mapper.Map<CandidateDto>(candidate);
|
||||||
var messageSendDto = _mapper.Map<MessageSendDto>(message);
|
var messageSendDto = _mapper.Map<MessageSendDto>(message);
|
||||||
messageSendDto.ToEmail = candidateDto.Email;
|
messageSendDto.ToEmail = candidateDto.Email;
|
||||||
messageSendDto.CandidateName = candidateDto.DisplayName;
|
messageSendDto.Name = candidateDto.DisplayName;
|
||||||
messageSendDto.CandidateId = candidateDto.CandidateId;
|
messageSendDto.CandidateId = candidateDto.CandidateId;
|
||||||
await _mailService.SendAsync(messageSendDto);
|
await _mailService.SendAsync(messageSendDto);
|
||||||
return Ok(true);
|
return Ok(true);
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using PortBlog.API.DbContexts.Seed;
|
using PortBlog.API.DbContexts.Seed;
|
||||||
using PortBlog.API.Entities;
|
using PortBlog.API.Entities;
|
||||||
|
using PortBlog.API.Entities.Mapping;
|
||||||
|
|
||||||
namespace PortBlog.API.DbContexts
|
namespace PortBlog.API.DbContexts
|
||||||
{
|
{
|
||||||
@ -37,6 +38,12 @@ namespace PortBlog.API.DbContexts
|
|||||||
|
|
||||||
public DbSet<ClientLog> ClientLogs { get; set; }
|
public DbSet<ClientLog> ClientLogs { get; set; }
|
||||||
|
|
||||||
|
public DbSet<Cache> Cache { get; set; }
|
||||||
|
|
||||||
|
public DbSet<RefreshToken> RefreshTokens { get; set; }
|
||||||
|
|
||||||
|
public DbSet<User> Users { get; set; }
|
||||||
|
|
||||||
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
||||||
{
|
{
|
||||||
modelBuilder.Entity<Candidate>().HasData(InitialData.GetCandidateData());
|
modelBuilder.Entity<Candidate>().HasData(InitialData.GetCandidateData());
|
||||||
@ -50,6 +57,8 @@ namespace PortBlog.API.DbContexts
|
|||||||
modelBuilder.Entity<Post>().HasData(InitialData.GetPostsData());
|
modelBuilder.Entity<Post>().HasData(InitialData.GetPostsData());
|
||||||
modelBuilder.Entity<Experience>().HasData(InitialData.GetExperiencesData());
|
modelBuilder.Entity<Experience>().HasData(InitialData.GetExperiencesData());
|
||||||
modelBuilder.Entity<ExperienceDetails>().HasData(InitialData.GetExperienceDetailsData());
|
modelBuilder.Entity<ExperienceDetails>().HasData(InitialData.GetExperienceDetailsData());
|
||||||
|
modelBuilder.Entity<User>().HasData(InitialData.GetUsers());
|
||||||
|
modelBuilder.ApplyConfiguration(new CacheMapping());
|
||||||
|
|
||||||
base.OnModelCreating(modelBuilder);
|
base.OnModelCreating(modelBuilder);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,5 +1,4 @@
|
|||||||
using PortBlog.API.Entities;
|
using PortBlog.API.Entities;
|
||||||
using System.Net.NetworkInformation;
|
|
||||||
|
|
||||||
namespace PortBlog.API.DbContexts.Seed
|
namespace PortBlog.API.DbContexts.Seed
|
||||||
{
|
{
|
||||||
@ -373,5 +372,18 @@ namespace PortBlog.API.DbContexts.Seed
|
|||||||
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static List<User> GetUsers()
|
||||||
|
{
|
||||||
|
return new List<User>
|
||||||
|
{
|
||||||
|
new User
|
||||||
|
{
|
||||||
|
UserId = 1,
|
||||||
|
Username = "rajukottedi",
|
||||||
|
Email = "bangararaju.kottedi@gmail.com",
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
11
PortBlog.API/Entities/Cache.cs
Normal file
11
PortBlog.API/Entities/Cache.cs
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
namespace PortBlog.API.Entities
|
||||||
|
{
|
||||||
|
public class Cache
|
||||||
|
{
|
||||||
|
public string Id { get; set; } = null!;
|
||||||
|
public byte[] Value { get; set; } = null!;
|
||||||
|
public DateTime ExpiresAtTime { get; set; }
|
||||||
|
public long? SlidingExpirationInSeconds { get; set; }
|
||||||
|
public DateTime? AbsoluteExpiration { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
17
PortBlog.API/Entities/Mapping/CacheMapping.cs
Normal file
17
PortBlog.API/Entities/Mapping/CacheMapping.cs
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
||||||
|
|
||||||
|
namespace PortBlog.API.Entities.Mapping
|
||||||
|
{
|
||||||
|
public class CacheMapping : IEntityTypeConfiguration<Cache>
|
||||||
|
{
|
||||||
|
public void Configure(EntityTypeBuilder<Cache> builder)
|
||||||
|
{
|
||||||
|
builder.HasKey(c => c.Id);
|
||||||
|
builder.Property(c => c.Id).ValueGeneratedOnAdd();
|
||||||
|
builder.Property(c => c.ExpiresAtTime).IsRequired();
|
||||||
|
builder.Property(c => c.Id).HasMaxLength(449).IsRequired();
|
||||||
|
builder.Property(c => c.Value).IsRequired();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -28,7 +28,6 @@ namespace PortBlog.API.Entities
|
|||||||
public string Subject { get; set; } = string.Empty;
|
public string Subject { get; set; } = string.Empty;
|
||||||
|
|
||||||
[Required]
|
[Required]
|
||||||
[MaxLength(500)]
|
|
||||||
public string Content { get; set; } = string.Empty;
|
public string Content { get; set; } = string.Empty;
|
||||||
|
|
||||||
public int SentStatus { get; set; } = 0;
|
public int SentStatus { get; set; } = 0;
|
||||||
|
|||||||
33
PortBlog.API/Entities/RefreshToken.cs
Normal file
33
PortBlog.API/Entities/RefreshToken.cs
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
|
||||||
|
namespace PortBlog.API.Entities
|
||||||
|
{
|
||||||
|
public class RefreshToken
|
||||||
|
{
|
||||||
|
[Key]
|
||||||
|
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||||
|
public int TokenId { get; set; }
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
public int UserId { get; set; }
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
public string Token { get; set; }
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
public string JwtId { get; set; }
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
public DateTime ExpiryDate { get; set; }
|
||||||
|
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
|
||||||
|
public bool Revoked { get; set; } = false;
|
||||||
|
public string? ReplacedByToken { get; set; }
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
public string DeviceInfo { get; set; }
|
||||||
|
|
||||||
|
[ForeignKey(nameof(UserId))]
|
||||||
|
public User User { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
19
PortBlog.API/Entities/User.cs
Normal file
19
PortBlog.API/Entities/User.cs
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
|
namespace PortBlog.API.Entities
|
||||||
|
{
|
||||||
|
public class User
|
||||||
|
{
|
||||||
|
[Key]
|
||||||
|
public int UserId { get; set; }
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
public string Username { get; set; }
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
public string Email { get; set; }
|
||||||
|
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
|
||||||
|
|
||||||
|
public ICollection<RefreshToken> RefreshTokens { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -19,6 +19,8 @@ namespace PortBlog.API.Extensions
|
|||||||
public static IServiceCollection AddServices(this IServiceCollection services)
|
public static IServiceCollection AddServices(this IServiceCollection services)
|
||||||
{
|
{
|
||||||
services.AddTransient<IMailService, MailService>();
|
services.AddTransient<IMailService, MailService>();
|
||||||
|
services.AddTransient<IAuthService, AuthService>();
|
||||||
|
services.AddTransient<ITemplateService, TemplateService>();
|
||||||
return services;
|
return services;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
1393
PortBlog.API/Migrations/20251001130551_CreateCacheTable.Designer.cs
generated
Normal file
1393
PortBlog.API/Migrations/20251001130551_CreateCacheTable.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
515
PortBlog.API/Migrations/20251001130551_CreateCacheTable.cs
Normal file
515
PortBlog.API/Migrations/20251001130551_CreateCacheTable.cs
Normal file
@ -0,0 +1,515 @@
|
|||||||
|
using System;
|
||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace PortBlog.API.Migrations
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
public partial class CreateCacheTable : Migration
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "Cache",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
Id = table.Column<string>(type: "varchar(449)", maxLength: 449, nullable: false)
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
||||||
|
Value = table.Column<byte[]>(type: "longblob", nullable: false),
|
||||||
|
ExpiresAtTime = table.Column<DateTime>(type: "datetime(6)", nullable: false),
|
||||||
|
SlidingExpirationInSeconds = table.Column<long>(type: "bigint", nullable: true),
|
||||||
|
AbsoluteExpiration = table.Column<DateTime>(type: "datetime(6)", nullable: true)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_Cache", x => x.Id);
|
||||||
|
})
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4");
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Academics",
|
||||||
|
keyColumn: "AcademicId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7668), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7668) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Academics",
|
||||||
|
keyColumn: "AcademicId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7674), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7674) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Academics",
|
||||||
|
keyColumn: "AcademicId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7677), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7677) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Blogs",
|
||||||
|
keyColumn: "BlogUrl",
|
||||||
|
keyValue: "https://bangararaju.kottedi.in/blog",
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7790), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7791) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Candidates",
|
||||||
|
keyColumn: "CandidateId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7275), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7304) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7944), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7944) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7948), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7949) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7950), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7951) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 4,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7952), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7953) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 5,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7954), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7955) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 6,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7957), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7957) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 7,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7958), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7959) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 8,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(8011), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(8011) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Experiences",
|
||||||
|
keyColumn: "ExperienceId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7903), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7904) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Experiences",
|
||||||
|
keyColumn: "ExperienceId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7908), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7909) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Experiences",
|
||||||
|
keyColumn: "ExperienceId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7912), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7913) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Experiences",
|
||||||
|
keyColumn: "ExperienceId",
|
||||||
|
keyValue: 4,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7915), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7916) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Hobbies",
|
||||||
|
keyColumn: "HobbyId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7625), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7625) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Hobbies",
|
||||||
|
keyColumn: "HobbyId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7633), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7633) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Hobbies",
|
||||||
|
keyColumn: "HobbyId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7635), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7636) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Hobbies",
|
||||||
|
keyColumn: "HobbyId",
|
||||||
|
keyValue: 4,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7638), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7638) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Posts",
|
||||||
|
keyColumn: "PostId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7820), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7817) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Posts",
|
||||||
|
keyColumn: "PostId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7826), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7824) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Posts",
|
||||||
|
keyColumn: "PostId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7830), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7828) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Projects",
|
||||||
|
keyColumn: "ProjectId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7754), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7755) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Projects",
|
||||||
|
keyColumn: "ProjectId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7761), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7762) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Projects",
|
||||||
|
keyColumn: "ProjectId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7765), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7765) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Resumes",
|
||||||
|
keyColumn: "ResumeId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7563), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7564) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Skills",
|
||||||
|
keyColumn: "SkillId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7705), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7706) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Skills",
|
||||||
|
keyColumn: "SkillId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7710), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7711) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Skills",
|
||||||
|
keyColumn: "SkillId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7712), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7713) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Skills",
|
||||||
|
keyColumn: "SkillId",
|
||||||
|
keyValue: 4,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7714), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7715) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Skills",
|
||||||
|
keyColumn: "SkillId",
|
||||||
|
keyValue: 5,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7716), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7717) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "SocialLinks",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7592), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7593) });
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "Cache");
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Academics",
|
||||||
|
keyColumn: "AcademicId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(8945), new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(8945) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Academics",
|
||||||
|
keyColumn: "AcademicId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(8948), new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(8949) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Academics",
|
||||||
|
keyColumn: "AcademicId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(8950), new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(8951) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Blogs",
|
||||||
|
keyColumn: "BlogUrl",
|
||||||
|
keyValue: "https://bangararaju.kottedi.in/blog",
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9023), new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9023) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Candidates",
|
||||||
|
keyColumn: "CandidateId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(8726), new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(8742) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9096), new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9096) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9099), new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9100) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9101), new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9101) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 4,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9102), new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9102) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 5,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9103), new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9103) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 6,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9105), new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9105) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 7,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9106), new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9106) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 8,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9107), new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9108) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Experiences",
|
||||||
|
keyColumn: "ExperienceId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9068), new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9068) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Experiences",
|
||||||
|
keyColumn: "ExperienceId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9072), new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9073) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Experiences",
|
||||||
|
keyColumn: "ExperienceId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9075), new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9075) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Experiences",
|
||||||
|
keyColumn: "ExperienceId",
|
||||||
|
keyValue: 4,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9077), new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9077) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Hobbies",
|
||||||
|
keyColumn: "HobbyId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(8912), new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(8913) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Hobbies",
|
||||||
|
keyColumn: "HobbyId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(8917), new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(8918) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Hobbies",
|
||||||
|
keyColumn: "HobbyId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(8919), new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(8919) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Hobbies",
|
||||||
|
keyColumn: "HobbyId",
|
||||||
|
keyValue: 4,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(8921), new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(8921) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Posts",
|
||||||
|
keyColumn: "PostId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9042), new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9038) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Posts",
|
||||||
|
keyColumn: "PostId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9047), new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9045) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Posts",
|
||||||
|
keyColumn: "PostId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9049), new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9048) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Projects",
|
||||||
|
keyColumn: "ProjectId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(8997), new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(8997) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Projects",
|
||||||
|
keyColumn: "ProjectId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9003), new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9003) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Projects",
|
||||||
|
keyColumn: "ProjectId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9006), new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9006) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Resumes",
|
||||||
|
keyColumn: "ResumeId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(8874), new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(8874) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Skills",
|
||||||
|
keyColumn: "SkillId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(8968), new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(8968) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Skills",
|
||||||
|
keyColumn: "SkillId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(8971), new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(8972) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Skills",
|
||||||
|
keyColumn: "SkillId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(8973), new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(8973) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Skills",
|
||||||
|
keyColumn: "SkillId",
|
||||||
|
keyValue: 4,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(8974), new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(8974) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Skills",
|
||||||
|
keyColumn: "SkillId",
|
||||||
|
keyValue: 5,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(8975), new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(8976) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "SocialLinks",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(8894), new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(8895) });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
1392
PortBlog.API/Migrations/20251008082117_MessageContentMaxLength.Designer.cs
generated
Normal file
1392
PortBlog.API/Migrations/20251008082117_MessageContentMaxLength.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,517 @@
|
|||||||
|
using System;
|
||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace PortBlog.API.Migrations
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
public partial class MessageContentMaxLength : Migration
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.AlterColumn<string>(
|
||||||
|
name: "Content",
|
||||||
|
table: "Messages",
|
||||||
|
type: "longtext",
|
||||||
|
nullable: false,
|
||||||
|
oldClrType: typeof(string),
|
||||||
|
oldType: "varchar(500)",
|
||||||
|
oldMaxLength: 500)
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4")
|
||||||
|
.OldAnnotation("MySql:CharSet", "utf8mb4");
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Academics",
|
||||||
|
keyColumn: "AcademicId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 893, DateTimeKind.Local).AddTicks(5183), new DateTime(2025, 10, 8, 13, 51, 15, 893, DateTimeKind.Local).AddTicks(5185) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Academics",
|
||||||
|
keyColumn: "AcademicId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 893, DateTimeKind.Local).AddTicks(6375), new DateTime(2025, 10, 8, 13, 51, 15, 893, DateTimeKind.Local).AddTicks(6376) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Academics",
|
||||||
|
keyColumn: "AcademicId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 893, DateTimeKind.Local).AddTicks(6564), new DateTime(2025, 10, 8, 13, 51, 15, 893, DateTimeKind.Local).AddTicks(6565) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Blogs",
|
||||||
|
keyColumn: "BlogUrl",
|
||||||
|
keyValue: "https://bangararaju.kottedi.in/blog",
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 894, DateTimeKind.Local).AddTicks(8487), new DateTime(2025, 10, 8, 13, 51, 15, 894, DateTimeKind.Local).AddTicks(8489) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Candidates",
|
||||||
|
keyColumn: "CandidateId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 890, DateTimeKind.Local).AddTicks(2043), new DateTime(2025, 10, 8, 13, 51, 15, 890, DateTimeKind.Local).AddTicks(2090) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 896, DateTimeKind.Local).AddTicks(9986), new DateTime(2025, 10, 8, 13, 51, 15, 896, DateTimeKind.Local).AddTicks(9994) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 897, DateTimeKind.Local).AddTicks(902), new DateTime(2025, 10, 8, 13, 51, 15, 897, DateTimeKind.Local).AddTicks(903) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 897, DateTimeKind.Local).AddTicks(908), new DateTime(2025, 10, 8, 13, 51, 15, 897, DateTimeKind.Local).AddTicks(909) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 4,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 897, DateTimeKind.Local).AddTicks(912), new DateTime(2025, 10, 8, 13, 51, 15, 897, DateTimeKind.Local).AddTicks(913) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 5,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 897, DateTimeKind.Local).AddTicks(916), new DateTime(2025, 10, 8, 13, 51, 15, 897, DateTimeKind.Local).AddTicks(917) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 6,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 897, DateTimeKind.Local).AddTicks(931), new DateTime(2025, 10, 8, 13, 51, 15, 897, DateTimeKind.Local).AddTicks(932) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 7,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 897, DateTimeKind.Local).AddTicks(936), new DateTime(2025, 10, 8, 13, 51, 15, 897, DateTimeKind.Local).AddTicks(937) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 8,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 897, DateTimeKind.Local).AddTicks(940), new DateTime(2025, 10, 8, 13, 51, 15, 897, DateTimeKind.Local).AddTicks(941) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Experiences",
|
||||||
|
keyColumn: "ExperienceId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 896, DateTimeKind.Local).AddTicks(2643), new DateTime(2025, 10, 8, 13, 51, 15, 896, DateTimeKind.Local).AddTicks(2652) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Experiences",
|
||||||
|
keyColumn: "ExperienceId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 896, DateTimeKind.Local).AddTicks(4851), new DateTime(2025, 10, 8, 13, 51, 15, 896, DateTimeKind.Local).AddTicks(4852) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Experiences",
|
||||||
|
keyColumn: "ExperienceId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 896, DateTimeKind.Local).AddTicks(4859), new DateTime(2025, 10, 8, 13, 51, 15, 896, DateTimeKind.Local).AddTicks(4861) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Experiences",
|
||||||
|
keyColumn: "ExperienceId",
|
||||||
|
keyValue: 4,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 896, DateTimeKind.Local).AddTicks(4866), new DateTime(2025, 10, 8, 13, 51, 15, 896, DateTimeKind.Local).AddTicks(4867) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Hobbies",
|
||||||
|
keyColumn: "HobbyId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 893, DateTimeKind.Local).AddTicks(447), new DateTime(2025, 10, 8, 13, 51, 15, 893, DateTimeKind.Local).AddTicks(450) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Hobbies",
|
||||||
|
keyColumn: "HobbyId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 893, DateTimeKind.Local).AddTicks(1567), new DateTime(2025, 10, 8, 13, 51, 15, 893, DateTimeKind.Local).AddTicks(1568) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Hobbies",
|
||||||
|
keyColumn: "HobbyId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 893, DateTimeKind.Local).AddTicks(1680), new DateTime(2025, 10, 8, 13, 51, 15, 893, DateTimeKind.Local).AddTicks(1681) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Hobbies",
|
||||||
|
keyColumn: "HobbyId",
|
||||||
|
keyValue: 4,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 893, DateTimeKind.Local).AddTicks(1686), new DateTime(2025, 10, 8, 13, 51, 15, 893, DateTimeKind.Local).AddTicks(1686) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Posts",
|
||||||
|
keyColumn: "PostId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 895, DateTimeKind.Local).AddTicks(4722), new DateTime(2025, 10, 8, 13, 51, 15, 895, DateTimeKind.Local).AddTicks(3517) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Posts",
|
||||||
|
keyColumn: "PostId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 895, DateTimeKind.Local).AddTicks(5740), new DateTime(2025, 10, 8, 13, 51, 15, 895, DateTimeKind.Local).AddTicks(5735) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Posts",
|
||||||
|
keyColumn: "PostId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 895, DateTimeKind.Local).AddTicks(5747), new DateTime(2025, 10, 8, 13, 51, 15, 895, DateTimeKind.Local).AddTicks(5744) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Projects",
|
||||||
|
keyColumn: "ProjectId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 894, DateTimeKind.Local).AddTicks(4258), new DateTime(2025, 10, 8, 13, 51, 15, 894, DateTimeKind.Local).AddTicks(4259) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Projects",
|
||||||
|
keyColumn: "ProjectId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 894, DateTimeKind.Local).AddTicks(6406), new DateTime(2025, 10, 8, 13, 51, 15, 894, DateTimeKind.Local).AddTicks(6411) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Projects",
|
||||||
|
keyColumn: "ProjectId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 894, DateTimeKind.Local).AddTicks(6419), new DateTime(2025, 10, 8, 13, 51, 15, 894, DateTimeKind.Local).AddTicks(6420) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Resumes",
|
||||||
|
keyColumn: "ResumeId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 892, DateTimeKind.Local).AddTicks(2802), new DateTime(2025, 10, 8, 13, 51, 15, 892, DateTimeKind.Local).AddTicks(2819) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Skills",
|
||||||
|
keyColumn: "SkillId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 893, DateTimeKind.Local).AddTicks(9417), new DateTime(2025, 10, 8, 13, 51, 15, 893, DateTimeKind.Local).AddTicks(9419) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Skills",
|
||||||
|
keyColumn: "SkillId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 894, DateTimeKind.Local).AddTicks(241), new DateTime(2025, 10, 8, 13, 51, 15, 894, DateTimeKind.Local).AddTicks(242) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Skills",
|
||||||
|
keyColumn: "SkillId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 894, DateTimeKind.Local).AddTicks(246), new DateTime(2025, 10, 8, 13, 51, 15, 894, DateTimeKind.Local).AddTicks(246) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Skills",
|
||||||
|
keyColumn: "SkillId",
|
||||||
|
keyValue: 4,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 894, DateTimeKind.Local).AddTicks(249), new DateTime(2025, 10, 8, 13, 51, 15, 894, DateTimeKind.Local).AddTicks(250) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Skills",
|
||||||
|
keyColumn: "SkillId",
|
||||||
|
keyValue: 5,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 894, DateTimeKind.Local).AddTicks(253), new DateTime(2025, 10, 8, 13, 51, 15, 894, DateTimeKind.Local).AddTicks(254) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "SocialLinks",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 892, DateTimeKind.Local).AddTicks(6490), new DateTime(2025, 10, 8, 13, 51, 15, 892, DateTimeKind.Local).AddTicks(6498) });
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.AlterColumn<string>(
|
||||||
|
name: "Content",
|
||||||
|
table: "Messages",
|
||||||
|
type: "varchar(500)",
|
||||||
|
maxLength: 500,
|
||||||
|
nullable: false,
|
||||||
|
oldClrType: typeof(string),
|
||||||
|
oldType: "longtext")
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4")
|
||||||
|
.OldAnnotation("MySql:CharSet", "utf8mb4");
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Academics",
|
||||||
|
keyColumn: "AcademicId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7668), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7668) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Academics",
|
||||||
|
keyColumn: "AcademicId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7674), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7674) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Academics",
|
||||||
|
keyColumn: "AcademicId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7677), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7677) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Blogs",
|
||||||
|
keyColumn: "BlogUrl",
|
||||||
|
keyValue: "https://bangararaju.kottedi.in/blog",
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7790), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7791) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Candidates",
|
||||||
|
keyColumn: "CandidateId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7275), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7304) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7944), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7944) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7948), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7949) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7950), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7951) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 4,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7952), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7953) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 5,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7954), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7955) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 6,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7957), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7957) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 7,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7958), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7959) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 8,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(8011), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(8011) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Experiences",
|
||||||
|
keyColumn: "ExperienceId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7903), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7904) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Experiences",
|
||||||
|
keyColumn: "ExperienceId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7908), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7909) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Experiences",
|
||||||
|
keyColumn: "ExperienceId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7912), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7913) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Experiences",
|
||||||
|
keyColumn: "ExperienceId",
|
||||||
|
keyValue: 4,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7915), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7916) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Hobbies",
|
||||||
|
keyColumn: "HobbyId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7625), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7625) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Hobbies",
|
||||||
|
keyColumn: "HobbyId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7633), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7633) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Hobbies",
|
||||||
|
keyColumn: "HobbyId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7635), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7636) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Hobbies",
|
||||||
|
keyColumn: "HobbyId",
|
||||||
|
keyValue: 4,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7638), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7638) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Posts",
|
||||||
|
keyColumn: "PostId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7820), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7817) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Posts",
|
||||||
|
keyColumn: "PostId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7826), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7824) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Posts",
|
||||||
|
keyColumn: "PostId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7830), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7828) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Projects",
|
||||||
|
keyColumn: "ProjectId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7754), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7755) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Projects",
|
||||||
|
keyColumn: "ProjectId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7761), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7762) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Projects",
|
||||||
|
keyColumn: "ProjectId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7765), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7765) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Resumes",
|
||||||
|
keyColumn: "ResumeId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7563), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7564) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Skills",
|
||||||
|
keyColumn: "SkillId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7705), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7706) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Skills",
|
||||||
|
keyColumn: "SkillId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7710), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7711) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Skills",
|
||||||
|
keyColumn: "SkillId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7712), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7713) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Skills",
|
||||||
|
keyColumn: "SkillId",
|
||||||
|
keyValue: 4,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7714), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7715) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Skills",
|
||||||
|
keyColumn: "SkillId",
|
||||||
|
keyValue: 5,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7716), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7717) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "SocialLinks",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7592), new DateTime(2025, 10, 1, 18, 35, 50, 567, DateTimeKind.Local).AddTicks(7593) });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
1392
PortBlog.API/Migrations/20251028060442_User_RefreshTokens.Designer.cs
generated
Normal file
1392
PortBlog.API/Migrations/20251028060442_User_RefreshTokens.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
495
PortBlog.API/Migrations/20251028060442_User_RefreshTokens.cs
Normal file
495
PortBlog.API/Migrations/20251028060442_User_RefreshTokens.cs
Normal file
@ -0,0 +1,495 @@
|
|||||||
|
using System;
|
||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace PortBlog.API.Migrations
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
public partial class User_RefreshTokens : Migration
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Academics",
|
||||||
|
keyColumn: "AcademicId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 692, DateTimeKind.Local).AddTicks(4652), new DateTime(2025, 10, 28, 11, 34, 41, 692, DateTimeKind.Local).AddTicks(4653) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Academics",
|
||||||
|
keyColumn: "AcademicId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 692, DateTimeKind.Local).AddTicks(5447), new DateTime(2025, 10, 28, 11, 34, 41, 692, DateTimeKind.Local).AddTicks(5448) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Academics",
|
||||||
|
keyColumn: "AcademicId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 692, DateTimeKind.Local).AddTicks(5558), new DateTime(2025, 10, 28, 11, 34, 41, 692, DateTimeKind.Local).AddTicks(5559) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Blogs",
|
||||||
|
keyColumn: "BlogUrl",
|
||||||
|
keyValue: "https://bangararaju.kottedi.in/blog",
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 693, DateTimeKind.Local).AddTicks(3195), new DateTime(2025, 10, 28, 11, 34, 41, 693, DateTimeKind.Local).AddTicks(3196) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Candidates",
|
||||||
|
keyColumn: "CandidateId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 690, DateTimeKind.Local).AddTicks(9239), new DateTime(2025, 10, 28, 11, 34, 41, 690, DateTimeKind.Local).AddTicks(9275) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 694, DateTimeKind.Local).AddTicks(3656), new DateTime(2025, 10, 28, 11, 34, 41, 694, DateTimeKind.Local).AddTicks(3657) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 694, DateTimeKind.Local).AddTicks(4150), new DateTime(2025, 10, 28, 11, 34, 41, 694, DateTimeKind.Local).AddTicks(4150) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 694, DateTimeKind.Local).AddTicks(4152), new DateTime(2025, 10, 28, 11, 34, 41, 694, DateTimeKind.Local).AddTicks(4153) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 4,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 694, DateTimeKind.Local).AddTicks(4154), new DateTime(2025, 10, 28, 11, 34, 41, 694, DateTimeKind.Local).AddTicks(4155) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 5,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 694, DateTimeKind.Local).AddTicks(4156), new DateTime(2025, 10, 28, 11, 34, 41, 694, DateTimeKind.Local).AddTicks(4156) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 6,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 694, DateTimeKind.Local).AddTicks(4161), new DateTime(2025, 10, 28, 11, 34, 41, 694, DateTimeKind.Local).AddTicks(4161) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 7,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 694, DateTimeKind.Local).AddTicks(4163), new DateTime(2025, 10, 28, 11, 34, 41, 694, DateTimeKind.Local).AddTicks(4163) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 8,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 694, DateTimeKind.Local).AddTicks(4164), new DateTime(2025, 10, 28, 11, 34, 41, 694, DateTimeKind.Local).AddTicks(4165) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Experiences",
|
||||||
|
keyColumn: "ExperienceId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 694, DateTimeKind.Local).AddTicks(375), new DateTime(2025, 10, 28, 11, 34, 41, 694, DateTimeKind.Local).AddTicks(377) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Experiences",
|
||||||
|
keyColumn: "ExperienceId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 694, DateTimeKind.Local).AddTicks(1466), new DateTime(2025, 10, 28, 11, 34, 41, 694, DateTimeKind.Local).AddTicks(1467) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Experiences",
|
||||||
|
keyColumn: "ExperienceId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 694, DateTimeKind.Local).AddTicks(1471), new DateTime(2025, 10, 28, 11, 34, 41, 694, DateTimeKind.Local).AddTicks(1472) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Experiences",
|
||||||
|
keyColumn: "ExperienceId",
|
||||||
|
keyValue: 4,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 694, DateTimeKind.Local).AddTicks(1475), new DateTime(2025, 10, 28, 11, 34, 41, 694, DateTimeKind.Local).AddTicks(1475) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Hobbies",
|
||||||
|
keyColumn: "HobbyId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 692, DateTimeKind.Local).AddTicks(2045), new DateTime(2025, 10, 28, 11, 34, 41, 692, DateTimeKind.Local).AddTicks(2046) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Hobbies",
|
||||||
|
keyColumn: "HobbyId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 692, DateTimeKind.Local).AddTicks(2725), new DateTime(2025, 10, 28, 11, 34, 41, 692, DateTimeKind.Local).AddTicks(2725) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Hobbies",
|
||||||
|
keyColumn: "HobbyId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 692, DateTimeKind.Local).AddTicks(2728), new DateTime(2025, 10, 28, 11, 34, 41, 692, DateTimeKind.Local).AddTicks(2729) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Hobbies",
|
||||||
|
keyColumn: "HobbyId",
|
||||||
|
keyValue: 4,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 692, DateTimeKind.Local).AddTicks(2730), new DateTime(2025, 10, 28, 11, 34, 41, 692, DateTimeKind.Local).AddTicks(2731) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Posts",
|
||||||
|
keyColumn: "PostId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 693, DateTimeKind.Local).AddTicks(7094), new DateTime(2025, 10, 28, 11, 34, 41, 693, DateTimeKind.Local).AddTicks(6266) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Posts",
|
||||||
|
keyColumn: "PostId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 693, DateTimeKind.Local).AddTicks(7426), new DateTime(2025, 10, 28, 11, 34, 41, 693, DateTimeKind.Local).AddTicks(7423) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Posts",
|
||||||
|
keyColumn: "PostId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 693, DateTimeKind.Local).AddTicks(7429), new DateTime(2025, 10, 28, 11, 34, 41, 693, DateTimeKind.Local).AddTicks(7428) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Projects",
|
||||||
|
keyColumn: "ProjectId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 693, DateTimeKind.Local).AddTicks(911), new DateTime(2025, 10, 28, 11, 34, 41, 693, DateTimeKind.Local).AddTicks(912) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Projects",
|
||||||
|
keyColumn: "ProjectId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 693, DateTimeKind.Local).AddTicks(2038), new DateTime(2025, 10, 28, 11, 34, 41, 693, DateTimeKind.Local).AddTicks(2039) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Projects",
|
||||||
|
keyColumn: "ProjectId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 693, DateTimeKind.Local).AddTicks(2042), new DateTime(2025, 10, 28, 11, 34, 41, 693, DateTimeKind.Local).AddTicks(2043) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Resumes",
|
||||||
|
keyColumn: "ResumeId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 691, DateTimeKind.Local).AddTicks(7935), new DateTime(2025, 10, 28, 11, 34, 41, 691, DateTimeKind.Local).AddTicks(7944) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Skills",
|
||||||
|
keyColumn: "SkillId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 692, DateTimeKind.Local).AddTicks(7751), new DateTime(2025, 10, 28, 11, 34, 41, 692, DateTimeKind.Local).AddTicks(7757) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Skills",
|
||||||
|
keyColumn: "SkillId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 692, DateTimeKind.Local).AddTicks(8313), new DateTime(2025, 10, 28, 11, 34, 41, 692, DateTimeKind.Local).AddTicks(8314) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Skills",
|
||||||
|
keyColumn: "SkillId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 692, DateTimeKind.Local).AddTicks(8316), new DateTime(2025, 10, 28, 11, 34, 41, 692, DateTimeKind.Local).AddTicks(8317) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Skills",
|
||||||
|
keyColumn: "SkillId",
|
||||||
|
keyValue: 4,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 692, DateTimeKind.Local).AddTicks(8318), new DateTime(2025, 10, 28, 11, 34, 41, 692, DateTimeKind.Local).AddTicks(8318) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Skills",
|
||||||
|
keyColumn: "SkillId",
|
||||||
|
keyValue: 5,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 692, DateTimeKind.Local).AddTicks(8320), new DateTime(2025, 10, 28, 11, 34, 41, 692, DateTimeKind.Local).AddTicks(8320) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "SocialLinks",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 691, DateTimeKind.Local).AddTicks(9726), new DateTime(2025, 10, 28, 11, 34, 41, 691, DateTimeKind.Local).AddTicks(9728) });
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Academics",
|
||||||
|
keyColumn: "AcademicId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 893, DateTimeKind.Local).AddTicks(5183), new DateTime(2025, 10, 8, 13, 51, 15, 893, DateTimeKind.Local).AddTicks(5185) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Academics",
|
||||||
|
keyColumn: "AcademicId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 893, DateTimeKind.Local).AddTicks(6375), new DateTime(2025, 10, 8, 13, 51, 15, 893, DateTimeKind.Local).AddTicks(6376) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Academics",
|
||||||
|
keyColumn: "AcademicId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 893, DateTimeKind.Local).AddTicks(6564), new DateTime(2025, 10, 8, 13, 51, 15, 893, DateTimeKind.Local).AddTicks(6565) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Blogs",
|
||||||
|
keyColumn: "BlogUrl",
|
||||||
|
keyValue: "https://bangararaju.kottedi.in/blog",
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 894, DateTimeKind.Local).AddTicks(8487), new DateTime(2025, 10, 8, 13, 51, 15, 894, DateTimeKind.Local).AddTicks(8489) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Candidates",
|
||||||
|
keyColumn: "CandidateId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 890, DateTimeKind.Local).AddTicks(2043), new DateTime(2025, 10, 8, 13, 51, 15, 890, DateTimeKind.Local).AddTicks(2090) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 896, DateTimeKind.Local).AddTicks(9986), new DateTime(2025, 10, 8, 13, 51, 15, 896, DateTimeKind.Local).AddTicks(9994) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 897, DateTimeKind.Local).AddTicks(902), new DateTime(2025, 10, 8, 13, 51, 15, 897, DateTimeKind.Local).AddTicks(903) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 897, DateTimeKind.Local).AddTicks(908), new DateTime(2025, 10, 8, 13, 51, 15, 897, DateTimeKind.Local).AddTicks(909) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 4,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 897, DateTimeKind.Local).AddTicks(912), new DateTime(2025, 10, 8, 13, 51, 15, 897, DateTimeKind.Local).AddTicks(913) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 5,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 897, DateTimeKind.Local).AddTicks(916), new DateTime(2025, 10, 8, 13, 51, 15, 897, DateTimeKind.Local).AddTicks(917) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 6,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 897, DateTimeKind.Local).AddTicks(931), new DateTime(2025, 10, 8, 13, 51, 15, 897, DateTimeKind.Local).AddTicks(932) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 7,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 897, DateTimeKind.Local).AddTicks(936), new DateTime(2025, 10, 8, 13, 51, 15, 897, DateTimeKind.Local).AddTicks(937) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 8,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 897, DateTimeKind.Local).AddTicks(940), new DateTime(2025, 10, 8, 13, 51, 15, 897, DateTimeKind.Local).AddTicks(941) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Experiences",
|
||||||
|
keyColumn: "ExperienceId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 896, DateTimeKind.Local).AddTicks(2643), new DateTime(2025, 10, 8, 13, 51, 15, 896, DateTimeKind.Local).AddTicks(2652) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Experiences",
|
||||||
|
keyColumn: "ExperienceId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 896, DateTimeKind.Local).AddTicks(4851), new DateTime(2025, 10, 8, 13, 51, 15, 896, DateTimeKind.Local).AddTicks(4852) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Experiences",
|
||||||
|
keyColumn: "ExperienceId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 896, DateTimeKind.Local).AddTicks(4859), new DateTime(2025, 10, 8, 13, 51, 15, 896, DateTimeKind.Local).AddTicks(4861) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Experiences",
|
||||||
|
keyColumn: "ExperienceId",
|
||||||
|
keyValue: 4,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 896, DateTimeKind.Local).AddTicks(4866), new DateTime(2025, 10, 8, 13, 51, 15, 896, DateTimeKind.Local).AddTicks(4867) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Hobbies",
|
||||||
|
keyColumn: "HobbyId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 893, DateTimeKind.Local).AddTicks(447), new DateTime(2025, 10, 8, 13, 51, 15, 893, DateTimeKind.Local).AddTicks(450) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Hobbies",
|
||||||
|
keyColumn: "HobbyId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 893, DateTimeKind.Local).AddTicks(1567), new DateTime(2025, 10, 8, 13, 51, 15, 893, DateTimeKind.Local).AddTicks(1568) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Hobbies",
|
||||||
|
keyColumn: "HobbyId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 893, DateTimeKind.Local).AddTicks(1680), new DateTime(2025, 10, 8, 13, 51, 15, 893, DateTimeKind.Local).AddTicks(1681) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Hobbies",
|
||||||
|
keyColumn: "HobbyId",
|
||||||
|
keyValue: 4,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 893, DateTimeKind.Local).AddTicks(1686), new DateTime(2025, 10, 8, 13, 51, 15, 893, DateTimeKind.Local).AddTicks(1686) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Posts",
|
||||||
|
keyColumn: "PostId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 895, DateTimeKind.Local).AddTicks(4722), new DateTime(2025, 10, 8, 13, 51, 15, 895, DateTimeKind.Local).AddTicks(3517) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Posts",
|
||||||
|
keyColumn: "PostId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 895, DateTimeKind.Local).AddTicks(5740), new DateTime(2025, 10, 8, 13, 51, 15, 895, DateTimeKind.Local).AddTicks(5735) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Posts",
|
||||||
|
keyColumn: "PostId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 895, DateTimeKind.Local).AddTicks(5747), new DateTime(2025, 10, 8, 13, 51, 15, 895, DateTimeKind.Local).AddTicks(5744) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Projects",
|
||||||
|
keyColumn: "ProjectId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 894, DateTimeKind.Local).AddTicks(4258), new DateTime(2025, 10, 8, 13, 51, 15, 894, DateTimeKind.Local).AddTicks(4259) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Projects",
|
||||||
|
keyColumn: "ProjectId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 894, DateTimeKind.Local).AddTicks(6406), new DateTime(2025, 10, 8, 13, 51, 15, 894, DateTimeKind.Local).AddTicks(6411) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Projects",
|
||||||
|
keyColumn: "ProjectId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 894, DateTimeKind.Local).AddTicks(6419), new DateTime(2025, 10, 8, 13, 51, 15, 894, DateTimeKind.Local).AddTicks(6420) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Resumes",
|
||||||
|
keyColumn: "ResumeId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 892, DateTimeKind.Local).AddTicks(2802), new DateTime(2025, 10, 8, 13, 51, 15, 892, DateTimeKind.Local).AddTicks(2819) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Skills",
|
||||||
|
keyColumn: "SkillId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 893, DateTimeKind.Local).AddTicks(9417), new DateTime(2025, 10, 8, 13, 51, 15, 893, DateTimeKind.Local).AddTicks(9419) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Skills",
|
||||||
|
keyColumn: "SkillId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 894, DateTimeKind.Local).AddTicks(241), new DateTime(2025, 10, 8, 13, 51, 15, 894, DateTimeKind.Local).AddTicks(242) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Skills",
|
||||||
|
keyColumn: "SkillId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 894, DateTimeKind.Local).AddTicks(246), new DateTime(2025, 10, 8, 13, 51, 15, 894, DateTimeKind.Local).AddTicks(246) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Skills",
|
||||||
|
keyColumn: "SkillId",
|
||||||
|
keyValue: 4,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 894, DateTimeKind.Local).AddTicks(249), new DateTime(2025, 10, 8, 13, 51, 15, 894, DateTimeKind.Local).AddTicks(250) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Skills",
|
||||||
|
keyColumn: "SkillId",
|
||||||
|
keyValue: 5,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 894, DateTimeKind.Local).AddTicks(253), new DateTime(2025, 10, 8, 13, 51, 15, 894, DateTimeKind.Local).AddTicks(254) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "SocialLinks",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 8, 13, 51, 15, 892, DateTimeKind.Local).AddTicks(6490), new DateTime(2025, 10, 8, 13, 51, 15, 892, DateTimeKind.Local).AddTicks(6498) });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
1485
PortBlog.API/Migrations/20251028062356_User_RefreshTokens_Rerun.Designer.cs
generated
Normal file
1485
PortBlog.API/Migrations/20251028062356_User_RefreshTokens_Rerun.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,561 @@
|
|||||||
|
using System;
|
||||||
|
using Microsoft.EntityFrameworkCore.Metadata;
|
||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace PortBlog.API.Migrations
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
public partial class User_RefreshTokens_Rerun : Migration
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "Users",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
UserId = table.Column<int>(type: "int", nullable: false)
|
||||||
|
.Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn),
|
||||||
|
Username = table.Column<string>(type: "longtext", nullable: false)
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
||||||
|
Email = table.Column<string>(type: "longtext", nullable: false)
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
||||||
|
CreatedAt = table.Column<DateTime>(type: "datetime(6)", nullable: false)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_Users", x => x.UserId);
|
||||||
|
})
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4");
|
||||||
|
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "RefreshTokens",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
TokenId = table.Column<int>(type: "int", nullable: false)
|
||||||
|
.Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn),
|
||||||
|
UserId = table.Column<int>(type: "int", nullable: false),
|
||||||
|
Token = table.Column<string>(type: "longtext", nullable: false)
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
||||||
|
JwtId = table.Column<string>(type: "longtext", nullable: false)
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
||||||
|
ExpiryDate = table.Column<DateTime>(type: "datetime(6)", nullable: false),
|
||||||
|
CreatedAt = table.Column<DateTime>(type: "datetime(6)", nullable: false),
|
||||||
|
Revoked = table.Column<bool>(type: "tinyint(1)", nullable: false),
|
||||||
|
ReplacedByToken = table.Column<string>(type: "longtext", nullable: false)
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
||||||
|
DeviceInfo = table.Column<string>(type: "longtext", nullable: false)
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4")
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_RefreshTokens", x => x.TokenId);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_RefreshTokens_Users_UserId",
|
||||||
|
column: x => x.UserId,
|
||||||
|
principalTable: "Users",
|
||||||
|
principalColumn: "UserId",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
})
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4");
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Academics",
|
||||||
|
keyColumn: "AcademicId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 599, DateTimeKind.Local).AddTicks(8319), new DateTime(2025, 10, 28, 11, 53, 55, 599, DateTimeKind.Local).AddTicks(8321) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Academics",
|
||||||
|
keyColumn: "AcademicId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 599, DateTimeKind.Local).AddTicks(8990), new DateTime(2025, 10, 28, 11, 53, 55, 599, DateTimeKind.Local).AddTicks(8991) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Academics",
|
||||||
|
keyColumn: "AcademicId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 599, DateTimeKind.Local).AddTicks(9095), new DateTime(2025, 10, 28, 11, 53, 55, 599, DateTimeKind.Local).AddTicks(9096) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Blogs",
|
||||||
|
keyColumn: "BlogUrl",
|
||||||
|
keyValue: "https://bangararaju.kottedi.in/blog",
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 600, DateTimeKind.Local).AddTicks(6331), new DateTime(2025, 10, 28, 11, 53, 55, 600, DateTimeKind.Local).AddTicks(6332) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Candidates",
|
||||||
|
keyColumn: "CandidateId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 597, DateTimeKind.Local).AddTicks(6457), new DateTime(2025, 10, 28, 11, 53, 55, 597, DateTimeKind.Local).AddTicks(6491) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 601, DateTimeKind.Local).AddTicks(6348), new DateTime(2025, 10, 28, 11, 53, 55, 601, DateTimeKind.Local).AddTicks(6349) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 601, DateTimeKind.Local).AddTicks(6828), new DateTime(2025, 10, 28, 11, 53, 55, 601, DateTimeKind.Local).AddTicks(6829) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 601, DateTimeKind.Local).AddTicks(6831), new DateTime(2025, 10, 28, 11, 53, 55, 601, DateTimeKind.Local).AddTicks(6832) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 4,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 601, DateTimeKind.Local).AddTicks(6834), new DateTime(2025, 10, 28, 11, 53, 55, 601, DateTimeKind.Local).AddTicks(6834) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 5,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 601, DateTimeKind.Local).AddTicks(6836), new DateTime(2025, 10, 28, 11, 53, 55, 601, DateTimeKind.Local).AddTicks(6836) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 6,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 601, DateTimeKind.Local).AddTicks(6842), new DateTime(2025, 10, 28, 11, 53, 55, 601, DateTimeKind.Local).AddTicks(6842) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 7,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 601, DateTimeKind.Local).AddTicks(6844), new DateTime(2025, 10, 28, 11, 53, 55, 601, DateTimeKind.Local).AddTicks(6844) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 8,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 601, DateTimeKind.Local).AddTicks(6846), new DateTime(2025, 10, 28, 11, 53, 55, 601, DateTimeKind.Local).AddTicks(6846) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Experiences",
|
||||||
|
keyColumn: "ExperienceId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 601, DateTimeKind.Local).AddTicks(3165), new DateTime(2025, 10, 28, 11, 53, 55, 601, DateTimeKind.Local).AddTicks(3167) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Experiences",
|
||||||
|
keyColumn: "ExperienceId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 601, DateTimeKind.Local).AddTicks(4192), new DateTime(2025, 10, 28, 11, 53, 55, 601, DateTimeKind.Local).AddTicks(4193) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Experiences",
|
||||||
|
keyColumn: "ExperienceId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 601, DateTimeKind.Local).AddTicks(4197), new DateTime(2025, 10, 28, 11, 53, 55, 601, DateTimeKind.Local).AddTicks(4197) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Experiences",
|
||||||
|
keyColumn: "ExperienceId",
|
||||||
|
keyValue: 4,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 601, DateTimeKind.Local).AddTicks(4201), new DateTime(2025, 10, 28, 11, 53, 55, 601, DateTimeKind.Local).AddTicks(4201) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Hobbies",
|
||||||
|
keyColumn: "HobbyId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 599, DateTimeKind.Local).AddTicks(5682), new DateTime(2025, 10, 28, 11, 53, 55, 599, DateTimeKind.Local).AddTicks(5683) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Hobbies",
|
||||||
|
keyColumn: "HobbyId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 599, DateTimeKind.Local).AddTicks(6359), new DateTime(2025, 10, 28, 11, 53, 55, 599, DateTimeKind.Local).AddTicks(6360) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Hobbies",
|
||||||
|
keyColumn: "HobbyId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 599, DateTimeKind.Local).AddTicks(6363), new DateTime(2025, 10, 28, 11, 53, 55, 599, DateTimeKind.Local).AddTicks(6363) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Hobbies",
|
||||||
|
keyColumn: "HobbyId",
|
||||||
|
keyValue: 4,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 599, DateTimeKind.Local).AddTicks(6365), new DateTime(2025, 10, 28, 11, 53, 55, 599, DateTimeKind.Local).AddTicks(6366) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Posts",
|
||||||
|
keyColumn: "PostId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 601, DateTimeKind.Local).AddTicks(87), new DateTime(2025, 10, 28, 11, 53, 55, 600, DateTimeKind.Local).AddTicks(9329) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Posts",
|
||||||
|
keyColumn: "PostId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 601, DateTimeKind.Local).AddTicks(390), new DateTime(2025, 10, 28, 11, 53, 55, 601, DateTimeKind.Local).AddTicks(387) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Posts",
|
||||||
|
keyColumn: "PostId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 601, DateTimeKind.Local).AddTicks(394), new DateTime(2025, 10, 28, 11, 53, 55, 601, DateTimeKind.Local).AddTicks(392) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Projects",
|
||||||
|
keyColumn: "ProjectId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 600, DateTimeKind.Local).AddTicks(4003), new DateTime(2025, 10, 28, 11, 53, 55, 600, DateTimeKind.Local).AddTicks(4005) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Projects",
|
||||||
|
keyColumn: "ProjectId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 600, DateTimeKind.Local).AddTicks(5048), new DateTime(2025, 10, 28, 11, 53, 55, 600, DateTimeKind.Local).AddTicks(5049) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Projects",
|
||||||
|
keyColumn: "ProjectId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 600, DateTimeKind.Local).AddTicks(5120), new DateTime(2025, 10, 28, 11, 53, 55, 600, DateTimeKind.Local).AddTicks(5120) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Resumes",
|
||||||
|
keyColumn: "ResumeId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 599, DateTimeKind.Local).AddTicks(1505), new DateTime(2025, 10, 28, 11, 53, 55, 599, DateTimeKind.Local).AddTicks(1512) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Skills",
|
||||||
|
keyColumn: "SkillId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 600, DateTimeKind.Local).AddTicks(784), new DateTime(2025, 10, 28, 11, 53, 55, 600, DateTimeKind.Local).AddTicks(787) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Skills",
|
||||||
|
keyColumn: "SkillId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 600, DateTimeKind.Local).AddTicks(1478), new DateTime(2025, 10, 28, 11, 53, 55, 600, DateTimeKind.Local).AddTicks(1481) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Skills",
|
||||||
|
keyColumn: "SkillId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 600, DateTimeKind.Local).AddTicks(1484), new DateTime(2025, 10, 28, 11, 53, 55, 600, DateTimeKind.Local).AddTicks(1484) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Skills",
|
||||||
|
keyColumn: "SkillId",
|
||||||
|
keyValue: 4,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 600, DateTimeKind.Local).AddTicks(1486), new DateTime(2025, 10, 28, 11, 53, 55, 600, DateTimeKind.Local).AddTicks(1486) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Skills",
|
||||||
|
keyColumn: "SkillId",
|
||||||
|
keyValue: 5,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 600, DateTimeKind.Local).AddTicks(1488), new DateTime(2025, 10, 28, 11, 53, 55, 600, DateTimeKind.Local).AddTicks(1488) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "SocialLinks",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 599, DateTimeKind.Local).AddTicks(3502), new DateTime(2025, 10, 28, 11, 53, 55, 599, DateTimeKind.Local).AddTicks(3506) });
|
||||||
|
|
||||||
|
migrationBuilder.InsertData(
|
||||||
|
table: "Users",
|
||||||
|
columns: new[] { "UserId", "CreatedAt", "Email", "Username" },
|
||||||
|
values: new object[] { 1, new DateTime(2025, 10, 28, 6, 23, 55, 601, DateTimeKind.Utc).AddTicks(8545), "bangararaju.kottedi@gmail.com", "rajukottedi" });
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_RefreshTokens_UserId",
|
||||||
|
table: "RefreshTokens",
|
||||||
|
column: "UserId");
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "RefreshTokens");
|
||||||
|
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "Users");
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Academics",
|
||||||
|
keyColumn: "AcademicId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 692, DateTimeKind.Local).AddTicks(4652), new DateTime(2025, 10, 28, 11, 34, 41, 692, DateTimeKind.Local).AddTicks(4653) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Academics",
|
||||||
|
keyColumn: "AcademicId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 692, DateTimeKind.Local).AddTicks(5447), new DateTime(2025, 10, 28, 11, 34, 41, 692, DateTimeKind.Local).AddTicks(5448) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Academics",
|
||||||
|
keyColumn: "AcademicId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 692, DateTimeKind.Local).AddTicks(5558), new DateTime(2025, 10, 28, 11, 34, 41, 692, DateTimeKind.Local).AddTicks(5559) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Blogs",
|
||||||
|
keyColumn: "BlogUrl",
|
||||||
|
keyValue: "https://bangararaju.kottedi.in/blog",
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 693, DateTimeKind.Local).AddTicks(3195), new DateTime(2025, 10, 28, 11, 34, 41, 693, DateTimeKind.Local).AddTicks(3196) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Candidates",
|
||||||
|
keyColumn: "CandidateId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 690, DateTimeKind.Local).AddTicks(9239), new DateTime(2025, 10, 28, 11, 34, 41, 690, DateTimeKind.Local).AddTicks(9275) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 694, DateTimeKind.Local).AddTicks(3656), new DateTime(2025, 10, 28, 11, 34, 41, 694, DateTimeKind.Local).AddTicks(3657) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 694, DateTimeKind.Local).AddTicks(4150), new DateTime(2025, 10, 28, 11, 34, 41, 694, DateTimeKind.Local).AddTicks(4150) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 694, DateTimeKind.Local).AddTicks(4152), new DateTime(2025, 10, 28, 11, 34, 41, 694, DateTimeKind.Local).AddTicks(4153) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 4,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 694, DateTimeKind.Local).AddTicks(4154), new DateTime(2025, 10, 28, 11, 34, 41, 694, DateTimeKind.Local).AddTicks(4155) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 5,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 694, DateTimeKind.Local).AddTicks(4156), new DateTime(2025, 10, 28, 11, 34, 41, 694, DateTimeKind.Local).AddTicks(4156) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 6,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 694, DateTimeKind.Local).AddTicks(4161), new DateTime(2025, 10, 28, 11, 34, 41, 694, DateTimeKind.Local).AddTicks(4161) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 7,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 694, DateTimeKind.Local).AddTicks(4163), new DateTime(2025, 10, 28, 11, 34, 41, 694, DateTimeKind.Local).AddTicks(4163) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 8,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 694, DateTimeKind.Local).AddTicks(4164), new DateTime(2025, 10, 28, 11, 34, 41, 694, DateTimeKind.Local).AddTicks(4165) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Experiences",
|
||||||
|
keyColumn: "ExperienceId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 694, DateTimeKind.Local).AddTicks(375), new DateTime(2025, 10, 28, 11, 34, 41, 694, DateTimeKind.Local).AddTicks(377) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Experiences",
|
||||||
|
keyColumn: "ExperienceId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 694, DateTimeKind.Local).AddTicks(1466), new DateTime(2025, 10, 28, 11, 34, 41, 694, DateTimeKind.Local).AddTicks(1467) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Experiences",
|
||||||
|
keyColumn: "ExperienceId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 694, DateTimeKind.Local).AddTicks(1471), new DateTime(2025, 10, 28, 11, 34, 41, 694, DateTimeKind.Local).AddTicks(1472) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Experiences",
|
||||||
|
keyColumn: "ExperienceId",
|
||||||
|
keyValue: 4,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 694, DateTimeKind.Local).AddTicks(1475), new DateTime(2025, 10, 28, 11, 34, 41, 694, DateTimeKind.Local).AddTicks(1475) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Hobbies",
|
||||||
|
keyColumn: "HobbyId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 692, DateTimeKind.Local).AddTicks(2045), new DateTime(2025, 10, 28, 11, 34, 41, 692, DateTimeKind.Local).AddTicks(2046) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Hobbies",
|
||||||
|
keyColumn: "HobbyId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 692, DateTimeKind.Local).AddTicks(2725), new DateTime(2025, 10, 28, 11, 34, 41, 692, DateTimeKind.Local).AddTicks(2725) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Hobbies",
|
||||||
|
keyColumn: "HobbyId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 692, DateTimeKind.Local).AddTicks(2728), new DateTime(2025, 10, 28, 11, 34, 41, 692, DateTimeKind.Local).AddTicks(2729) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Hobbies",
|
||||||
|
keyColumn: "HobbyId",
|
||||||
|
keyValue: 4,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 692, DateTimeKind.Local).AddTicks(2730), new DateTime(2025, 10, 28, 11, 34, 41, 692, DateTimeKind.Local).AddTicks(2731) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Posts",
|
||||||
|
keyColumn: "PostId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 693, DateTimeKind.Local).AddTicks(7094), new DateTime(2025, 10, 28, 11, 34, 41, 693, DateTimeKind.Local).AddTicks(6266) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Posts",
|
||||||
|
keyColumn: "PostId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 693, DateTimeKind.Local).AddTicks(7426), new DateTime(2025, 10, 28, 11, 34, 41, 693, DateTimeKind.Local).AddTicks(7423) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Posts",
|
||||||
|
keyColumn: "PostId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 693, DateTimeKind.Local).AddTicks(7429), new DateTime(2025, 10, 28, 11, 34, 41, 693, DateTimeKind.Local).AddTicks(7428) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Projects",
|
||||||
|
keyColumn: "ProjectId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 693, DateTimeKind.Local).AddTicks(911), new DateTime(2025, 10, 28, 11, 34, 41, 693, DateTimeKind.Local).AddTicks(912) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Projects",
|
||||||
|
keyColumn: "ProjectId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 693, DateTimeKind.Local).AddTicks(2038), new DateTime(2025, 10, 28, 11, 34, 41, 693, DateTimeKind.Local).AddTicks(2039) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Projects",
|
||||||
|
keyColumn: "ProjectId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 693, DateTimeKind.Local).AddTicks(2042), new DateTime(2025, 10, 28, 11, 34, 41, 693, DateTimeKind.Local).AddTicks(2043) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Resumes",
|
||||||
|
keyColumn: "ResumeId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 691, DateTimeKind.Local).AddTicks(7935), new DateTime(2025, 10, 28, 11, 34, 41, 691, DateTimeKind.Local).AddTicks(7944) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Skills",
|
||||||
|
keyColumn: "SkillId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 692, DateTimeKind.Local).AddTicks(7751), new DateTime(2025, 10, 28, 11, 34, 41, 692, DateTimeKind.Local).AddTicks(7757) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Skills",
|
||||||
|
keyColumn: "SkillId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 692, DateTimeKind.Local).AddTicks(8313), new DateTime(2025, 10, 28, 11, 34, 41, 692, DateTimeKind.Local).AddTicks(8314) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Skills",
|
||||||
|
keyColumn: "SkillId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 692, DateTimeKind.Local).AddTicks(8316), new DateTime(2025, 10, 28, 11, 34, 41, 692, DateTimeKind.Local).AddTicks(8317) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Skills",
|
||||||
|
keyColumn: "SkillId",
|
||||||
|
keyValue: 4,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 692, DateTimeKind.Local).AddTicks(8318), new DateTime(2025, 10, 28, 11, 34, 41, 692, DateTimeKind.Local).AddTicks(8318) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Skills",
|
||||||
|
keyColumn: "SkillId",
|
||||||
|
keyValue: 5,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 692, DateTimeKind.Local).AddTicks(8320), new DateTime(2025, 10, 28, 11, 34, 41, 692, DateTimeKind.Local).AddTicks(8320) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "SocialLinks",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 34, 41, 691, DateTimeKind.Local).AddTicks(9726), new DateTime(2025, 10, 28, 11, 34, 41, 691, DateTimeKind.Local).AddTicks(9728) });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
1485
PortBlog.API/Migrations/20251029015746_User_RefreshTokens_Update.Designer.cs
generated
Normal file
1485
PortBlog.API/Migrations/20251029015746_User_RefreshTokens_Update.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,509 @@
|
|||||||
|
using System;
|
||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace PortBlog.API.Migrations
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
public partial class User_RefreshTokens_Update : Migration
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Academics",
|
||||||
|
keyColumn: "AcademicId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 780, DateTimeKind.Local).AddTicks(5159), new DateTime(2025, 10, 29, 7, 27, 45, 780, DateTimeKind.Local).AddTicks(5160) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Academics",
|
||||||
|
keyColumn: "AcademicId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 780, DateTimeKind.Local).AddTicks(5783), new DateTime(2025, 10, 29, 7, 27, 45, 780, DateTimeKind.Local).AddTicks(5784) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Academics",
|
||||||
|
keyColumn: "AcademicId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 780, DateTimeKind.Local).AddTicks(5866), new DateTime(2025, 10, 29, 7, 27, 45, 780, DateTimeKind.Local).AddTicks(5866) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Blogs",
|
||||||
|
keyColumn: "BlogUrl",
|
||||||
|
keyValue: "https://bangararaju.kottedi.in/blog",
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 781, DateTimeKind.Local).AddTicks(1546), new DateTime(2025, 10, 29, 7, 27, 45, 781, DateTimeKind.Local).AddTicks(1547) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Candidates",
|
||||||
|
keyColumn: "CandidateId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 779, DateTimeKind.Local).AddTicks(2626), new DateTime(2025, 10, 29, 7, 27, 45, 779, DateTimeKind.Local).AddTicks(2659) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 782, DateTimeKind.Local).AddTicks(394), new DateTime(2025, 10, 29, 7, 27, 45, 782, DateTimeKind.Local).AddTicks(395) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 782, DateTimeKind.Local).AddTicks(804), new DateTime(2025, 10, 29, 7, 27, 45, 782, DateTimeKind.Local).AddTicks(805) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 782, DateTimeKind.Local).AddTicks(807), new DateTime(2025, 10, 29, 7, 27, 45, 782, DateTimeKind.Local).AddTicks(807) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 4,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 782, DateTimeKind.Local).AddTicks(808), new DateTime(2025, 10, 29, 7, 27, 45, 782, DateTimeKind.Local).AddTicks(808) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 5,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 782, DateTimeKind.Local).AddTicks(810), new DateTime(2025, 10, 29, 7, 27, 45, 782, DateTimeKind.Local).AddTicks(810) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 6,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 782, DateTimeKind.Local).AddTicks(815), new DateTime(2025, 10, 29, 7, 27, 45, 782, DateTimeKind.Local).AddTicks(815) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 7,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 782, DateTimeKind.Local).AddTicks(816), new DateTime(2025, 10, 29, 7, 27, 45, 782, DateTimeKind.Local).AddTicks(817) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 8,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 782, DateTimeKind.Local).AddTicks(818), new DateTime(2025, 10, 29, 7, 27, 45, 782, DateTimeKind.Local).AddTicks(818) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Experiences",
|
||||||
|
keyColumn: "ExperienceId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 781, DateTimeKind.Local).AddTicks(7573), new DateTime(2025, 10, 29, 7, 27, 45, 781, DateTimeKind.Local).AddTicks(7579) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Experiences",
|
||||||
|
keyColumn: "ExperienceId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 781, DateTimeKind.Local).AddTicks(8490), new DateTime(2025, 10, 29, 7, 27, 45, 781, DateTimeKind.Local).AddTicks(8490) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Experiences",
|
||||||
|
keyColumn: "ExperienceId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 781, DateTimeKind.Local).AddTicks(8494), new DateTime(2025, 10, 29, 7, 27, 45, 781, DateTimeKind.Local).AddTicks(8494) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Experiences",
|
||||||
|
keyColumn: "ExperienceId",
|
||||||
|
keyValue: 4,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 781, DateTimeKind.Local).AddTicks(8497), new DateTime(2025, 10, 29, 7, 27, 45, 781, DateTimeKind.Local).AddTicks(8497) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Hobbies",
|
||||||
|
keyColumn: "HobbyId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 780, DateTimeKind.Local).AddTicks(2948), new DateTime(2025, 10, 29, 7, 27, 45, 780, DateTimeKind.Local).AddTicks(2949) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Hobbies",
|
||||||
|
keyColumn: "HobbyId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 780, DateTimeKind.Local).AddTicks(3600), new DateTime(2025, 10, 29, 7, 27, 45, 780, DateTimeKind.Local).AddTicks(3601) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Hobbies",
|
||||||
|
keyColumn: "HobbyId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 780, DateTimeKind.Local).AddTicks(3603), new DateTime(2025, 10, 29, 7, 27, 45, 780, DateTimeKind.Local).AddTicks(3604) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Hobbies",
|
||||||
|
keyColumn: "HobbyId",
|
||||||
|
keyValue: 4,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 780, DateTimeKind.Local).AddTicks(3605), new DateTime(2025, 10, 29, 7, 27, 45, 780, DateTimeKind.Local).AddTicks(3606) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Posts",
|
||||||
|
keyColumn: "PostId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 781, DateTimeKind.Local).AddTicks(4486), new DateTime(2025, 10, 29, 7, 27, 45, 781, DateTimeKind.Local).AddTicks(3878) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Posts",
|
||||||
|
keyColumn: "PostId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 781, DateTimeKind.Local).AddTicks(4730), new DateTime(2025, 10, 29, 7, 27, 45, 781, DateTimeKind.Local).AddTicks(4727) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Posts",
|
||||||
|
keyColumn: "PostId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 781, DateTimeKind.Local).AddTicks(4733), new DateTime(2025, 10, 29, 7, 27, 45, 781, DateTimeKind.Local).AddTicks(4731) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Projects",
|
||||||
|
keyColumn: "ProjectId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 780, DateTimeKind.Local).AddTicks(9719), new DateTime(2025, 10, 29, 7, 27, 45, 780, DateTimeKind.Local).AddTicks(9721) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Projects",
|
||||||
|
keyColumn: "ProjectId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 781, DateTimeKind.Local).AddTicks(628), new DateTime(2025, 10, 29, 7, 27, 45, 781, DateTimeKind.Local).AddTicks(629) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Projects",
|
||||||
|
keyColumn: "ProjectId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 781, DateTimeKind.Local).AddTicks(632), new DateTime(2025, 10, 29, 7, 27, 45, 781, DateTimeKind.Local).AddTicks(633) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Resumes",
|
||||||
|
keyColumn: "ResumeId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 779, DateTimeKind.Local).AddTicks(9805), new DateTime(2025, 10, 29, 7, 27, 45, 779, DateTimeKind.Local).AddTicks(9812) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Skills",
|
||||||
|
keyColumn: "SkillId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 780, DateTimeKind.Local).AddTicks(7273), new DateTime(2025, 10, 29, 7, 27, 45, 780, DateTimeKind.Local).AddTicks(7274) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Skills",
|
||||||
|
keyColumn: "SkillId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 780, DateTimeKind.Local).AddTicks(7731), new DateTime(2025, 10, 29, 7, 27, 45, 780, DateTimeKind.Local).AddTicks(7731) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Skills",
|
||||||
|
keyColumn: "SkillId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 780, DateTimeKind.Local).AddTicks(7733), new DateTime(2025, 10, 29, 7, 27, 45, 780, DateTimeKind.Local).AddTicks(7733) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Skills",
|
||||||
|
keyColumn: "SkillId",
|
||||||
|
keyValue: 4,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 780, DateTimeKind.Local).AddTicks(7735), new DateTime(2025, 10, 29, 7, 27, 45, 780, DateTimeKind.Local).AddTicks(7735) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Skills",
|
||||||
|
keyColumn: "SkillId",
|
||||||
|
keyValue: 5,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 780, DateTimeKind.Local).AddTicks(7736), new DateTime(2025, 10, 29, 7, 27, 45, 780, DateTimeKind.Local).AddTicks(7737) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "SocialLinks",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 780, DateTimeKind.Local).AddTicks(1156), new DateTime(2025, 10, 29, 7, 27, 45, 780, DateTimeKind.Local).AddTicks(1157) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Users",
|
||||||
|
keyColumn: "UserId",
|
||||||
|
keyValue: 1,
|
||||||
|
column: "CreatedAt",
|
||||||
|
value: new DateTime(2025, 10, 29, 1, 57, 45, 782, DateTimeKind.Utc).AddTicks(1816));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Academics",
|
||||||
|
keyColumn: "AcademicId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 599, DateTimeKind.Local).AddTicks(8319), new DateTime(2025, 10, 28, 11, 53, 55, 599, DateTimeKind.Local).AddTicks(8321) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Academics",
|
||||||
|
keyColumn: "AcademicId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 599, DateTimeKind.Local).AddTicks(8990), new DateTime(2025, 10, 28, 11, 53, 55, 599, DateTimeKind.Local).AddTicks(8991) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Academics",
|
||||||
|
keyColumn: "AcademicId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 599, DateTimeKind.Local).AddTicks(9095), new DateTime(2025, 10, 28, 11, 53, 55, 599, DateTimeKind.Local).AddTicks(9096) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Blogs",
|
||||||
|
keyColumn: "BlogUrl",
|
||||||
|
keyValue: "https://bangararaju.kottedi.in/blog",
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 600, DateTimeKind.Local).AddTicks(6331), new DateTime(2025, 10, 28, 11, 53, 55, 600, DateTimeKind.Local).AddTicks(6332) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Candidates",
|
||||||
|
keyColumn: "CandidateId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 597, DateTimeKind.Local).AddTicks(6457), new DateTime(2025, 10, 28, 11, 53, 55, 597, DateTimeKind.Local).AddTicks(6491) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 601, DateTimeKind.Local).AddTicks(6348), new DateTime(2025, 10, 28, 11, 53, 55, 601, DateTimeKind.Local).AddTicks(6349) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 601, DateTimeKind.Local).AddTicks(6828), new DateTime(2025, 10, 28, 11, 53, 55, 601, DateTimeKind.Local).AddTicks(6829) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 601, DateTimeKind.Local).AddTicks(6831), new DateTime(2025, 10, 28, 11, 53, 55, 601, DateTimeKind.Local).AddTicks(6832) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 4,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 601, DateTimeKind.Local).AddTicks(6834), new DateTime(2025, 10, 28, 11, 53, 55, 601, DateTimeKind.Local).AddTicks(6834) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 5,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 601, DateTimeKind.Local).AddTicks(6836), new DateTime(2025, 10, 28, 11, 53, 55, 601, DateTimeKind.Local).AddTicks(6836) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 6,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 601, DateTimeKind.Local).AddTicks(6842), new DateTime(2025, 10, 28, 11, 53, 55, 601, DateTimeKind.Local).AddTicks(6842) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 7,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 601, DateTimeKind.Local).AddTicks(6844), new DateTime(2025, 10, 28, 11, 53, 55, 601, DateTimeKind.Local).AddTicks(6844) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 8,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 601, DateTimeKind.Local).AddTicks(6846), new DateTime(2025, 10, 28, 11, 53, 55, 601, DateTimeKind.Local).AddTicks(6846) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Experiences",
|
||||||
|
keyColumn: "ExperienceId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 601, DateTimeKind.Local).AddTicks(3165), new DateTime(2025, 10, 28, 11, 53, 55, 601, DateTimeKind.Local).AddTicks(3167) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Experiences",
|
||||||
|
keyColumn: "ExperienceId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 601, DateTimeKind.Local).AddTicks(4192), new DateTime(2025, 10, 28, 11, 53, 55, 601, DateTimeKind.Local).AddTicks(4193) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Experiences",
|
||||||
|
keyColumn: "ExperienceId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 601, DateTimeKind.Local).AddTicks(4197), new DateTime(2025, 10, 28, 11, 53, 55, 601, DateTimeKind.Local).AddTicks(4197) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Experiences",
|
||||||
|
keyColumn: "ExperienceId",
|
||||||
|
keyValue: 4,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 601, DateTimeKind.Local).AddTicks(4201), new DateTime(2025, 10, 28, 11, 53, 55, 601, DateTimeKind.Local).AddTicks(4201) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Hobbies",
|
||||||
|
keyColumn: "HobbyId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 599, DateTimeKind.Local).AddTicks(5682), new DateTime(2025, 10, 28, 11, 53, 55, 599, DateTimeKind.Local).AddTicks(5683) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Hobbies",
|
||||||
|
keyColumn: "HobbyId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 599, DateTimeKind.Local).AddTicks(6359), new DateTime(2025, 10, 28, 11, 53, 55, 599, DateTimeKind.Local).AddTicks(6360) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Hobbies",
|
||||||
|
keyColumn: "HobbyId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 599, DateTimeKind.Local).AddTicks(6363), new DateTime(2025, 10, 28, 11, 53, 55, 599, DateTimeKind.Local).AddTicks(6363) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Hobbies",
|
||||||
|
keyColumn: "HobbyId",
|
||||||
|
keyValue: 4,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 599, DateTimeKind.Local).AddTicks(6365), new DateTime(2025, 10, 28, 11, 53, 55, 599, DateTimeKind.Local).AddTicks(6366) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Posts",
|
||||||
|
keyColumn: "PostId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 601, DateTimeKind.Local).AddTicks(87), new DateTime(2025, 10, 28, 11, 53, 55, 600, DateTimeKind.Local).AddTicks(9329) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Posts",
|
||||||
|
keyColumn: "PostId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 601, DateTimeKind.Local).AddTicks(390), new DateTime(2025, 10, 28, 11, 53, 55, 601, DateTimeKind.Local).AddTicks(387) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Posts",
|
||||||
|
keyColumn: "PostId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 601, DateTimeKind.Local).AddTicks(394), new DateTime(2025, 10, 28, 11, 53, 55, 601, DateTimeKind.Local).AddTicks(392) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Projects",
|
||||||
|
keyColumn: "ProjectId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 600, DateTimeKind.Local).AddTicks(4003), new DateTime(2025, 10, 28, 11, 53, 55, 600, DateTimeKind.Local).AddTicks(4005) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Projects",
|
||||||
|
keyColumn: "ProjectId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 600, DateTimeKind.Local).AddTicks(5048), new DateTime(2025, 10, 28, 11, 53, 55, 600, DateTimeKind.Local).AddTicks(5049) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Projects",
|
||||||
|
keyColumn: "ProjectId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 600, DateTimeKind.Local).AddTicks(5120), new DateTime(2025, 10, 28, 11, 53, 55, 600, DateTimeKind.Local).AddTicks(5120) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Resumes",
|
||||||
|
keyColumn: "ResumeId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 599, DateTimeKind.Local).AddTicks(1505), new DateTime(2025, 10, 28, 11, 53, 55, 599, DateTimeKind.Local).AddTicks(1512) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Skills",
|
||||||
|
keyColumn: "SkillId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 600, DateTimeKind.Local).AddTicks(784), new DateTime(2025, 10, 28, 11, 53, 55, 600, DateTimeKind.Local).AddTicks(787) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Skills",
|
||||||
|
keyColumn: "SkillId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 600, DateTimeKind.Local).AddTicks(1478), new DateTime(2025, 10, 28, 11, 53, 55, 600, DateTimeKind.Local).AddTicks(1481) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Skills",
|
||||||
|
keyColumn: "SkillId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 600, DateTimeKind.Local).AddTicks(1484), new DateTime(2025, 10, 28, 11, 53, 55, 600, DateTimeKind.Local).AddTicks(1484) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Skills",
|
||||||
|
keyColumn: "SkillId",
|
||||||
|
keyValue: 4,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 600, DateTimeKind.Local).AddTicks(1486), new DateTime(2025, 10, 28, 11, 53, 55, 600, DateTimeKind.Local).AddTicks(1486) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Skills",
|
||||||
|
keyColumn: "SkillId",
|
||||||
|
keyValue: 5,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 600, DateTimeKind.Local).AddTicks(1488), new DateTime(2025, 10, 28, 11, 53, 55, 600, DateTimeKind.Local).AddTicks(1488) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "SocialLinks",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 28, 11, 53, 55, 599, DateTimeKind.Local).AddTicks(3502), new DateTime(2025, 10, 28, 11, 53, 55, 599, DateTimeKind.Local).AddTicks(3506) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Users",
|
||||||
|
keyColumn: "UserId",
|
||||||
|
keyValue: 1,
|
||||||
|
column: "CreatedAt",
|
||||||
|
value: new DateTime(2025, 10, 28, 6, 23, 55, 601, DateTimeKind.Utc).AddTicks(8545));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
1484
PortBlog.API/Migrations/20251113135040_update-refreshtoken.Designer.cs
generated
Normal file
1484
PortBlog.API/Migrations/20251113135040_update-refreshtoken.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
537
PortBlog.API/Migrations/20251113135040_update-refreshtoken.cs
Normal file
537
PortBlog.API/Migrations/20251113135040_update-refreshtoken.cs
Normal file
@ -0,0 +1,537 @@
|
|||||||
|
using System;
|
||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace PortBlog.API.Migrations
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
public partial class updaterefreshtoken : Migration
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.AlterColumn<string>(
|
||||||
|
name: "ReplacedByToken",
|
||||||
|
table: "RefreshTokens",
|
||||||
|
type: "longtext",
|
||||||
|
nullable: true,
|
||||||
|
oldClrType: typeof(string),
|
||||||
|
oldType: "longtext")
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4")
|
||||||
|
.OldAnnotation("MySql:CharSet", "utf8mb4");
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Academics",
|
||||||
|
keyColumn: "AcademicId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 11, 13, 19, 20, 39, 301, DateTimeKind.Local).AddTicks(1251), new DateTime(2025, 11, 13, 19, 20, 39, 301, DateTimeKind.Local).AddTicks(1252) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Academics",
|
||||||
|
keyColumn: "AcademicId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 11, 13, 19, 20, 39, 301, DateTimeKind.Local).AddTicks(2024), new DateTime(2025, 11, 13, 19, 20, 39, 301, DateTimeKind.Local).AddTicks(2024) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Academics",
|
||||||
|
keyColumn: "AcademicId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 11, 13, 19, 20, 39, 301, DateTimeKind.Local).AddTicks(2184), new DateTime(2025, 11, 13, 19, 20, 39, 301, DateTimeKind.Local).AddTicks(2184) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Blogs",
|
||||||
|
keyColumn: "BlogUrl",
|
||||||
|
keyValue: "https://bangararaju.kottedi.in/blog",
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 11, 13, 19, 20, 39, 301, DateTimeKind.Local).AddTicks(9145), new DateTime(2025, 11, 13, 19, 20, 39, 301, DateTimeKind.Local).AddTicks(9146) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Candidates",
|
||||||
|
keyColumn: "CandidateId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 11, 13, 19, 20, 39, 299, DateTimeKind.Local).AddTicks(5480), new DateTime(2025, 11, 13, 19, 20, 39, 299, DateTimeKind.Local).AddTicks(5515) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 11, 13, 19, 20, 39, 303, DateTimeKind.Local).AddTicks(462), new DateTime(2025, 11, 13, 19, 20, 39, 303, DateTimeKind.Local).AddTicks(464) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 11, 13, 19, 20, 39, 303, DateTimeKind.Local).AddTicks(988), new DateTime(2025, 11, 13, 19, 20, 39, 303, DateTimeKind.Local).AddTicks(988) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 11, 13, 19, 20, 39, 303, DateTimeKind.Local).AddTicks(991), new DateTime(2025, 11, 13, 19, 20, 39, 303, DateTimeKind.Local).AddTicks(991) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 4,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 11, 13, 19, 20, 39, 303, DateTimeKind.Local).AddTicks(993), new DateTime(2025, 11, 13, 19, 20, 39, 303, DateTimeKind.Local).AddTicks(993) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 5,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 11, 13, 19, 20, 39, 303, DateTimeKind.Local).AddTicks(994), new DateTime(2025, 11, 13, 19, 20, 39, 303, DateTimeKind.Local).AddTicks(995) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 6,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 11, 13, 19, 20, 39, 303, DateTimeKind.Local).AddTicks(1004), new DateTime(2025, 11, 13, 19, 20, 39, 303, DateTimeKind.Local).AddTicks(1005) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 7,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 11, 13, 19, 20, 39, 303, DateTimeKind.Local).AddTicks(1006), new DateTime(2025, 11, 13, 19, 20, 39, 303, DateTimeKind.Local).AddTicks(1007) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 8,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 11, 13, 19, 20, 39, 303, DateTimeKind.Local).AddTicks(1008), new DateTime(2025, 11, 13, 19, 20, 39, 303, DateTimeKind.Local).AddTicks(1009) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Experiences",
|
||||||
|
keyColumn: "ExperienceId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 11, 13, 19, 20, 39, 302, DateTimeKind.Local).AddTicks(6786), new DateTime(2025, 11, 13, 19, 20, 39, 302, DateTimeKind.Local).AddTicks(6793) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Experiences",
|
||||||
|
keyColumn: "ExperienceId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 11, 13, 19, 20, 39, 302, DateTimeKind.Local).AddTicks(7965), new DateTime(2025, 11, 13, 19, 20, 39, 302, DateTimeKind.Local).AddTicks(7966) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Experiences",
|
||||||
|
keyColumn: "ExperienceId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 11, 13, 19, 20, 39, 302, DateTimeKind.Local).AddTicks(7970), new DateTime(2025, 11, 13, 19, 20, 39, 302, DateTimeKind.Local).AddTicks(7971) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Experiences",
|
||||||
|
keyColumn: "ExperienceId",
|
||||||
|
keyValue: 4,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 11, 13, 19, 20, 39, 302, DateTimeKind.Local).AddTicks(8081), new DateTime(2025, 11, 13, 19, 20, 39, 302, DateTimeKind.Local).AddTicks(8081) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Hobbies",
|
||||||
|
keyColumn: "HobbyId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 11, 13, 19, 20, 39, 300, DateTimeKind.Local).AddTicks(8352), new DateTime(2025, 11, 13, 19, 20, 39, 300, DateTimeKind.Local).AddTicks(8353) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Hobbies",
|
||||||
|
keyColumn: "HobbyId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 11, 13, 19, 20, 39, 300, DateTimeKind.Local).AddTicks(9201), new DateTime(2025, 11, 13, 19, 20, 39, 300, DateTimeKind.Local).AddTicks(9201) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Hobbies",
|
||||||
|
keyColumn: "HobbyId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 11, 13, 19, 20, 39, 300, DateTimeKind.Local).AddTicks(9204), new DateTime(2025, 11, 13, 19, 20, 39, 300, DateTimeKind.Local).AddTicks(9205) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Hobbies",
|
||||||
|
keyColumn: "HobbyId",
|
||||||
|
keyValue: 4,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 11, 13, 19, 20, 39, 300, DateTimeKind.Local).AddTicks(9207), new DateTime(2025, 11, 13, 19, 20, 39, 300, DateTimeKind.Local).AddTicks(9208) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Posts",
|
||||||
|
keyColumn: "PostId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 11, 13, 19, 20, 39, 302, DateTimeKind.Local).AddTicks(2910), new DateTime(2025, 11, 13, 19, 20, 39, 302, DateTimeKind.Local).AddTicks(2155) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Posts",
|
||||||
|
keyColumn: "PostId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 11, 13, 19, 20, 39, 302, DateTimeKind.Local).AddTicks(3231), new DateTime(2025, 11, 13, 19, 20, 39, 302, DateTimeKind.Local).AddTicks(3229) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Posts",
|
||||||
|
keyColumn: "PostId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 11, 13, 19, 20, 39, 302, DateTimeKind.Local).AddTicks(3236), new DateTime(2025, 11, 13, 19, 20, 39, 302, DateTimeKind.Local).AddTicks(3233) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Projects",
|
||||||
|
keyColumn: "ProjectId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 11, 13, 19, 20, 39, 301, DateTimeKind.Local).AddTicks(6787), new DateTime(2025, 11, 13, 19, 20, 39, 301, DateTimeKind.Local).AddTicks(6789) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Projects",
|
||||||
|
keyColumn: "ProjectId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 11, 13, 19, 20, 39, 301, DateTimeKind.Local).AddTicks(7979), new DateTime(2025, 11, 13, 19, 20, 39, 301, DateTimeKind.Local).AddTicks(7980) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Projects",
|
||||||
|
keyColumn: "ProjectId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 11, 13, 19, 20, 39, 301, DateTimeKind.Local).AddTicks(7983), new DateTime(2025, 11, 13, 19, 20, 39, 301, DateTimeKind.Local).AddTicks(7984) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Resumes",
|
||||||
|
keyColumn: "ResumeId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 11, 13, 19, 20, 39, 300, DateTimeKind.Local).AddTicks(4308), new DateTime(2025, 11, 13, 19, 20, 39, 300, DateTimeKind.Local).AddTicks(4316) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Skills",
|
||||||
|
keyColumn: "SkillId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 11, 13, 19, 20, 39, 301, DateTimeKind.Local).AddTicks(3819), new DateTime(2025, 11, 13, 19, 20, 39, 301, DateTimeKind.Local).AddTicks(3820) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Skills",
|
||||||
|
keyColumn: "SkillId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 11, 13, 19, 20, 39, 301, DateTimeKind.Local).AddTicks(4333), new DateTime(2025, 11, 13, 19, 20, 39, 301, DateTimeKind.Local).AddTicks(4333) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Skills",
|
||||||
|
keyColumn: "SkillId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 11, 13, 19, 20, 39, 301, DateTimeKind.Local).AddTicks(4335), new DateTime(2025, 11, 13, 19, 20, 39, 301, DateTimeKind.Local).AddTicks(4336) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Skills",
|
||||||
|
keyColumn: "SkillId",
|
||||||
|
keyValue: 4,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 11, 13, 19, 20, 39, 301, DateTimeKind.Local).AddTicks(4337), new DateTime(2025, 11, 13, 19, 20, 39, 301, DateTimeKind.Local).AddTicks(4338) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Skills",
|
||||||
|
keyColumn: "SkillId",
|
||||||
|
keyValue: 5,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 11, 13, 19, 20, 39, 301, DateTimeKind.Local).AddTicks(4339), new DateTime(2025, 11, 13, 19, 20, 39, 301, DateTimeKind.Local).AddTicks(4340) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "SocialLinks",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 11, 13, 19, 20, 39, 300, DateTimeKind.Local).AddTicks(6144), new DateTime(2025, 11, 13, 19, 20, 39, 300, DateTimeKind.Local).AddTicks(6145) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Users",
|
||||||
|
keyColumn: "UserId",
|
||||||
|
keyValue: 1,
|
||||||
|
column: "CreatedAt",
|
||||||
|
value: new DateTime(2025, 11, 13, 13, 50, 39, 303, DateTimeKind.Utc).AddTicks(2327));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "RefreshTokens",
|
||||||
|
keyColumn: "ReplacedByToken",
|
||||||
|
keyValue: null,
|
||||||
|
column: "ReplacedByToken",
|
||||||
|
value: "");
|
||||||
|
|
||||||
|
migrationBuilder.AlterColumn<string>(
|
||||||
|
name: "ReplacedByToken",
|
||||||
|
table: "RefreshTokens",
|
||||||
|
type: "longtext",
|
||||||
|
nullable: false,
|
||||||
|
oldClrType: typeof(string),
|
||||||
|
oldType: "longtext",
|
||||||
|
oldNullable: true)
|
||||||
|
.Annotation("MySql:CharSet", "utf8mb4")
|
||||||
|
.OldAnnotation("MySql:CharSet", "utf8mb4");
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Academics",
|
||||||
|
keyColumn: "AcademicId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 780, DateTimeKind.Local).AddTicks(5159), new DateTime(2025, 10, 29, 7, 27, 45, 780, DateTimeKind.Local).AddTicks(5160) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Academics",
|
||||||
|
keyColumn: "AcademicId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 780, DateTimeKind.Local).AddTicks(5783), new DateTime(2025, 10, 29, 7, 27, 45, 780, DateTimeKind.Local).AddTicks(5784) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Academics",
|
||||||
|
keyColumn: "AcademicId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 780, DateTimeKind.Local).AddTicks(5866), new DateTime(2025, 10, 29, 7, 27, 45, 780, DateTimeKind.Local).AddTicks(5866) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Blogs",
|
||||||
|
keyColumn: "BlogUrl",
|
||||||
|
keyValue: "https://bangararaju.kottedi.in/blog",
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 781, DateTimeKind.Local).AddTicks(1546), new DateTime(2025, 10, 29, 7, 27, 45, 781, DateTimeKind.Local).AddTicks(1547) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Candidates",
|
||||||
|
keyColumn: "CandidateId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 779, DateTimeKind.Local).AddTicks(2626), new DateTime(2025, 10, 29, 7, 27, 45, 779, DateTimeKind.Local).AddTicks(2659) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 782, DateTimeKind.Local).AddTicks(394), new DateTime(2025, 10, 29, 7, 27, 45, 782, DateTimeKind.Local).AddTicks(395) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 782, DateTimeKind.Local).AddTicks(804), new DateTime(2025, 10, 29, 7, 27, 45, 782, DateTimeKind.Local).AddTicks(805) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 782, DateTimeKind.Local).AddTicks(807), new DateTime(2025, 10, 29, 7, 27, 45, 782, DateTimeKind.Local).AddTicks(807) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 4,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 782, DateTimeKind.Local).AddTicks(808), new DateTime(2025, 10, 29, 7, 27, 45, 782, DateTimeKind.Local).AddTicks(808) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 5,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 782, DateTimeKind.Local).AddTicks(810), new DateTime(2025, 10, 29, 7, 27, 45, 782, DateTimeKind.Local).AddTicks(810) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 6,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 782, DateTimeKind.Local).AddTicks(815), new DateTime(2025, 10, 29, 7, 27, 45, 782, DateTimeKind.Local).AddTicks(815) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 7,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 782, DateTimeKind.Local).AddTicks(816), new DateTime(2025, 10, 29, 7, 27, 45, 782, DateTimeKind.Local).AddTicks(817) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "ExperienceDetails",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 8,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 782, DateTimeKind.Local).AddTicks(818), new DateTime(2025, 10, 29, 7, 27, 45, 782, DateTimeKind.Local).AddTicks(818) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Experiences",
|
||||||
|
keyColumn: "ExperienceId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 781, DateTimeKind.Local).AddTicks(7573), new DateTime(2025, 10, 29, 7, 27, 45, 781, DateTimeKind.Local).AddTicks(7579) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Experiences",
|
||||||
|
keyColumn: "ExperienceId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 781, DateTimeKind.Local).AddTicks(8490), new DateTime(2025, 10, 29, 7, 27, 45, 781, DateTimeKind.Local).AddTicks(8490) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Experiences",
|
||||||
|
keyColumn: "ExperienceId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 781, DateTimeKind.Local).AddTicks(8494), new DateTime(2025, 10, 29, 7, 27, 45, 781, DateTimeKind.Local).AddTicks(8494) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Experiences",
|
||||||
|
keyColumn: "ExperienceId",
|
||||||
|
keyValue: 4,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 781, DateTimeKind.Local).AddTicks(8497), new DateTime(2025, 10, 29, 7, 27, 45, 781, DateTimeKind.Local).AddTicks(8497) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Hobbies",
|
||||||
|
keyColumn: "HobbyId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 780, DateTimeKind.Local).AddTicks(2948), new DateTime(2025, 10, 29, 7, 27, 45, 780, DateTimeKind.Local).AddTicks(2949) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Hobbies",
|
||||||
|
keyColumn: "HobbyId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 780, DateTimeKind.Local).AddTicks(3600), new DateTime(2025, 10, 29, 7, 27, 45, 780, DateTimeKind.Local).AddTicks(3601) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Hobbies",
|
||||||
|
keyColumn: "HobbyId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 780, DateTimeKind.Local).AddTicks(3603), new DateTime(2025, 10, 29, 7, 27, 45, 780, DateTimeKind.Local).AddTicks(3604) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Hobbies",
|
||||||
|
keyColumn: "HobbyId",
|
||||||
|
keyValue: 4,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 780, DateTimeKind.Local).AddTicks(3605), new DateTime(2025, 10, 29, 7, 27, 45, 780, DateTimeKind.Local).AddTicks(3606) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Posts",
|
||||||
|
keyColumn: "PostId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 781, DateTimeKind.Local).AddTicks(4486), new DateTime(2025, 10, 29, 7, 27, 45, 781, DateTimeKind.Local).AddTicks(3878) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Posts",
|
||||||
|
keyColumn: "PostId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 781, DateTimeKind.Local).AddTicks(4730), new DateTime(2025, 10, 29, 7, 27, 45, 781, DateTimeKind.Local).AddTicks(4727) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Posts",
|
||||||
|
keyColumn: "PostId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 781, DateTimeKind.Local).AddTicks(4733), new DateTime(2025, 10, 29, 7, 27, 45, 781, DateTimeKind.Local).AddTicks(4731) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Projects",
|
||||||
|
keyColumn: "ProjectId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 780, DateTimeKind.Local).AddTicks(9719), new DateTime(2025, 10, 29, 7, 27, 45, 780, DateTimeKind.Local).AddTicks(9721) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Projects",
|
||||||
|
keyColumn: "ProjectId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 781, DateTimeKind.Local).AddTicks(628), new DateTime(2025, 10, 29, 7, 27, 45, 781, DateTimeKind.Local).AddTicks(629) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Projects",
|
||||||
|
keyColumn: "ProjectId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 781, DateTimeKind.Local).AddTicks(632), new DateTime(2025, 10, 29, 7, 27, 45, 781, DateTimeKind.Local).AddTicks(633) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Resumes",
|
||||||
|
keyColumn: "ResumeId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 779, DateTimeKind.Local).AddTicks(9805), new DateTime(2025, 10, 29, 7, 27, 45, 779, DateTimeKind.Local).AddTicks(9812) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Skills",
|
||||||
|
keyColumn: "SkillId",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 780, DateTimeKind.Local).AddTicks(7273), new DateTime(2025, 10, 29, 7, 27, 45, 780, DateTimeKind.Local).AddTicks(7274) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Skills",
|
||||||
|
keyColumn: "SkillId",
|
||||||
|
keyValue: 2,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 780, DateTimeKind.Local).AddTicks(7731), new DateTime(2025, 10, 29, 7, 27, 45, 780, DateTimeKind.Local).AddTicks(7731) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Skills",
|
||||||
|
keyColumn: "SkillId",
|
||||||
|
keyValue: 3,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 780, DateTimeKind.Local).AddTicks(7733), new DateTime(2025, 10, 29, 7, 27, 45, 780, DateTimeKind.Local).AddTicks(7733) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Skills",
|
||||||
|
keyColumn: "SkillId",
|
||||||
|
keyValue: 4,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 780, DateTimeKind.Local).AddTicks(7735), new DateTime(2025, 10, 29, 7, 27, 45, 780, DateTimeKind.Local).AddTicks(7735) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Skills",
|
||||||
|
keyColumn: "SkillId",
|
||||||
|
keyValue: 5,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 780, DateTimeKind.Local).AddTicks(7736), new DateTime(2025, 10, 29, 7, 27, 45, 780, DateTimeKind.Local).AddTicks(7737) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "SocialLinks",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 1,
|
||||||
|
columns: new[] { "CreatedDate", "ModifiedDate" },
|
||||||
|
values: new object[] { new DateTime(2025, 10, 29, 7, 27, 45, 780, DateTimeKind.Local).AddTicks(1156), new DateTime(2025, 10, 29, 7, 27, 45, 780, DateTimeKind.Local).AddTicks(1157) });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Users",
|
||||||
|
keyColumn: "UserId",
|
||||||
|
keyValue: 1,
|
||||||
|
column: "CreatedAt",
|
||||||
|
value: new DateTime(2025, 10, 29, 1, 57, 45, 782, DateTimeKind.Utc).AddTicks(1816));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -17,7 +17,7 @@ namespace PortBlog.API.Migrations
|
|||||||
{
|
{
|
||||||
#pragma warning disable 612, 618
|
#pragma warning disable 612, 618
|
||||||
modelBuilder
|
modelBuilder
|
||||||
.HasAnnotation("ProductVersion", "8.0.4")
|
.HasAnnotation("ProductVersion", "9.0.9")
|
||||||
.HasAnnotation("Relational:MaxIdentifierLength", 64);
|
.HasAnnotation("Relational:MaxIdentifierLength", 64);
|
||||||
|
|
||||||
MySqlModelBuilderExtensions.AutoIncrementColumns(modelBuilder);
|
MySqlModelBuilderExtensions.AutoIncrementColumns(modelBuilder);
|
||||||
@ -75,35 +75,35 @@ namespace PortBlog.API.Migrations
|
|||||||
new
|
new
|
||||||
{
|
{
|
||||||
AcademicId = 1,
|
AcademicId = 1,
|
||||||
CreatedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(8945),
|
CreatedDate = new DateTime(2025, 11, 13, 19, 20, 39, 301, DateTimeKind.Local).AddTicks(1251),
|
||||||
Degree = "High School",
|
Degree = "High School",
|
||||||
EndYear = 2007,
|
EndYear = 2007,
|
||||||
Institution = "Pragati Little Public School",
|
Institution = "Pragati Little Public School",
|
||||||
ModifiedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(8945),
|
ModifiedDate = new DateTime(2025, 11, 13, 19, 20, 39, 301, DateTimeKind.Local).AddTicks(1252),
|
||||||
ResumeId = 1,
|
ResumeId = 1,
|
||||||
StartYear = 2006
|
StartYear = 2006
|
||||||
},
|
},
|
||||||
new
|
new
|
||||||
{
|
{
|
||||||
AcademicId = 2,
|
AcademicId = 2,
|
||||||
CreatedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(8948),
|
CreatedDate = new DateTime(2025, 11, 13, 19, 20, 39, 301, DateTimeKind.Local).AddTicks(2024),
|
||||||
Degree = "Intermediate",
|
Degree = "Intermediate",
|
||||||
DegreeSpecialization = "MPC",
|
DegreeSpecialization = "MPC",
|
||||||
EndYear = 2009,
|
EndYear = 2009,
|
||||||
Institution = "Sri Chaitanya Junior College",
|
Institution = "Sri Chaitanya Junior College",
|
||||||
ModifiedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(8949),
|
ModifiedDate = new DateTime(2025, 11, 13, 19, 20, 39, 301, DateTimeKind.Local).AddTicks(2024),
|
||||||
ResumeId = 1,
|
ResumeId = 1,
|
||||||
StartYear = 2007
|
StartYear = 2007
|
||||||
},
|
},
|
||||||
new
|
new
|
||||||
{
|
{
|
||||||
AcademicId = 3,
|
AcademicId = 3,
|
||||||
CreatedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(8950),
|
CreatedDate = new DateTime(2025, 11, 13, 19, 20, 39, 301, DateTimeKind.Local).AddTicks(2184),
|
||||||
Degree = "BTech",
|
Degree = "BTech",
|
||||||
DegreeSpecialization = "ECE",
|
DegreeSpecialization = "ECE",
|
||||||
EndYear = 2013,
|
EndYear = 2013,
|
||||||
Institution = "Kakinada Institute of Technology & Science",
|
Institution = "Kakinada Institute of Technology & Science",
|
||||||
ModifiedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(8951),
|
ModifiedDate = new DateTime(2025, 11, 13, 19, 20, 39, 301, DateTimeKind.Local).AddTicks(2184),
|
||||||
ResumeId = 1,
|
ResumeId = 1,
|
||||||
StartYear = 2009
|
StartYear = 2009
|
||||||
});
|
});
|
||||||
@ -144,13 +144,38 @@ namespace PortBlog.API.Migrations
|
|||||||
new
|
new
|
||||||
{
|
{
|
||||||
BlogUrl = "https://bangararaju.kottedi.in/blog",
|
BlogUrl = "https://bangararaju.kottedi.in/blog",
|
||||||
CreatedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9023),
|
CreatedDate = new DateTime(2025, 11, 13, 19, 20, 39, 301, DateTimeKind.Local).AddTicks(9145),
|
||||||
Description = "Your Hub for Tech, DIY, and Innovation",
|
Description = "Your Hub for Tech, DIY, and Innovation",
|
||||||
ModifiedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9023),
|
ModifiedDate = new DateTime(2025, 11, 13, 19, 20, 39, 301, DateTimeKind.Local).AddTicks(9146),
|
||||||
Name = "Engineer's Odyssey"
|
Name = "Engineer's Odyssey"
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("PortBlog.API.Entities.Cache", b =>
|
||||||
|
{
|
||||||
|
b.Property<string>("Id")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasMaxLength(449)
|
||||||
|
.HasColumnType("varchar(449)");
|
||||||
|
|
||||||
|
b.Property<DateTime?>("AbsoluteExpiration")
|
||||||
|
.HasColumnType("datetime(6)");
|
||||||
|
|
||||||
|
b.Property<DateTime>("ExpiresAtTime")
|
||||||
|
.HasColumnType("datetime(6)");
|
||||||
|
|
||||||
|
b.Property<long?>("SlidingExpirationInSeconds")
|
||||||
|
.HasColumnType("bigint");
|
||||||
|
|
||||||
|
b.Property<byte[]>("Value")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("longblob");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.ToTable("Cache");
|
||||||
|
});
|
||||||
|
|
||||||
modelBuilder.Entity("PortBlog.API.Entities.Candidate", b =>
|
modelBuilder.Entity("PortBlog.API.Entities.Candidate", b =>
|
||||||
{
|
{
|
||||||
b.Property<int>("CandidateId")
|
b.Property<int>("CandidateId")
|
||||||
@ -213,13 +238,13 @@ namespace PortBlog.API.Migrations
|
|||||||
{
|
{
|
||||||
CandidateId = 1,
|
CandidateId = 1,
|
||||||
Address = "Samalkot, Andhra Pradesh, India",
|
Address = "Samalkot, Andhra Pradesh, India",
|
||||||
CreatedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(8726),
|
CreatedDate = new DateTime(2025, 11, 13, 19, 20, 39, 299, DateTimeKind.Local).AddTicks(5480),
|
||||||
Dob = new DateTime(1992, 5, 6, 0, 0, 0, 0, DateTimeKind.Unspecified),
|
Dob = new DateTime(1992, 5, 6, 0, 0, 0, 0, DateTimeKind.Unspecified),
|
||||||
Email = "bangararaju.kottedi@gmail.com",
|
Email = "bangararaju.kottedi@gmail.com",
|
||||||
FirstName = "Bangara Raju",
|
FirstName = "Bangara Raju",
|
||||||
Gender = "Male",
|
Gender = "Male",
|
||||||
LastName = "Kottedi",
|
LastName = "Kottedi",
|
||||||
ModifiedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(8742),
|
ModifiedDate = new DateTime(2025, 11, 13, 19, 20, 39, 299, DateTimeKind.Local).AddTicks(5515),
|
||||||
Phone = "+91 9441212187"
|
Phone = "+91 9441212187"
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@ -366,11 +391,11 @@ namespace PortBlog.API.Migrations
|
|||||||
{
|
{
|
||||||
ExperienceId = 1,
|
ExperienceId = 1,
|
||||||
Company = "Agility E Services",
|
Company = "Agility E Services",
|
||||||
CreatedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9068),
|
CreatedDate = new DateTime(2025, 11, 13, 19, 20, 39, 302, DateTimeKind.Local).AddTicks(6786),
|
||||||
Description = "",
|
Description = "",
|
||||||
EndDate = new DateTime(2016, 4, 25, 0, 0, 0, 0, DateTimeKind.Unspecified),
|
EndDate = new DateTime(2016, 4, 25, 0, 0, 0, 0, DateTimeKind.Unspecified),
|
||||||
Location = "Hyderabad",
|
Location = "Hyderabad",
|
||||||
ModifiedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9068),
|
ModifiedDate = new DateTime(2025, 11, 13, 19, 20, 39, 302, DateTimeKind.Local).AddTicks(6793),
|
||||||
ResumeId = 1,
|
ResumeId = 1,
|
||||||
StartDate = new DateTime(2015, 9, 2, 0, 0, 0, 0, DateTimeKind.Unspecified),
|
StartDate = new DateTime(2015, 9, 2, 0, 0, 0, 0, DateTimeKind.Unspecified),
|
||||||
Title = "Jr. Software Engineer"
|
Title = "Jr. Software Engineer"
|
||||||
@ -379,11 +404,11 @@ namespace PortBlog.API.Migrations
|
|||||||
{
|
{
|
||||||
ExperienceId = 2,
|
ExperienceId = 2,
|
||||||
Company = "Agility",
|
Company = "Agility",
|
||||||
CreatedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9072),
|
CreatedDate = new DateTime(2025, 11, 13, 19, 20, 39, 302, DateTimeKind.Local).AddTicks(7965),
|
||||||
Description = "",
|
Description = "",
|
||||||
EndDate = new DateTime(2022, 1, 31, 0, 0, 0, 0, DateTimeKind.Unspecified),
|
EndDate = new DateTime(2022, 1, 31, 0, 0, 0, 0, DateTimeKind.Unspecified),
|
||||||
Location = "Kuwait",
|
Location = "Kuwait",
|
||||||
ModifiedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9073),
|
ModifiedDate = new DateTime(2025, 11, 13, 19, 20, 39, 302, DateTimeKind.Local).AddTicks(7966),
|
||||||
ResumeId = 1,
|
ResumeId = 1,
|
||||||
StartDate = new DateTime(2016, 5, 12, 0, 0, 0, 0, DateTimeKind.Unspecified),
|
StartDate = new DateTime(2016, 5, 12, 0, 0, 0, 0, DateTimeKind.Unspecified),
|
||||||
Title = "Web Developer"
|
Title = "Web Developer"
|
||||||
@ -392,11 +417,11 @@ namespace PortBlog.API.Migrations
|
|||||||
{
|
{
|
||||||
ExperienceId = 3,
|
ExperienceId = 3,
|
||||||
Company = "Agility",
|
Company = "Agility",
|
||||||
CreatedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9075),
|
CreatedDate = new DateTime(2025, 11, 13, 19, 20, 39, 302, DateTimeKind.Local).AddTicks(7970),
|
||||||
Description = "",
|
Description = "",
|
||||||
EndDate = new DateTime(2022, 10, 31, 0, 0, 0, 0, DateTimeKind.Unspecified),
|
EndDate = new DateTime(2022, 10, 31, 0, 0, 0, 0, DateTimeKind.Unspecified),
|
||||||
Location = "Kuwait",
|
Location = "Kuwait",
|
||||||
ModifiedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9075),
|
ModifiedDate = new DateTime(2025, 11, 13, 19, 20, 39, 302, DateTimeKind.Local).AddTicks(7971),
|
||||||
ResumeId = 1,
|
ResumeId = 1,
|
||||||
StartDate = new DateTime(2022, 2, 1, 0, 0, 0, 0, DateTimeKind.Unspecified),
|
StartDate = new DateTime(2022, 2, 1, 0, 0, 0, 0, DateTimeKind.Unspecified),
|
||||||
Title = "Senior Web Developer"
|
Title = "Senior Web Developer"
|
||||||
@ -405,11 +430,11 @@ namespace PortBlog.API.Migrations
|
|||||||
{
|
{
|
||||||
ExperienceId = 4,
|
ExperienceId = 4,
|
||||||
Company = "Agility E Services",
|
Company = "Agility E Services",
|
||||||
CreatedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9077),
|
CreatedDate = new DateTime(2025, 11, 13, 19, 20, 39, 302, DateTimeKind.Local).AddTicks(8081),
|
||||||
Description = "",
|
Description = "",
|
||||||
EndDate = new DateTime(2024, 4, 12, 0, 0, 0, 0, DateTimeKind.Unspecified),
|
EndDate = new DateTime(2024, 4, 12, 0, 0, 0, 0, DateTimeKind.Unspecified),
|
||||||
Location = "Hyderabad",
|
Location = "Hyderabad",
|
||||||
ModifiedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9077),
|
ModifiedDate = new DateTime(2025, 11, 13, 19, 20, 39, 302, DateTimeKind.Local).AddTicks(8081),
|
||||||
ResumeId = 1,
|
ResumeId = 1,
|
||||||
StartDate = new DateTime(2022, 11, 4, 0, 0, 0, 0, DateTimeKind.Unspecified),
|
StartDate = new DateTime(2022, 11, 4, 0, 0, 0, 0, DateTimeKind.Unspecified),
|
||||||
Title = "Technology Specialist"
|
Title = "Technology Specialist"
|
||||||
@ -457,73 +482,73 @@ namespace PortBlog.API.Migrations
|
|||||||
new
|
new
|
||||||
{
|
{
|
||||||
Id = 1,
|
Id = 1,
|
||||||
CreatedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9096),
|
CreatedDate = new DateTime(2025, 11, 13, 19, 20, 39, 303, DateTimeKind.Local).AddTicks(462),
|
||||||
Details = "Worked on the YouTube Captions team, in Javascript and Python to plan, to design and develop the full stack to add and edit Automatic Speech Recognition captions.",
|
Details = "Worked on the YouTube Captions team, in Javascript and Python to plan, to design and develop the full stack to add and edit Automatic Speech Recognition captions.",
|
||||||
ExperienceId = 1,
|
ExperienceId = 1,
|
||||||
ModifiedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9096),
|
ModifiedDate = new DateTime(2025, 11, 13, 19, 20, 39, 303, DateTimeKind.Local).AddTicks(464),
|
||||||
Order = 1
|
Order = 1
|
||||||
},
|
},
|
||||||
new
|
new
|
||||||
{
|
{
|
||||||
Id = 2,
|
Id = 2,
|
||||||
CreatedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9099),
|
CreatedDate = new DateTime(2025, 11, 13, 19, 20, 39, 303, DateTimeKind.Local).AddTicks(988),
|
||||||
Details = "Worked on the YouTube Captions team, in Javascript and Python to plan, to design and develop the full stack to add and edit Automatic Speech Recognition captions.",
|
Details = "Worked on the YouTube Captions team, in Javascript and Python to plan, to design and develop the full stack to add and edit Automatic Speech Recognition captions.",
|
||||||
ExperienceId = 1,
|
ExperienceId = 1,
|
||||||
ModifiedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9100),
|
ModifiedDate = new DateTime(2025, 11, 13, 19, 20, 39, 303, DateTimeKind.Local).AddTicks(988),
|
||||||
Order = 2
|
Order = 2
|
||||||
},
|
},
|
||||||
new
|
new
|
||||||
{
|
{
|
||||||
Id = 3,
|
Id = 3,
|
||||||
CreatedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9101),
|
CreatedDate = new DateTime(2025, 11, 13, 19, 20, 39, 303, DateTimeKind.Local).AddTicks(991),
|
||||||
Details = "Worked on the YouTube Captions team, in Javascript and Python to plan, to design and develop the full stack to add and edit Automatic Speech Recognition captions.",
|
Details = "Worked on the YouTube Captions team, in Javascript and Python to plan, to design and develop the full stack to add and edit Automatic Speech Recognition captions.",
|
||||||
ExperienceId = 2,
|
ExperienceId = 2,
|
||||||
ModifiedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9101),
|
ModifiedDate = new DateTime(2025, 11, 13, 19, 20, 39, 303, DateTimeKind.Local).AddTicks(991),
|
||||||
Order = 1
|
Order = 1
|
||||||
},
|
},
|
||||||
new
|
new
|
||||||
{
|
{
|
||||||
Id = 4,
|
Id = 4,
|
||||||
CreatedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9102),
|
CreatedDate = new DateTime(2025, 11, 13, 19, 20, 39, 303, DateTimeKind.Local).AddTicks(993),
|
||||||
Details = "Worked on the YouTube Captions team, in Javascript and Python to plan, to design and develop the full stack to add and edit Automatic Speech Recognition captions.",
|
Details = "Worked on the YouTube Captions team, in Javascript and Python to plan, to design and develop the full stack to add and edit Automatic Speech Recognition captions.",
|
||||||
ExperienceId = 2,
|
ExperienceId = 2,
|
||||||
ModifiedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9102),
|
ModifiedDate = new DateTime(2025, 11, 13, 19, 20, 39, 303, DateTimeKind.Local).AddTicks(993),
|
||||||
Order = 2
|
Order = 2
|
||||||
},
|
},
|
||||||
new
|
new
|
||||||
{
|
{
|
||||||
Id = 5,
|
Id = 5,
|
||||||
CreatedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9103),
|
CreatedDate = new DateTime(2025, 11, 13, 19, 20, 39, 303, DateTimeKind.Local).AddTicks(994),
|
||||||
Details = "Worked on the YouTube Captions team, in Javascript and Python to plan, to design and develop the full stack to add and edit Automatic Speech Recognition captions.",
|
Details = "Worked on the YouTube Captions team, in Javascript and Python to plan, to design and develop the full stack to add and edit Automatic Speech Recognition captions.",
|
||||||
ExperienceId = 3,
|
ExperienceId = 3,
|
||||||
ModifiedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9103),
|
ModifiedDate = new DateTime(2025, 11, 13, 19, 20, 39, 303, DateTimeKind.Local).AddTicks(995),
|
||||||
Order = 1
|
Order = 1
|
||||||
},
|
},
|
||||||
new
|
new
|
||||||
{
|
{
|
||||||
Id = 6,
|
Id = 6,
|
||||||
CreatedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9105),
|
CreatedDate = new DateTime(2025, 11, 13, 19, 20, 39, 303, DateTimeKind.Local).AddTicks(1004),
|
||||||
Details = "Worked on the YouTube Captions team, in Javascript and Python to plan, to design and develop the full stack to add and edit Automatic Speech Recognition captions.",
|
Details = "Worked on the YouTube Captions team, in Javascript and Python to plan, to design and develop the full stack to add and edit Automatic Speech Recognition captions.",
|
||||||
ExperienceId = 3,
|
ExperienceId = 3,
|
||||||
ModifiedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9105),
|
ModifiedDate = new DateTime(2025, 11, 13, 19, 20, 39, 303, DateTimeKind.Local).AddTicks(1005),
|
||||||
Order = 2
|
Order = 2
|
||||||
},
|
},
|
||||||
new
|
new
|
||||||
{
|
{
|
||||||
Id = 7,
|
Id = 7,
|
||||||
CreatedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9106),
|
CreatedDate = new DateTime(2025, 11, 13, 19, 20, 39, 303, DateTimeKind.Local).AddTicks(1006),
|
||||||
Details = "Worked on the YouTube Captions team, in Javascript and Python to plan, to design and develop the full stack to add and edit Automatic Speech Recognition captions.",
|
Details = "Worked on the YouTube Captions team, in Javascript and Python to plan, to design and develop the full stack to add and edit Automatic Speech Recognition captions.",
|
||||||
ExperienceId = 4,
|
ExperienceId = 4,
|
||||||
ModifiedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9106),
|
ModifiedDate = new DateTime(2025, 11, 13, 19, 20, 39, 303, DateTimeKind.Local).AddTicks(1007),
|
||||||
Order = 1
|
Order = 1
|
||||||
},
|
},
|
||||||
new
|
new
|
||||||
{
|
{
|
||||||
Id = 8,
|
Id = 8,
|
||||||
CreatedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9107),
|
CreatedDate = new DateTime(2025, 11, 13, 19, 20, 39, 303, DateTimeKind.Local).AddTicks(1008),
|
||||||
Details = "Worked on the YouTube Captions team, in Javascript and Python to plan, to design and develop the full stack to add and edit Automatic Speech Recognition captions.",
|
Details = "Worked on the YouTube Captions team, in Javascript and Python to plan, to design and develop the full stack to add and edit Automatic Speech Recognition captions.",
|
||||||
ExperienceId = 4,
|
ExperienceId = 4,
|
||||||
ModifiedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9108),
|
ModifiedDate = new DateTime(2025, 11, 13, 19, 20, 39, 303, DateTimeKind.Local).AddTicks(1009),
|
||||||
Order = 2
|
Order = 2
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@ -578,10 +603,10 @@ namespace PortBlog.API.Migrations
|
|||||||
new
|
new
|
||||||
{
|
{
|
||||||
HobbyId = 1,
|
HobbyId = 1,
|
||||||
CreatedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(8912),
|
CreatedDate = new DateTime(2025, 11, 13, 19, 20, 39, 300, DateTimeKind.Local).AddTicks(8352),
|
||||||
Description = "Crafting Professional-Quality Websites with Precision.",
|
Description = "Crafting Professional-Quality Websites with Precision.",
|
||||||
Icon = "fa-square-terminal",
|
Icon = "fa-square-terminal",
|
||||||
ModifiedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(8913),
|
ModifiedDate = new DateTime(2025, 11, 13, 19, 20, 39, 300, DateTimeKind.Local).AddTicks(8353),
|
||||||
Name = "Web Development",
|
Name = "Web Development",
|
||||||
Order = 1,
|
Order = 1,
|
||||||
ResumeId = 1
|
ResumeId = 1
|
||||||
@ -589,10 +614,10 @@ namespace PortBlog.API.Migrations
|
|||||||
new
|
new
|
||||||
{
|
{
|
||||||
HobbyId = 2,
|
HobbyId = 2,
|
||||||
CreatedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(8917),
|
CreatedDate = new DateTime(2025, 11, 13, 19, 20, 39, 300, DateTimeKind.Local).AddTicks(9201),
|
||||||
Description = "Streamlining and Simplifying Complex Tasks through Automation.",
|
Description = "Streamlining and Simplifying Complex Tasks through Automation.",
|
||||||
Icon = "fa-robot",
|
Icon = "fa-robot",
|
||||||
ModifiedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(8918),
|
ModifiedDate = new DateTime(2025, 11, 13, 19, 20, 39, 300, DateTimeKind.Local).AddTicks(9201),
|
||||||
Name = "Automation",
|
Name = "Automation",
|
||||||
Order = 2,
|
Order = 2,
|
||||||
ResumeId = 1
|
ResumeId = 1
|
||||||
@ -600,10 +625,10 @@ namespace PortBlog.API.Migrations
|
|||||||
new
|
new
|
||||||
{
|
{
|
||||||
HobbyId = 3,
|
HobbyId = 3,
|
||||||
CreatedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(8919),
|
CreatedDate = new DateTime(2025, 11, 13, 19, 20, 39, 300, DateTimeKind.Local).AddTicks(9204),
|
||||||
Description = "Sharing the knowledge and insights I’ve gathered along my journey.",
|
Description = "Sharing the knowledge and insights I’ve gathered along my journey.",
|
||||||
Icon = "fa-typewriter",
|
Icon = "fa-typewriter",
|
||||||
ModifiedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(8919),
|
ModifiedDate = new DateTime(2025, 11, 13, 19, 20, 39, 300, DateTimeKind.Local).AddTicks(9205),
|
||||||
Name = "Blogging",
|
Name = "Blogging",
|
||||||
Order = 3,
|
Order = 3,
|
||||||
ResumeId = 1
|
ResumeId = 1
|
||||||
@ -611,10 +636,10 @@ namespace PortBlog.API.Migrations
|
|||||||
new
|
new
|
||||||
{
|
{
|
||||||
HobbyId = 4,
|
HobbyId = 4,
|
||||||
CreatedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(8921),
|
CreatedDate = new DateTime(2025, 11, 13, 19, 20, 39, 300, DateTimeKind.Local).AddTicks(9207),
|
||||||
Description = "Exploring, embracing, and leveraging the latest advancements.",
|
Description = "Exploring, embracing, and leveraging the latest advancements.",
|
||||||
Icon = "fa-lightbulb-gear",
|
Icon = "fa-lightbulb-gear",
|
||||||
ModifiedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(8921),
|
ModifiedDate = new DateTime(2025, 11, 13, 19, 20, 39, 300, DateTimeKind.Local).AddTicks(9208),
|
||||||
Name = "Technology",
|
Name = "Technology",
|
||||||
Order = 4,
|
Order = 4,
|
||||||
ResumeId = 1
|
ResumeId = 1
|
||||||
@ -634,8 +659,7 @@ namespace PortBlog.API.Migrations
|
|||||||
|
|
||||||
b.Property<string>("Content")
|
b.Property<string>("Content")
|
||||||
.IsRequired()
|
.IsRequired()
|
||||||
.HasMaxLength(500)
|
.HasColumnType("longtext");
|
||||||
.HasColumnType("varchar(500)");
|
|
||||||
|
|
||||||
b.Property<DateTime>("CreatedDate")
|
b.Property<DateTime>("CreatedDate")
|
||||||
.HasColumnType("datetime(6)");
|
.HasColumnType("datetime(6)");
|
||||||
@ -687,7 +711,7 @@ namespace PortBlog.API.Migrations
|
|||||||
.HasMaxLength(200)
|
.HasMaxLength(200)
|
||||||
.HasColumnType("varchar(200)");
|
.HasColumnType("varchar(200)");
|
||||||
|
|
||||||
b.Property<string>("Categories")
|
b.PrimitiveCollection<string>("Categories")
|
||||||
.IsRequired()
|
.IsRequired()
|
||||||
.HasMaxLength(200)
|
.HasMaxLength(200)
|
||||||
.HasColumnType("varchar(200)");
|
.HasColumnType("varchar(200)");
|
||||||
@ -750,10 +774,10 @@ namespace PortBlog.API.Migrations
|
|||||||
BlogUrl = "https://bangararaju.kottedi.in/blog",
|
BlogUrl = "https://bangararaju.kottedi.in/blog",
|
||||||
Categories = "[\"Welcome\"]",
|
Categories = "[\"Welcome\"]",
|
||||||
Comments = 0,
|
Comments = 0,
|
||||||
CreatedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9042),
|
CreatedDate = new DateTime(2025, 11, 13, 19, 20, 39, 302, DateTimeKind.Local).AddTicks(2910),
|
||||||
Description = "Hello World",
|
Description = "Hello World",
|
||||||
Likes = 0,
|
Likes = 0,
|
||||||
ModifiedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9038),
|
ModifiedDate = new DateTime(2025, 11, 13, 19, 20, 39, 302, DateTimeKind.Local).AddTicks(2155),
|
||||||
PostUrl = "https://bangararaju.kottedi.in/blog/hello-world",
|
PostUrl = "https://bangararaju.kottedi.in/blog/hello-world",
|
||||||
Slug = "hello-world",
|
Slug = "hello-world",
|
||||||
Title = "Hello World",
|
Title = "Hello World",
|
||||||
@ -765,10 +789,10 @@ namespace PortBlog.API.Migrations
|
|||||||
BlogUrl = "https://bangararaju.kottedi.in/blog",
|
BlogUrl = "https://bangararaju.kottedi.in/blog",
|
||||||
Categories = "[\"Welcome\"]",
|
Categories = "[\"Welcome\"]",
|
||||||
Comments = 0,
|
Comments = 0,
|
||||||
CreatedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9047),
|
CreatedDate = new DateTime(2025, 11, 13, 19, 20, 39, 302, DateTimeKind.Local).AddTicks(3231),
|
||||||
Description = "Hello World",
|
Description = "Hello World",
|
||||||
Likes = 0,
|
Likes = 0,
|
||||||
ModifiedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9045),
|
ModifiedDate = new DateTime(2025, 11, 13, 19, 20, 39, 302, DateTimeKind.Local).AddTicks(3229),
|
||||||
PostUrl = "https://bangararaju.kottedi.in/blog/hello-world",
|
PostUrl = "https://bangararaju.kottedi.in/blog/hello-world",
|
||||||
Slug = "hello-world",
|
Slug = "hello-world",
|
||||||
Title = "Hello World",
|
Title = "Hello World",
|
||||||
@ -780,10 +804,10 @@ namespace PortBlog.API.Migrations
|
|||||||
BlogUrl = "https://bangararaju.kottedi.in/blog",
|
BlogUrl = "https://bangararaju.kottedi.in/blog",
|
||||||
Categories = "[\"Welcome\"]",
|
Categories = "[\"Welcome\"]",
|
||||||
Comments = 0,
|
Comments = 0,
|
||||||
CreatedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9049),
|
CreatedDate = new DateTime(2025, 11, 13, 19, 20, 39, 302, DateTimeKind.Local).AddTicks(3236),
|
||||||
Description = "Hello World",
|
Description = "Hello World",
|
||||||
Likes = 0,
|
Likes = 0,
|
||||||
ModifiedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9048),
|
ModifiedDate = new DateTime(2025, 11, 13, 19, 20, 39, 302, DateTimeKind.Local).AddTicks(3233),
|
||||||
PostUrl = "https://bangararaju.kottedi.in/blog/hello-world",
|
PostUrl = "https://bangararaju.kottedi.in/blog/hello-world",
|
||||||
Slug = "hello-world",
|
Slug = "hello-world",
|
||||||
Title = "Hello World",
|
Title = "Hello World",
|
||||||
@ -799,7 +823,7 @@ namespace PortBlog.API.Migrations
|
|||||||
|
|
||||||
MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("ProjectId"));
|
MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("ProjectId"));
|
||||||
|
|
||||||
b.Property<string>("Categories")
|
b.PrimitiveCollection<string>("Categories")
|
||||||
.IsRequired()
|
.IsRequired()
|
||||||
.HasMaxLength(200)
|
.HasMaxLength(200)
|
||||||
.HasColumnType("varchar(200)");
|
.HasColumnType("varchar(200)");
|
||||||
@ -881,10 +905,10 @@ namespace PortBlog.API.Migrations
|
|||||||
{
|
{
|
||||||
ProjectId = 1,
|
ProjectId = 1,
|
||||||
Categories = "[\"Web Development\"]",
|
Categories = "[\"Web Development\"]",
|
||||||
CreatedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(8997),
|
CreatedDate = new DateTime(2025, 11, 13, 19, 20, 39, 301, DateTimeKind.Local).AddTicks(6787),
|
||||||
Description = "Business Process Management",
|
Description = "Business Process Management",
|
||||||
ImagePath = "bpm.jpg",
|
ImagePath = "bpm.jpg",
|
||||||
ModifiedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(8997),
|
ModifiedDate = new DateTime(2025, 11, 13, 19, 20, 39, 301, DateTimeKind.Local).AddTicks(6789),
|
||||||
Name = "Transfora (Business Process Management)",
|
Name = "Transfora (Business Process Management)",
|
||||||
Responsibilities = "Developing, Testing, Support",
|
Responsibilities = "Developing, Testing, Support",
|
||||||
ResumeId = 1,
|
ResumeId = 1,
|
||||||
@ -895,10 +919,10 @@ namespace PortBlog.API.Migrations
|
|||||||
{
|
{
|
||||||
ProjectId = 2,
|
ProjectId = 2,
|
||||||
Categories = "[\"Web Design\"]",
|
Categories = "[\"Web Design\"]",
|
||||||
CreatedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9003),
|
CreatedDate = new DateTime(2025, 11, 13, 19, 20, 39, 301, DateTimeKind.Local).AddTicks(7979),
|
||||||
Description = "Business Process Management",
|
Description = "Business Process Management",
|
||||||
ImagePath = "hcm.jpg",
|
ImagePath = "hcm.jpg",
|
||||||
ModifiedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9003),
|
ModifiedDate = new DateTime(2025, 11, 13, 19, 20, 39, 301, DateTimeKind.Local).AddTicks(7980),
|
||||||
Name = "Human Captial Management",
|
Name = "Human Captial Management",
|
||||||
Responsibilities = "Developing, Testing, Support",
|
Responsibilities = "Developing, Testing, Support",
|
||||||
ResumeId = 1,
|
ResumeId = 1,
|
||||||
@ -909,10 +933,10 @@ namespace PortBlog.API.Migrations
|
|||||||
{
|
{
|
||||||
ProjectId = 3,
|
ProjectId = 3,
|
||||||
Categories = "[\"Web Development\"]",
|
Categories = "[\"Web Development\"]",
|
||||||
CreatedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9006),
|
CreatedDate = new DateTime(2025, 11, 13, 19, 20, 39, 301, DateTimeKind.Local).AddTicks(7983),
|
||||||
Description = "Business Process Management",
|
Description = "Business Process Management",
|
||||||
ImagePath = "hms.png",
|
ImagePath = "hms.png",
|
||||||
ModifiedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(9006),
|
ModifiedDate = new DateTime(2025, 11, 13, 19, 20, 39, 301, DateTimeKind.Local).AddTicks(7984),
|
||||||
Name = "Transfora (Business Process Management)",
|
Name = "Transfora (Business Process Management)",
|
||||||
Responsibilities = "Hosting, Integrating, Monitoring",
|
Responsibilities = "Hosting, Integrating, Monitoring",
|
||||||
ResumeId = 1,
|
ResumeId = 1,
|
||||||
@ -921,6 +945,48 @@ namespace PortBlog.API.Migrations
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("PortBlog.API.Entities.RefreshToken", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("TokenId")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("TokenId"));
|
||||||
|
|
||||||
|
b.Property<DateTime>("CreatedAt")
|
||||||
|
.HasColumnType("datetime(6)");
|
||||||
|
|
||||||
|
b.Property<string>("DeviceInfo")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("longtext");
|
||||||
|
|
||||||
|
b.Property<DateTime>("ExpiryDate")
|
||||||
|
.HasColumnType("datetime(6)");
|
||||||
|
|
||||||
|
b.Property<string>("JwtId")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("longtext");
|
||||||
|
|
||||||
|
b.Property<string>("ReplacedByToken")
|
||||||
|
.HasColumnType("longtext");
|
||||||
|
|
||||||
|
b.Property<bool>("Revoked")
|
||||||
|
.HasColumnType("tinyint(1)");
|
||||||
|
|
||||||
|
b.Property<string>("Token")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("longtext");
|
||||||
|
|
||||||
|
b.Property<int>("UserId")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.HasKey("TokenId");
|
||||||
|
|
||||||
|
b.HasIndex("UserId");
|
||||||
|
|
||||||
|
b.ToTable("RefreshTokens");
|
||||||
|
});
|
||||||
|
|
||||||
modelBuilder.Entity("PortBlog.API.Entities.Resume", b =>
|
modelBuilder.Entity("PortBlog.API.Entities.Resume", b =>
|
||||||
{
|
{
|
||||||
b.Property<int>("ResumeId")
|
b.Property<int>("ResumeId")
|
||||||
@ -969,8 +1035,8 @@ namespace PortBlog.API.Migrations
|
|||||||
ResumeId = 1,
|
ResumeId = 1,
|
||||||
About = "I'm Full Stack Developer with 8+ years of hands-on experience in .NET development. Passionate and driven professional with expertise in .NET WebAPI, Angular, CI/CD, and a growing proficiency in Azure. I've successfully delivered robust applications, prioritizing efficiency and user experience. While I'm currently in the early stages of exploring Azure, I'm eager to expand my skill set and leverage cloud technologies to enhance scalability and performance. Known for my proactive approach and dedication to continuous learning, I'm committed to staying abreast of the latest technologies and methodologies to drive innovation and deliver exceptional results.",
|
About = "I'm Full Stack Developer with 8+ years of hands-on experience in .NET development. Passionate and driven professional with expertise in .NET WebAPI, Angular, CI/CD, and a growing proficiency in Azure. I've successfully delivered robust applications, prioritizing efficiency and user experience. While I'm currently in the early stages of exploring Azure, I'm eager to expand my skill set and leverage cloud technologies to enhance scalability and performance. Known for my proactive approach and dedication to continuous learning, I'm committed to staying abreast of the latest technologies and methodologies to drive innovation and deliver exceptional results.",
|
||||||
CandidateId = 1,
|
CandidateId = 1,
|
||||||
CreatedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(8874),
|
CreatedDate = new DateTime(2025, 11, 13, 19, 20, 39, 300, DateTimeKind.Local).AddTicks(4308),
|
||||||
ModifiedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(8874),
|
ModifiedDate = new DateTime(2025, 11, 13, 19, 20, 39, 300, DateTimeKind.Local).AddTicks(4316),
|
||||||
Order = 1,
|
Order = 1,
|
||||||
Title = "Full Stack Developer"
|
Title = "Full Stack Developer"
|
||||||
});
|
});
|
||||||
@ -1071,8 +1137,8 @@ namespace PortBlog.API.Migrations
|
|||||||
new
|
new
|
||||||
{
|
{
|
||||||
SkillId = 1,
|
SkillId = 1,
|
||||||
CreatedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(8968),
|
CreatedDate = new DateTime(2025, 11, 13, 19, 20, 39, 301, DateTimeKind.Local).AddTicks(3819),
|
||||||
ModifiedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(8968),
|
ModifiedDate = new DateTime(2025, 11, 13, 19, 20, 39, 301, DateTimeKind.Local).AddTicks(3820),
|
||||||
Name = "Web Development",
|
Name = "Web Development",
|
||||||
ProficiencyLevel = 80,
|
ProficiencyLevel = 80,
|
||||||
ResumeId = 1
|
ResumeId = 1
|
||||||
@ -1080,8 +1146,8 @@ namespace PortBlog.API.Migrations
|
|||||||
new
|
new
|
||||||
{
|
{
|
||||||
SkillId = 2,
|
SkillId = 2,
|
||||||
CreatedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(8971),
|
CreatedDate = new DateTime(2025, 11, 13, 19, 20, 39, 301, DateTimeKind.Local).AddTicks(4333),
|
||||||
ModifiedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(8972),
|
ModifiedDate = new DateTime(2025, 11, 13, 19, 20, 39, 301, DateTimeKind.Local).AddTicks(4333),
|
||||||
Name = "Web Development",
|
Name = "Web Development",
|
||||||
ProficiencyLevel = 80,
|
ProficiencyLevel = 80,
|
||||||
ResumeId = 1
|
ResumeId = 1
|
||||||
@ -1089,8 +1155,8 @@ namespace PortBlog.API.Migrations
|
|||||||
new
|
new
|
||||||
{
|
{
|
||||||
SkillId = 3,
|
SkillId = 3,
|
||||||
CreatedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(8973),
|
CreatedDate = new DateTime(2025, 11, 13, 19, 20, 39, 301, DateTimeKind.Local).AddTicks(4335),
|
||||||
ModifiedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(8973),
|
ModifiedDate = new DateTime(2025, 11, 13, 19, 20, 39, 301, DateTimeKind.Local).AddTicks(4336),
|
||||||
Name = "Web Development",
|
Name = "Web Development",
|
||||||
ProficiencyLevel = 80,
|
ProficiencyLevel = 80,
|
||||||
ResumeId = 1
|
ResumeId = 1
|
||||||
@ -1098,8 +1164,8 @@ namespace PortBlog.API.Migrations
|
|||||||
new
|
new
|
||||||
{
|
{
|
||||||
SkillId = 4,
|
SkillId = 4,
|
||||||
CreatedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(8974),
|
CreatedDate = new DateTime(2025, 11, 13, 19, 20, 39, 301, DateTimeKind.Local).AddTicks(4337),
|
||||||
ModifiedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(8974),
|
ModifiedDate = new DateTime(2025, 11, 13, 19, 20, 39, 301, DateTimeKind.Local).AddTicks(4338),
|
||||||
Name = "Web Development",
|
Name = "Web Development",
|
||||||
ProficiencyLevel = 80,
|
ProficiencyLevel = 80,
|
||||||
ResumeId = 1
|
ResumeId = 1
|
||||||
@ -1107,8 +1173,8 @@ namespace PortBlog.API.Migrations
|
|||||||
new
|
new
|
||||||
{
|
{
|
||||||
SkillId = 5,
|
SkillId = 5,
|
||||||
CreatedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(8975),
|
CreatedDate = new DateTime(2025, 11, 13, 19, 20, 39, 301, DateTimeKind.Local).AddTicks(4339),
|
||||||
ModifiedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(8976),
|
ModifiedDate = new DateTime(2025, 11, 13, 19, 20, 39, 301, DateTimeKind.Local).AddTicks(4340),
|
||||||
Name = "Web Development",
|
Name = "Web Development",
|
||||||
ProficiencyLevel = 80,
|
ProficiencyLevel = 80,
|
||||||
ResumeId = 1
|
ResumeId = 1
|
||||||
@ -1181,14 +1247,47 @@ namespace PortBlog.API.Migrations
|
|||||||
{
|
{
|
||||||
Id = 1,
|
Id = 1,
|
||||||
BlogUrl = "https://bangararaju.kottedi.in/blog",
|
BlogUrl = "https://bangararaju.kottedi.in/blog",
|
||||||
CreatedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(8894),
|
CreatedDate = new DateTime(2025, 11, 13, 19, 20, 39, 300, DateTimeKind.Local).AddTicks(6144),
|
||||||
GitHub = "https://github.com/rajukottedi",
|
GitHub = "https://github.com/rajukottedi",
|
||||||
Linkedin = "https://in.linkedin.com/in/bangara-raju-kottedi-299072109",
|
Linkedin = "https://in.linkedin.com/in/bangara-raju-kottedi-299072109",
|
||||||
ModifiedDate = new DateTime(2024, 5, 7, 23, 8, 7, 980, DateTimeKind.Local).AddTicks(8895),
|
ModifiedDate = new DateTime(2025, 11, 13, 19, 20, 39, 300, DateTimeKind.Local).AddTicks(6145),
|
||||||
ResumeId = 1
|
ResumeId = 1
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("PortBlog.API.Entities.User", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("UserId")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("UserId"));
|
||||||
|
|
||||||
|
b.Property<DateTime>("CreatedAt")
|
||||||
|
.HasColumnType("datetime(6)");
|
||||||
|
|
||||||
|
b.Property<string>("Email")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("longtext");
|
||||||
|
|
||||||
|
b.Property<string>("Username")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("longtext");
|
||||||
|
|
||||||
|
b.HasKey("UserId");
|
||||||
|
|
||||||
|
b.ToTable("Users");
|
||||||
|
|
||||||
|
b.HasData(
|
||||||
|
new
|
||||||
|
{
|
||||||
|
UserId = 1,
|
||||||
|
CreatedAt = new DateTime(2025, 11, 13, 13, 50, 39, 303, DateTimeKind.Utc).AddTicks(2327),
|
||||||
|
Email = "bangararaju.kottedi@gmail.com",
|
||||||
|
Username = "rajukottedi"
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
modelBuilder.Entity("PortBlog.API.Entities.Academic", b =>
|
modelBuilder.Entity("PortBlog.API.Entities.Academic", b =>
|
||||||
{
|
{
|
||||||
b.HasOne("PortBlog.API.Entities.Resume", "Resume")
|
b.HasOne("PortBlog.API.Entities.Resume", "Resume")
|
||||||
@ -1277,6 +1376,17 @@ namespace PortBlog.API.Migrations
|
|||||||
b.Navigation("Resume");
|
b.Navigation("Resume");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("PortBlog.API.Entities.RefreshToken", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("PortBlog.API.Entities.User", "User")
|
||||||
|
.WithMany("RefreshTokens")
|
||||||
|
.HasForeignKey("UserId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.Navigation("User");
|
||||||
|
});
|
||||||
|
|
||||||
modelBuilder.Entity("PortBlog.API.Entities.Resume", b =>
|
modelBuilder.Entity("PortBlog.API.Entities.Resume", b =>
|
||||||
{
|
{
|
||||||
b.HasOne("PortBlog.API.Entities.Candidate", "Candidate")
|
b.HasOne("PortBlog.API.Entities.Candidate", "Candidate")
|
||||||
@ -1360,6 +1470,11 @@ namespace PortBlog.API.Migrations
|
|||||||
|
|
||||||
b.Navigation("SocialLinks");
|
b.Navigation("SocialLinks");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("PortBlog.API.Entities.User", b =>
|
||||||
|
{
|
||||||
|
b.Navigation("RefreshTokens");
|
||||||
|
});
|
||||||
#pragma warning restore 612, 618
|
#pragma warning restore 612, 618
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -11,5 +11,7 @@
|
|||||||
public string Password { get; set; } = string.Empty;
|
public string Password { get; set; } = string.Empty;
|
||||||
|
|
||||||
public bool Enable { get; set; } = false;
|
public bool Enable { get; set; } = false;
|
||||||
|
|
||||||
|
public string Domain { get; set; } = string.Empty;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -9,8 +9,6 @@ namespace PortBlog.API.Models
|
|||||||
|
|
||||||
public string FromEmail { get; set; } = string.Empty;
|
public string FromEmail { get; set; } = string.Empty;
|
||||||
|
|
||||||
public string CandidateName { get; set; } = string.Empty;
|
|
||||||
|
|
||||||
public string ToEmail { get; set; } = string.Empty;
|
public string ToEmail { get; set; } = string.Empty;
|
||||||
|
|
||||||
public string Subject { get; set; } = string.Empty;
|
public string Subject { get; set; } = string.Empty;
|
||||||
|
|||||||
9
PortBlog.API/Models/OtpMailModel.cs
Normal file
9
PortBlog.API/Models/OtpMailModel.cs
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
namespace PortBlog.API.Models
|
||||||
|
{
|
||||||
|
public class OtpMailModel
|
||||||
|
{
|
||||||
|
public string Name { get; set; } = string.Empty;
|
||||||
|
public string OtpCode { get; set; } = string.Empty;
|
||||||
|
public int ExpiryMinutes { get; set; } = 3;
|
||||||
|
}
|
||||||
|
}
|
||||||
8
PortBlog.API/Models/VerifyOtpRequest.cs
Normal file
8
PortBlog.API/Models/VerifyOtpRequest.cs
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
namespace PortBlog.API.Models
|
||||||
|
{
|
||||||
|
public class VerifyOtpRequest
|
||||||
|
{
|
||||||
|
public string UserId { get; set; } = string.Empty;
|
||||||
|
public string OtpCode { get; set; } = string.Empty;
|
||||||
|
}
|
||||||
|
}
|
||||||
11
PortBlog.API/Options/JwtAuthenticationOptions.cs
Normal file
11
PortBlog.API/Options/JwtAuthenticationOptions.cs
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
namespace PortBlog.API.Options
|
||||||
|
{
|
||||||
|
public class JwtAuthenticationOptions
|
||||||
|
{
|
||||||
|
required public string SecretKey { get; set; }
|
||||||
|
|
||||||
|
required public int AccessTokenExpiryInMinutes { get; set; }
|
||||||
|
|
||||||
|
required public int RefreshTokenExpiryInHours { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,7 +1,7 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk.Web">
|
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>net8.0</TargetFramework>
|
<TargetFramework>net9.0</TargetFramework>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<ImplicitUsings>enable</ImplicitUsings>
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
<GenerateDocumentationFile>True</GenerateDocumentationFile>
|
<GenerateDocumentationFile>True</GenerateDocumentationFile>
|
||||||
@ -10,22 +10,30 @@
|
|||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Asp.Versioning.Mvc.ApiExplorer" Version="8.1.0" />
|
<PackageReference Include="Asp.Versioning.Mvc.ApiExplorer" Version="8.1.0" />
|
||||||
<PackageReference Include="AutoMapper" Version="13.0.1" />
|
<PackageReference Include="AutoMapper" Version="15.0.1" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="8.0.4" />
|
<PackageReference Include="BCrypt.Net-Next" Version="4.0.3" />
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.4" />
|
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="9.0.10" />
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="8.0.4">
|
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="9.0.9" />
|
||||||
|
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="9.0.9" />
|
||||||
|
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="9.0.9">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="8.0.2" />
|
<PackageReference Include="Otp.NET" Version="1.4.0" />
|
||||||
<PackageReference Include="Serilog.AspNetCore" Version="8.0.1" />
|
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="9.0.0" />
|
||||||
<PackageReference Include="serilog.sinks.console" Version="5.0.1" />
|
<PackageReference Include="Razor.Templating.Core" Version="2.1.0" />
|
||||||
<PackageReference Include="serilog.sinks.file" Version="5.0.0" />
|
<PackageReference Include="Serilog.AspNetCore" Version="9.0.0" />
|
||||||
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.5.0" />
|
<PackageReference Include="serilog.sinks.console" Version="6.0.0" />
|
||||||
|
<PackageReference Include="serilog.sinks.file" Version="7.0.0" />
|
||||||
|
<PackageReference Include="Swashbuckle.AspNetCore" Version="9.0.6" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="Images\**" CopyToPublishDirectory="PreserveNewest" />
|
<Content Include="Images\**" CopyToPublishDirectory="PreserveNewest" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\Shared\KBR.Cache\KBR.Cache.csproj" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@ -4,6 +4,62 @@
|
|||||||
<name>PortBlog.API</name>
|
<name>PortBlog.API</name>
|
||||||
</assembly>
|
</assembly>
|
||||||
<members>
|
<members>
|
||||||
|
<member name="M:PortBlog.API.Controllers.AdminController.GetHobbies(System.Int32)">
|
||||||
|
<summary>
|
||||||
|
Get hobbies of the candidate by candidateid
|
||||||
|
</summary>
|
||||||
|
<param name="candidateId">The id of the candidate whose hobbies to get</param>
|
||||||
|
<returns>Hobbies of the candidate</returns>
|
||||||
|
<response code="200">Returns the requested hobbies of the candidate</response>
|
||||||
|
</member>
|
||||||
|
<member name="M:PortBlog.API.Controllers.AdminController.GetContact(System.Int32)">
|
||||||
|
<summary>
|
||||||
|
Get Candidate details with social links by candidateid
|
||||||
|
</summary>
|
||||||
|
<param name="candidateId">The id of the candidate whose detials to get with social links</param>
|
||||||
|
<returns>Candidate details with sociallinks</returns>
|
||||||
|
<response code="200">Returns the requested candidate details with social links</response>
|
||||||
|
</member>
|
||||||
|
<member name="M:PortBlog.API.Controllers.AdminController.GetResume(System.Int32)">
|
||||||
|
<summary>
|
||||||
|
Get Candidate resume by candidateid
|
||||||
|
</summary>
|
||||||
|
<param name="candidateId">The id of the candidate whose resume to get</param>
|
||||||
|
<returns>Candidate resume</returns>
|
||||||
|
<response code="200">Returns the requested candidate resume</response>
|
||||||
|
</member>
|
||||||
|
<member name="M:PortBlog.API.Controllers.AdminController.GetProjects(System.Int32)">
|
||||||
|
<summary>
|
||||||
|
Get Candidate projects by candidateid
|
||||||
|
</summary>
|
||||||
|
<param name="candidateId">The id of the candidate whose projects to get</param>
|
||||||
|
<returns>Candidate projects</returns>
|
||||||
|
<response code="200">Returns the requested candidate projects</response>
|
||||||
|
</member>
|
||||||
|
<member name="T:PortBlog.API.Controllers.AuthController">
|
||||||
|
<summary>
|
||||||
|
Controller for handling authentication-related operations.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:PortBlog.API.Controllers.AuthController.#ctor(PortBlog.API.Services.Contracts.IAuthService,PortBlog.API.Services.Contracts.IMailService,PortBlog.API.Repositories.Contracts.ICandidateRepository,Microsoft.Extensions.Logging.ILogger{PortBlog.API.Controllers.AuthController},AutoMapper.IMapper,Microsoft.Extensions.Configuration.IConfiguration,PortBlog.API.Services.Contracts.ITemplateService,KBR.Cache.IAppDistributedCache)">
|
||||||
|
<summary>
|
||||||
|
Controller for handling authentication-related operations.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:PortBlog.API.Controllers.AuthController.GenerateOtp(System.String)">
|
||||||
|
<summary>
|
||||||
|
Generates a One-Time Password (OTP) for the specified candidate and sends it via email.
|
||||||
|
</summary>
|
||||||
|
<param name="candidateId">The ID of the candidate for whom the OTP is generated.</param>
|
||||||
|
<returns>An ActionResult indicating the result of the operation.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:PortBlog.API.Controllers.AuthController.VerifyOtp(PortBlog.API.Models.VerifyOtpRequest)">
|
||||||
|
<summary>
|
||||||
|
Verifies the One-Time Password (OTP) for the specified user.
|
||||||
|
</summary>
|
||||||
|
<param name="request">The request containing the user ID and OTP code to verify.</param>
|
||||||
|
<returns>An ActionResult indicating the result of the verification.</returns>
|
||||||
|
</member>
|
||||||
<member name="M:PortBlog.API.Controllers.CvController.Get(System.Int32)">
|
<member name="M:PortBlog.API.Controllers.CvController.Get(System.Int32)">
|
||||||
<summary>
|
<summary>
|
||||||
Get CV details of the candidate by candidateid.
|
Get CV details of the candidate by candidateid.
|
||||||
@ -181,6 +237,78 @@
|
|||||||
<member name="M:PortBlog.API.Migrations.Dataupdate.BuildTargetModel(Microsoft.EntityFrameworkCore.ModelBuilder)">
|
<member name="M:PortBlog.API.Migrations.Dataupdate.BuildTargetModel(Microsoft.EntityFrameworkCore.ModelBuilder)">
|
||||||
<inheritdoc />
|
<inheritdoc />
|
||||||
</member>
|
</member>
|
||||||
|
<member name="T:PortBlog.API.Migrations.CreateCacheTable">
|
||||||
|
<inheritdoc />
|
||||||
|
</member>
|
||||||
|
<member name="M:PortBlog.API.Migrations.CreateCacheTable.Up(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
|
||||||
|
<inheritdoc />
|
||||||
|
</member>
|
||||||
|
<member name="M:PortBlog.API.Migrations.CreateCacheTable.Down(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
|
||||||
|
<inheritdoc />
|
||||||
|
</member>
|
||||||
|
<member name="M:PortBlog.API.Migrations.CreateCacheTable.BuildTargetModel(Microsoft.EntityFrameworkCore.ModelBuilder)">
|
||||||
|
<inheritdoc />
|
||||||
|
</member>
|
||||||
|
<member name="T:PortBlog.API.Migrations.MessageContentMaxLength">
|
||||||
|
<inheritdoc />
|
||||||
|
</member>
|
||||||
|
<member name="M:PortBlog.API.Migrations.MessageContentMaxLength.Up(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
|
||||||
|
<inheritdoc />
|
||||||
|
</member>
|
||||||
|
<member name="M:PortBlog.API.Migrations.MessageContentMaxLength.Down(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
|
||||||
|
<inheritdoc />
|
||||||
|
</member>
|
||||||
|
<member name="M:PortBlog.API.Migrations.MessageContentMaxLength.BuildTargetModel(Microsoft.EntityFrameworkCore.ModelBuilder)">
|
||||||
|
<inheritdoc />
|
||||||
|
</member>
|
||||||
|
<member name="T:PortBlog.API.Migrations.User_RefreshTokens">
|
||||||
|
<inheritdoc />
|
||||||
|
</member>
|
||||||
|
<member name="M:PortBlog.API.Migrations.User_RefreshTokens.Up(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
|
||||||
|
<inheritdoc />
|
||||||
|
</member>
|
||||||
|
<member name="M:PortBlog.API.Migrations.User_RefreshTokens.Down(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
|
||||||
|
<inheritdoc />
|
||||||
|
</member>
|
||||||
|
<member name="M:PortBlog.API.Migrations.User_RefreshTokens.BuildTargetModel(Microsoft.EntityFrameworkCore.ModelBuilder)">
|
||||||
|
<inheritdoc />
|
||||||
|
</member>
|
||||||
|
<member name="T:PortBlog.API.Migrations.User_RefreshTokens_Rerun">
|
||||||
|
<inheritdoc />
|
||||||
|
</member>
|
||||||
|
<member name="M:PortBlog.API.Migrations.User_RefreshTokens_Rerun.Up(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
|
||||||
|
<inheritdoc />
|
||||||
|
</member>
|
||||||
|
<member name="M:PortBlog.API.Migrations.User_RefreshTokens_Rerun.Down(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
|
||||||
|
<inheritdoc />
|
||||||
|
</member>
|
||||||
|
<member name="M:PortBlog.API.Migrations.User_RefreshTokens_Rerun.BuildTargetModel(Microsoft.EntityFrameworkCore.ModelBuilder)">
|
||||||
|
<inheritdoc />
|
||||||
|
</member>
|
||||||
|
<member name="T:PortBlog.API.Migrations.User_RefreshTokens_Update">
|
||||||
|
<inheritdoc />
|
||||||
|
</member>
|
||||||
|
<member name="M:PortBlog.API.Migrations.User_RefreshTokens_Update.Up(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
|
||||||
|
<inheritdoc />
|
||||||
|
</member>
|
||||||
|
<member name="M:PortBlog.API.Migrations.User_RefreshTokens_Update.Down(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
|
||||||
|
<inheritdoc />
|
||||||
|
</member>
|
||||||
|
<member name="M:PortBlog.API.Migrations.User_RefreshTokens_Update.BuildTargetModel(Microsoft.EntityFrameworkCore.ModelBuilder)">
|
||||||
|
<inheritdoc />
|
||||||
|
</member>
|
||||||
|
<member name="T:PortBlog.API.Migrations.updaterefreshtoken">
|
||||||
|
<inheritdoc />
|
||||||
|
</member>
|
||||||
|
<member name="M:PortBlog.API.Migrations.updaterefreshtoken.Up(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
|
||||||
|
<inheritdoc />
|
||||||
|
</member>
|
||||||
|
<member name="M:PortBlog.API.Migrations.updaterefreshtoken.Down(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
|
||||||
|
<inheritdoc />
|
||||||
|
</member>
|
||||||
|
<member name="M:PortBlog.API.Migrations.updaterefreshtoken.BuildTargetModel(Microsoft.EntityFrameworkCore.ModelBuilder)">
|
||||||
|
<inheritdoc />
|
||||||
|
</member>
|
||||||
<member name="T:PortBlog.API.Models.CvDto">
|
<member name="T:PortBlog.API.Models.CvDto">
|
||||||
<summary>
|
<summary>
|
||||||
CV details of the candidate
|
CV details of the candidate
|
||||||
@ -271,5 +399,13 @@
|
|||||||
The work experiences of the candidate
|
The work experiences of the candidate
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:PortBlog.API.Services.AuthService.ValidateOtp(System.String,System.String)">
|
||||||
|
<summary>
|
||||||
|
Validates the provided OTP against the secret key.
|
||||||
|
</summary>
|
||||||
|
<param name="secretKey">The Base32 encoded secret key.</param>
|
||||||
|
<param name="otp">The OTP to validate.</param>
|
||||||
|
<returns>True if the OTP is valid; otherwise, false.</returns>
|
||||||
|
</member>
|
||||||
</members>
|
</members>
|
||||||
</doc>
|
</doc>
|
||||||
|
|||||||
@ -1,33 +1,37 @@
|
|||||||
using Asp.Versioning;
|
using Asp.Versioning;
|
||||||
using Asp.Versioning.ApiExplorer;
|
using Asp.Versioning.ApiExplorer;
|
||||||
|
using KBR.Cache.Extensions;
|
||||||
|
using Microsoft.AspNetCore.Authentication.JwtBearer;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using Microsoft.Extensions.FileProviders;
|
using Microsoft.Extensions.FileProviders;
|
||||||
|
using Microsoft.IdentityModel.Tokens;
|
||||||
using Microsoft.OpenApi.Models;
|
using Microsoft.OpenApi.Models;
|
||||||
using PortBlog.API.DbContexts;
|
using PortBlog.API.DbContexts;
|
||||||
using PortBlog.API.Extensions;
|
using PortBlog.API.Extensions;
|
||||||
using PortBlog.API.Middleware;
|
using PortBlog.API.Middleware;
|
||||||
using Serilog;
|
using Serilog;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var builder = WebApplication.CreateBuilder(args);
|
var builder = WebApplication.CreateBuilder(args);
|
||||||
|
|
||||||
|
var loggerConfiguration = new LoggerConfiguration();
|
||||||
|
|
||||||
if (builder.Environment.IsDevelopment())
|
if (builder.Environment.IsDevelopment())
|
||||||
{
|
{
|
||||||
Log.Logger = new LoggerConfiguration()
|
loggerConfiguration = loggerConfiguration.MinimumLevel.Debug()
|
||||||
.MinimumLevel.Debug()
|
.WriteTo.Console();
|
||||||
.WriteTo.Console()
|
|
||||||
.WriteTo.File("logs/portblog.txt", rollingInterval: RollingInterval.Day)
|
|
||||||
.CreateLogger();
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Log.Logger = new LoggerConfiguration()
|
loggerConfiguration = loggerConfiguration.MinimumLevel.Information();
|
||||||
.MinimumLevel.Information()
|
}
|
||||||
|
|
||||||
|
Log.Logger = loggerConfiguration
|
||||||
.WriteTo.File("logs/portblog.txt", rollingInterval: RollingInterval.Day)
|
.WriteTo.File("logs/portblog.txt", rollingInterval: RollingInterval.Day)
|
||||||
.CreateLogger();
|
.CreateLogger();
|
||||||
}
|
|
||||||
|
|
||||||
var urls = builder.Configuration.GetSection("Urls");
|
var urls = builder.Configuration.GetSection("Urls");
|
||||||
|
|
||||||
@ -39,10 +43,12 @@ if (!string.IsNullOrEmpty(urls.Value))
|
|||||||
}
|
}
|
||||||
|
|
||||||
var allowedCorsOrigins = builder.Configuration.GetSection("AllowedCorsOrigins");
|
var allowedCorsOrigins = builder.Configuration.GetSection("AllowedCorsOrigins");
|
||||||
|
string[] origins = Array.Empty<string>();
|
||||||
|
|
||||||
if (!String.IsNullOrEmpty(allowedCorsOrigins.Value))
|
if (!String.IsNullOrEmpty(allowedCorsOrigins.Value))
|
||||||
{
|
{
|
||||||
var origins = allowedCorsOrigins.Value.Split(",");
|
origins = allowedCorsOrigins.Value.Split(",", StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries);
|
||||||
|
}
|
||||||
|
|
||||||
builder.Services.AddCors(options =>
|
builder.Services.AddCors(options =>
|
||||||
{
|
{
|
||||||
@ -51,9 +57,10 @@ if (!String.IsNullOrEmpty(allowedCorsOrigins.Value))
|
|||||||
{
|
{
|
||||||
policy.WithOrigins(origins);
|
policy.WithOrigins(origins);
|
||||||
policy.AllowAnyHeader();
|
policy.AllowAnyHeader();
|
||||||
|
policy.AllowAnyMethod();
|
||||||
|
policy.AllowCredentials();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
|
||||||
|
|
||||||
builder.Host.UseSerilog();
|
builder.Host.UseSerilog();
|
||||||
|
|
||||||
@ -88,7 +95,8 @@ builder.Services
|
|||||||
builder.Services.AddRepositories();
|
builder.Services.AddRepositories();
|
||||||
builder.Services.AddServices();
|
builder.Services.AddServices();
|
||||||
|
|
||||||
builder.Services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies());
|
builder.Services.AddAutoMapper(cfg => cfg.AddMaps(AppDomain.CurrentDomain.GetAssemblies()));
|
||||||
|
builder.Services.AddCache(builder.Configuration);
|
||||||
|
|
||||||
|
|
||||||
// Registering API Versioning Specification services
|
// Registering API Versioning Specification services
|
||||||
@ -146,14 +154,56 @@ builder.Services.AddSwaggerGen(c =>
|
|||||||
In = ParameterLocation.Header
|
In = ParameterLocation.Header
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// JWT Bearer Security Definition
|
||||||
|
c.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
|
||||||
|
{
|
||||||
|
Description = "JWT Authorization header using the Bearer scheme.\nExample: 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..'",
|
||||||
|
Name = "Authorization",
|
||||||
|
In = ParameterLocation.Header,
|
||||||
|
Type = SecuritySchemeType.Http,
|
||||||
|
Scheme = "Bearer",
|
||||||
|
BearerFormat = "JWT"
|
||||||
|
});
|
||||||
|
|
||||||
|
var bearerScheme = new OpenApiSecurityScheme
|
||||||
|
{
|
||||||
|
Reference = new OpenApiReference
|
||||||
|
{
|
||||||
|
Type = ReferenceType.SecurityScheme,
|
||||||
|
Id = "Bearer"
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
var requirement = new OpenApiSecurityRequirement()
|
var requirement = new OpenApiSecurityRequirement()
|
||||||
{
|
{
|
||||||
{key, new List<string> {} }
|
{key, new List<string> {} },
|
||||||
|
{bearerScheme, new List<string>{} }
|
||||||
};
|
};
|
||||||
|
|
||||||
c.AddSecurityRequirement(requirement);
|
c.AddSecurityRequirement(requirement);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
var key = Encoding.UTF8.GetBytes(builder.Configuration["Jwt:Key"]);
|
||||||
|
|
||||||
|
builder.Services.AddAuthentication(options =>
|
||||||
|
{
|
||||||
|
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
|
||||||
|
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
|
||||||
|
})
|
||||||
|
.AddJwtBearer(options =>
|
||||||
|
{
|
||||||
|
options.TokenValidationParameters = new TokenValidationParameters
|
||||||
|
{
|
||||||
|
ValidateIssuer = true,
|
||||||
|
ValidateAudience = true,
|
||||||
|
ValidateLifetime = true,
|
||||||
|
ValidateIssuerSigningKey = true,
|
||||||
|
ValidIssuer = builder.Configuration["Jwt:Issuer"],
|
||||||
|
ValidAudience = builder.Configuration["Jwt:Audience"],
|
||||||
|
IssuerSigningKey = new SymmetricSecurityKey(key)
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
var app = builder.Build();
|
var app = builder.Build();
|
||||||
|
|
||||||
app.UseCors();
|
app.UseCors();
|
||||||
@ -188,6 +238,8 @@ app.UseStaticFiles(new StaticFileOptions()
|
|||||||
RequestPath = new PathString("/images")
|
RequestPath = new PathString("/images")
|
||||||
});
|
});
|
||||||
|
|
||||||
|
app.UseAuthentication();
|
||||||
|
|
||||||
app.UseAuthorization();
|
app.UseAuthorization();
|
||||||
|
|
||||||
app.UseMiddleware<ApiKeyMiddleware>();
|
app.UseMiddleware<ApiKeyMiddleware>();
|
||||||
|
|||||||
@ -1,33 +1,23 @@
|
|||||||
{
|
{
|
||||||
"$schema": "http://json.schemastore.org/launchsettings.json",
|
|
||||||
"iisSettings": {
|
|
||||||
"windowsAuthentication": false,
|
|
||||||
"anonymousAuthentication": true,
|
|
||||||
"iisExpress": {
|
|
||||||
"applicationUrl": "http://localhost:37113",
|
|
||||||
"sslPort": 44357
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"profiles": {
|
"profiles": {
|
||||||
"http": {
|
"http": {
|
||||||
"commandName": "Project",
|
"commandName": "Project",
|
||||||
"dotnetRunMessages": true,
|
|
||||||
"launchBrowser": true,
|
"launchBrowser": true,
|
||||||
"launchUrl": "swagger",
|
"launchUrl": "swagger",
|
||||||
"applicationUrl": "http://localhost:5039",
|
|
||||||
"environmentVariables": {
|
"environmentVariables": {
|
||||||
"ASPNETCORE_ENVIRONMENT": "Development"
|
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||||
}
|
},
|
||||||
|
"dotnetRunMessages": true,
|
||||||
|
"applicationUrl": "http://localhost:5039"
|
||||||
},
|
},
|
||||||
"PortBlog.API": {
|
"PortBlog.API": {
|
||||||
"commandName": "Project",
|
"commandName": "Project",
|
||||||
"dotnetRunMessages": true,
|
|
||||||
"launchBrowser": true,
|
|
||||||
"launchUrl": "swagger",
|
"launchUrl": "swagger",
|
||||||
"applicationUrl": "https://localhost:7013;http://localhost:5039",
|
|
||||||
"environmentVariables": {
|
"environmentVariables": {
|
||||||
"ASPNETCORE_ENVIRONMENT": "Development"
|
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||||
}
|
},
|
||||||
|
"dotnetRunMessages": true,
|
||||||
|
"applicationUrl": "https://localhost:7013;http://localhost:5039"
|
||||||
},
|
},
|
||||||
"IIS Express": {
|
"IIS Express": {
|
||||||
"commandName": "IISExpress",
|
"commandName": "IISExpress",
|
||||||
@ -37,5 +27,14 @@
|
|||||||
"ASPNETCORE_ENVIRONMENT": "Development"
|
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"$schema": "http://json.schemastore.org/launchsettings.json",
|
||||||
|
"iisSettings": {
|
||||||
|
"windowsAuthentication": false,
|
||||||
|
"anonymousAuthentication": true,
|
||||||
|
"iisExpress": {
|
||||||
|
"applicationUrl": "http://localhost:37113",
|
||||||
|
"sslPort": 44357
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -23,5 +23,10 @@ namespace PortBlog.API.Repositories
|
|||||||
{
|
{
|
||||||
return await _cvBlogContext.Candidates.FirstOrDefaultAsync(c => c.CandidateId == id);
|
return await _cvBlogContext.Candidates.FirstOrDefaultAsync(c => c.CandidateId == id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task<Candidate?> GetCandidateAsync(string email)
|
||||||
|
{
|
||||||
|
return await _cvBlogContext.Candidates.FirstOrDefaultAsync(c => c.Email == email);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,6 +6,8 @@ namespace PortBlog.API.Repositories.Contracts
|
|||||||
{
|
{
|
||||||
Task<Candidate?> GetCandidateAsync(int id);
|
Task<Candidate?> GetCandidateAsync(int id);
|
||||||
|
|
||||||
|
Task<Candidate?> GetCandidateAsync(string email);
|
||||||
|
|
||||||
Task<bool> CandidateExistAsync(int candidateId);
|
Task<bool> CandidateExistAsync(int candidateId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
153
PortBlog.API/Services/AuthService.cs
Normal file
153
PortBlog.API/Services/AuthService.cs
Normal file
@ -0,0 +1,153 @@
|
|||||||
|
using KBR.Cache;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using Microsoft.IdentityModel.Tokens;
|
||||||
|
using OtpNet;
|
||||||
|
using PortBlog.API.DbContexts;
|
||||||
|
using PortBlog.API.Entities;
|
||||||
|
using PortBlog.API.Services.Contracts;
|
||||||
|
using System.IdentityModel.Tokens.Jwt;
|
||||||
|
using System.Security.Claims;
|
||||||
|
using System.Security.Cryptography;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace PortBlog.API.Services
|
||||||
|
{
|
||||||
|
public class AuthService : IAuthService
|
||||||
|
{
|
||||||
|
private readonly IConfiguration configuration;
|
||||||
|
private readonly IAppDistributedCache cache;
|
||||||
|
private readonly CvBlogContext _context;
|
||||||
|
|
||||||
|
public AuthService(IConfiguration configuration, IAppDistributedCache cache, CvBlogContext context)
|
||||||
|
{
|
||||||
|
this.configuration = configuration ?? throw new ArgumentNullException(nameof(configuration));
|
||||||
|
this.cache = cache ?? throw new ArgumentNullException(nameof(cache));
|
||||||
|
this._context = context ?? throw new ArgumentNullException(nameof(context));
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<string> GenerateOtp(string email, CancellationToken ct = default)
|
||||||
|
{
|
||||||
|
var secretKey = KeyGeneration.GenerateRandomKey(20);
|
||||||
|
var secretKeyBase32 = Base32Encoding.ToString(secretKey);
|
||||||
|
var otp = this.GenerateOtp(secretKeyBase32);
|
||||||
|
|
||||||
|
await CacheHelpers.SetUserSecretsCacheAsync(cache, email, secretKeyBase32, ct);
|
||||||
|
|
||||||
|
return otp;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Validates the provided OTP against the secret key.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="secretKey">The Base32 encoded secret key.</param>
|
||||||
|
/// <param name="otp">The OTP to validate.</param>
|
||||||
|
/// <returns>True if the OTP is valid; otherwise, false.</returns>
|
||||||
|
public bool ValidateOtp(string secretKey, string otp)
|
||||||
|
{
|
||||||
|
var key = Base32Encoding.ToBytes(secretKey);
|
||||||
|
var otpExpiryInMinutes = configuration.GetValue<int>("OtpExpiryInMinutes", 3);
|
||||||
|
var totp = new Totp(key, step: otpExpiryInMinutes * 60);
|
||||||
|
|
||||||
|
return totp.VerifyTotp(DateTime.UtcNow, otp, out long _, VerificationWindow.RfcSpecifiedNetworkDelay);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GenerateAccessToken(string username)
|
||||||
|
{
|
||||||
|
var claims = new[]
|
||||||
|
{
|
||||||
|
new Claim(ClaimTypes.Name, username),
|
||||||
|
new Claim(ClaimTypes.Role, "Admin")
|
||||||
|
};
|
||||||
|
|
||||||
|
var jwtKey = configuration["Jwt:Key"];
|
||||||
|
if (string.IsNullOrEmpty(jwtKey))
|
||||||
|
throw new InvalidOperationException("JWT key is not configured.");
|
||||||
|
|
||||||
|
var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(jwtKey));
|
||||||
|
var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
|
||||||
|
|
||||||
|
// Safely read expiry minutes from configuration with a fallback default
|
||||||
|
var mins = configuration.GetValue<int?>("Jwt:AccessTokenExpiryInMinutes") ?? 5;
|
||||||
|
|
||||||
|
var token = new JwtSecurityToken(
|
||||||
|
issuer: configuration["Jwt:Issuer"],
|
||||||
|
audience: configuration["Jwt:Audience"],
|
||||||
|
claims: claims,
|
||||||
|
expires: DateTime.UtcNow.AddMinutes(mins),
|
||||||
|
signingCredentials: creds
|
||||||
|
);
|
||||||
|
|
||||||
|
return new JwtSecurityTokenHandler().WriteToken(token);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GenerateRefreshToken()
|
||||||
|
{
|
||||||
|
return Convert.ToBase64String(RandomNumberGenerator.GetBytes(64));
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task SaveRefreshToken(string userEmail, string refreshToken, HttpContext httpContext)
|
||||||
|
{
|
||||||
|
var user = await GetUser(userEmail);
|
||||||
|
if (user == null) throw new InvalidOperationException("User not found.");
|
||||||
|
|
||||||
|
// Store hashed refresh token in DB
|
||||||
|
var hashedToken = BCrypt.Net.BCrypt.HashPassword(refreshToken);
|
||||||
|
_context.RefreshTokens.Add(new RefreshToken
|
||||||
|
{
|
||||||
|
UserId = user.UserId,
|
||||||
|
Token = hashedToken,
|
||||||
|
ExpiryDate = DateTime.UtcNow.AddHours(configuration.GetValue<int>("Jwt:RefreshTokenExpiryInHours", 24)),
|
||||||
|
JwtId = Guid.NewGuid().ToString(),
|
||||||
|
DeviceInfo = httpContext.Request.Headers.UserAgent.ToString()
|
||||||
|
});
|
||||||
|
|
||||||
|
await _context.SaveChangesAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task SaveRefreshToken(RefreshToken refreshToken)
|
||||||
|
{
|
||||||
|
_context.RefreshTokens.Add(refreshToken);
|
||||||
|
await _context.SaveChangesAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<RefreshToken?> GetRefreshTokenAsync(string refreshToken)
|
||||||
|
{
|
||||||
|
// Find user and validate refresh token
|
||||||
|
var refreshEntity = await _context.RefreshTokens
|
||||||
|
.Include(rt => rt.User)
|
||||||
|
.Where(rt => !rt.Revoked && rt.ExpiryDate > DateTime.UtcNow)
|
||||||
|
.ToListAsync();
|
||||||
|
|
||||||
|
return refreshEntity.FirstOrDefault(rt => BCrypt.Net.BCrypt.Verify(refreshToken, rt.Token));
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task RemoveRefreshToken(string refreshToken)
|
||||||
|
{
|
||||||
|
var tokens = await _context.RefreshTokens
|
||||||
|
.Where(rt => rt.Revoked == false && rt.ExpiryDate > DateTime.UtcNow)
|
||||||
|
.ToListAsync();
|
||||||
|
|
||||||
|
var refreshTokenEntity = tokens
|
||||||
|
.FirstOrDefault(rt => BCrypt.Net.BCrypt.Verify(refreshToken, rt.Token));
|
||||||
|
|
||||||
|
if (refreshTokenEntity != null)
|
||||||
|
{
|
||||||
|
refreshTokenEntity.Revoked = true;
|
||||||
|
await _context.SaveChangesAsync();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task<User?> GetUser(string userEmail)
|
||||||
|
{
|
||||||
|
return await _context.Users.FirstOrDefaultAsync(u => u.Email == userEmail);
|
||||||
|
}
|
||||||
|
|
||||||
|
private string GenerateOtp(string secretKey)
|
||||||
|
{
|
||||||
|
var key = Base32Encoding.ToBytes(secretKey);
|
||||||
|
var otpExpiryInMinutes = configuration.GetValue<int>("OtpExpiryInMinutes", 3);
|
||||||
|
var totp = new Totp(key, otpExpiryInMinutes * 60);
|
||||||
|
return totp.ComputeTotp(DateTime.UtcNow);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
23
PortBlog.API/Services/Contracts/IAuthService.cs
Normal file
23
PortBlog.API/Services/Contracts/IAuthService.cs
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
using PortBlog.API.Entities;
|
||||||
|
|
||||||
|
namespace PortBlog.API.Services.Contracts
|
||||||
|
{
|
||||||
|
public interface IAuthService
|
||||||
|
{
|
||||||
|
Task<string> GenerateOtp(string email, CancellationToken ct = default);
|
||||||
|
|
||||||
|
bool ValidateOtp(string secretKey, string otp);
|
||||||
|
|
||||||
|
string GenerateAccessToken(string username);
|
||||||
|
|
||||||
|
string GenerateRefreshToken();
|
||||||
|
|
||||||
|
Task SaveRefreshToken(string userId, string refreshToken, HttpContext httpContext);
|
||||||
|
|
||||||
|
Task SaveRefreshToken(RefreshToken refreshToken);
|
||||||
|
|
||||||
|
Task<RefreshToken> GetRefreshTokenAsync(string refreshToken);
|
||||||
|
|
||||||
|
Task RemoveRefreshToken(string refreshToken);
|
||||||
|
}
|
||||||
|
}
|
||||||
6
PortBlog.API/Services/Contracts/IOtpService.cs
Normal file
6
PortBlog.API/Services/Contracts/IOtpService.cs
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
namespace PortBlog.API.Services.Contracts
|
||||||
|
{
|
||||||
|
public interface IOtpService
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
7
PortBlog.API/Services/Contracts/ITemplateService.cs
Normal file
7
PortBlog.API/Services/Contracts/ITemplateService.cs
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
namespace PortBlog.API.Services.Contracts
|
||||||
|
{
|
||||||
|
public interface ITemplateService
|
||||||
|
{
|
||||||
|
Task<string> GetViewTemplate<T>(string viewPath, T model);
|
||||||
|
}
|
||||||
|
}
|
||||||
6
PortBlog.API/Services/Contracts/ITokenService.cs
Normal file
6
PortBlog.API/Services/Contracts/ITokenService.cs
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
namespace PortBlog.API.Services.Contracts
|
||||||
|
{
|
||||||
|
public interface ITokenService
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
6
PortBlog.API/Services/Contracts/JwtServicecs.cs
Normal file
6
PortBlog.API/Services/Contracts/JwtServicecs.cs
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
namespace PortBlog.API.Services.Contracts
|
||||||
|
{
|
||||||
|
public interface JwtServicecs
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
6
PortBlog.API/Services/JwtService.cs
Normal file
6
PortBlog.API/Services/JwtService.cs
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
namespace PortBlog.API.Services
|
||||||
|
{
|
||||||
|
public class JwtService
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,5 +1,6 @@
|
|||||||
using AutoMapper;
|
using AutoMapper;
|
||||||
using PortBlog.API.Common;
|
using KBR.Shared.Mail;
|
||||||
|
using PortBlog.API.Common.Constants;
|
||||||
using PortBlog.API.Entities;
|
using PortBlog.API.Entities;
|
||||||
using PortBlog.API.Models;
|
using PortBlog.API.Models;
|
||||||
using PortBlog.API.Repositories.Contracts;
|
using PortBlog.API.Repositories.Contracts;
|
||||||
@ -44,16 +45,17 @@ namespace PortBlog.API.Services
|
|||||||
client.EnableSsl = true;
|
client.EnableSsl = true;
|
||||||
client.Credentials = new NetworkCredential(mailSettings.Email, mailSettings.Password);
|
client.Credentials = new NetworkCredential(mailSettings.Email, mailSettings.Password);
|
||||||
|
|
||||||
using (var messageMessage = new MailMessage(
|
using (var mailMessage = new MailMessage(
|
||||||
from: new MailAddress(messageSendDto.FromEmail),
|
from: new MailAddress(mailSettings.Email),
|
||||||
to: new MailAddress(messageSendDto.ToEmail, messageSendDto.CandidateName)
|
to: new MailAddress(MailHelpers.ReplaceEmailDomain(messageSendDto.ToEmail, mailSettings.Domain), messageSendDto.Name)
|
||||||
))
|
))
|
||||||
{
|
{
|
||||||
|
|
||||||
messageMessage.Subject = messageSendDto.Subject;
|
mailMessage.Subject = messageSendDto.Subject;
|
||||||
messageMessage.Body = messageSendDto.Content;
|
mailMessage.Body = messageSendDto.Content;
|
||||||
|
mailMessage.IsBodyHtml = true;
|
||||||
|
|
||||||
client.Send(messageMessage);
|
client.Send(mailMessage);
|
||||||
messageSendDto.SentStatus = (int)MailConstants.MailStatus.Success;
|
messageSendDto.SentStatus = (int)MailConstants.MailStatus.Success;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
6
PortBlog.API/Services/OtpService.cs
Normal file
6
PortBlog.API/Services/OtpService.cs
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
namespace PortBlog.API.Services
|
||||||
|
{
|
||||||
|
public class OtpService
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
13
PortBlog.API/Services/TemplateService.cs
Normal file
13
PortBlog.API/Services/TemplateService.cs
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
using PortBlog.API.Services.Contracts;
|
||||||
|
using Razor.Templating.Core;
|
||||||
|
|
||||||
|
namespace PortBlog.API.Services
|
||||||
|
{
|
||||||
|
public class TemplateService : ITemplateService
|
||||||
|
{
|
||||||
|
public async Task<string> GetViewTemplate<T>(string viewPath, T model)
|
||||||
|
{
|
||||||
|
return await RazorTemplateEngine.RenderAsync(viewPath, model);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
6
PortBlog.API/Services/TokenService.cs
Normal file
6
PortBlog.API/Services/TokenService.cs
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
namespace PortBlog.API.Services
|
||||||
|
{
|
||||||
|
public class TokenService
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
67
PortBlog.API/Views/Email/OtpEmailTemplate.cshtml
Normal file
67
PortBlog.API/Views/Email/OtpEmailTemplate.cshtml
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
@model PortBlog.API.Models.OtpMailModel
|
||||||
|
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>OTP Verification</title>
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
background-color: #f7f8fa;
|
||||||
|
font-family: 'Segoe UI', Arial, sans-serif;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
.container {
|
||||||
|
background-color: #ffffff;
|
||||||
|
max-width: 500px;
|
||||||
|
margin: 40px auto;
|
||||||
|
padding: 30px;
|
||||||
|
border-radius: 10px;
|
||||||
|
box-shadow: 0 3px 8px rgba(0,0,0,0.1);
|
||||||
|
}
|
||||||
|
h2 {
|
||||||
|
color: #0078D7;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
p {
|
||||||
|
font-size: 15px;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
.otp {
|
||||||
|
display: inline-block;
|
||||||
|
background-color: #0078D7;
|
||||||
|
color: #ffffff;
|
||||||
|
padding: 12px 24px;
|
||||||
|
font-size: 20px;
|
||||||
|
font-weight: bold;
|
||||||
|
letter-spacing: 4px;
|
||||||
|
border-radius: 6px;
|
||||||
|
margin: 20px 0;
|
||||||
|
}
|
||||||
|
.footer {
|
||||||
|
font-size: 12px;
|
||||||
|
color: #999;
|
||||||
|
text-align: center;
|
||||||
|
margin-top: 30px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="container">
|
||||||
|
<h2>OTP Verification</h2>
|
||||||
|
<p>Hello @Model.Name,</p>
|
||||||
|
<p>Your One-Time Password (OTP) for verification is:</p>
|
||||||
|
|
||||||
|
<div class="otp">@Model.OtpCode</div>
|
||||||
|
|
||||||
|
<p>This OTP will expire in <strong>@Model.ExpiryMinutes minutes</strong>.</p>
|
||||||
|
<p>If you did not request this, please ignore this email.</p>
|
||||||
|
<div class="footer">
|
||||||
|
© @DateTime.Now.Year Portfolio. All rights reserved.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@ -4,6 +4,18 @@
|
|||||||
"Encryption": "false",
|
"Encryption": "false",
|
||||||
"Key": "rgdBsYjrgQV9YaE+6QFK5oyTOWwbl2bSWkuc2JXcIyw="
|
"Key": "rgdBsYjrgQV9YaE+6QFK5oyTOWwbl2bSWkuc2JXcIyw="
|
||||||
},
|
},
|
||||||
|
"Cache": {
|
||||||
|
"ConnectionString": "SERVER=192.168.0.197; DATABASE=cv_blog; UID=PortBlogDevUser; PWD=p@$$w0rd1234;Allow User Variables=true;",
|
||||||
|
"Provider": "SqlServer"
|
||||||
|
},
|
||||||
|
"Jwt": {
|
||||||
|
"Key": "6JSHxgeot3Z1Obwhk4bvY2UoiFyH3tGq1FHXaaMuO5i",
|
||||||
|
"Issuer": "https://localhost:7013/",
|
||||||
|
"Audience": "http://localhost:4200",
|
||||||
|
"AccessTokenExpiryInMinutes": 1,
|
||||||
|
"RefreshTokenExpiryInHours": 1
|
||||||
|
},
|
||||||
|
"OTPExpiryInMinutes": 3,
|
||||||
"Logging": {
|
"Logging": {
|
||||||
"LogLevel": {
|
"LogLevel": {
|
||||||
"Default": "Information",
|
"Default": "Information",
|
||||||
@ -12,11 +24,12 @@
|
|||||||
},
|
},
|
||||||
"XApiKey": "c6eAXYcNT873TT7BfMgQyS4ii7hxa53TLEUN7pAGaaU=",
|
"XApiKey": "c6eAXYcNT873TT7BfMgQyS4ii7hxa53TLEUN7pAGaaU=",
|
||||||
"MailSettings": {
|
"MailSettings": {
|
||||||
"Enable": false,
|
"Enable": true,
|
||||||
"Host": "smtp.gmail.com",
|
"Host": "mail.kottedi.in",
|
||||||
"Port": 587,
|
"Port": 587,
|
||||||
"Email": "",
|
"Email": "noreply@kottedi.in",
|
||||||
"Password": ""
|
"Password": "MAINore.4356",
|
||||||
|
"Domain": "kottedi.in"
|
||||||
},
|
},
|
||||||
"AllowedCorsOrigins": "http://localhost:4000,http://127.0.0.1:4000"
|
"AllowedCorsOrigins": "http://localhost:4200,http://127.0.0.1:4200"
|
||||||
}
|
}
|
||||||
|
|||||||
96
Shared/KBR.Cache/AppDistributedCache.cs
Normal file
96
Shared/KBR.Cache/AppDistributedCache.cs
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
|
||||||
|
using KBR.Shared.Cache;
|
||||||
|
using Microsoft.Extensions.Caching.Distributed;
|
||||||
|
|
||||||
|
namespace KBR.Cache
|
||||||
|
{
|
||||||
|
internal class AppDistributedCache : IAppDistributedCache
|
||||||
|
{
|
||||||
|
private readonly IDistributedCache _cache;
|
||||||
|
private readonly DistributedCacheEntryOptions _entryOptions;
|
||||||
|
|
||||||
|
public AppDistributedCache(IDistributedCache cache)
|
||||||
|
{
|
||||||
|
this._cache = cache;
|
||||||
|
this._entryOptions = new DistributedCacheEntryOptions();
|
||||||
|
}
|
||||||
|
|
||||||
|
public T Get<T>(string key)
|
||||||
|
where T : class
|
||||||
|
{
|
||||||
|
if (this._cache.Get(key) is var result && result != null)
|
||||||
|
{
|
||||||
|
return result.FromByteArray<T>();
|
||||||
|
}
|
||||||
|
|
||||||
|
return default;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<T> GetAsync<T>(string key, CancellationToken cancellationToken = default)
|
||||||
|
where T : class
|
||||||
|
{
|
||||||
|
var result = await this._cache.GetAsync(key, cancellationToken);
|
||||||
|
|
||||||
|
if (result != null)
|
||||||
|
{
|
||||||
|
return result.FromByteArray<T>();
|
||||||
|
}
|
||||||
|
|
||||||
|
return default;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Set<T>(string key, T obj, DistributedCacheEntryOptions? entryOptions = default)
|
||||||
|
{
|
||||||
|
this._cache.Set(key, obj.ToByteArray(), entryOptions ?? this._entryOptions);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task SetAsync<T>(string key, T obj, DistributedCacheEntryOptions? entryOptions = default, CancellationToken cancellationToken = default)
|
||||||
|
{
|
||||||
|
await this._cache.SetAsync(key, obj.ToByteArray(), entryOptions ?? this._entryOptions, cancellationToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Remove(string key)
|
||||||
|
{
|
||||||
|
this._cache.Remove(key);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task RemoveAsync(string key, CancellationToken cancellationToken = default)
|
||||||
|
{
|
||||||
|
await this._cache.RemoveAsync(key, cancellationToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
public TItem GetOrCreate<TItem>(string key, Func<TItem> factory)
|
||||||
|
where TItem : class
|
||||||
|
{
|
||||||
|
byte[] result = this._cache.Get(key);
|
||||||
|
var resultData = result?.FromByteArray<TItem>();
|
||||||
|
if (result == null || resultData == null)
|
||||||
|
{
|
||||||
|
var data = factory();
|
||||||
|
this._cache.Set(key, data.ToByteArray(), this._entryOptions);
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
return resultData;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<TItem> GetOrCreateAsync<TItem>(string key, Func<Task<TItem>> factory, CancellationToken cancellationToken = default)
|
||||||
|
where TItem : class
|
||||||
|
{
|
||||||
|
byte[] result = await this._cache.GetAsync(key, cancellationToken);
|
||||||
|
var resultData = result?.FromByteArray<TItem>();
|
||||||
|
if (result == null || resultData == null)
|
||||||
|
{
|
||||||
|
var data = await factory();
|
||||||
|
if (data != null)
|
||||||
|
{
|
||||||
|
await this._cache.SetAsync(key, data.ToByteArray(), this._entryOptions, cancellationToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
return resultData;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
24
Shared/KBR.Cache/CacheHelpers.cs
Normal file
24
Shared/KBR.Cache/CacheHelpers.cs
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
using KBR.Shared.Cache.Models;
|
||||||
|
using Microsoft.Extensions.Caching.Distributed;
|
||||||
|
|
||||||
|
namespace KBR.Cache
|
||||||
|
{
|
||||||
|
public static class CacheHelpers
|
||||||
|
{
|
||||||
|
private static readonly string _userOtpSecrets = nameof(_userOtpSecrets);
|
||||||
|
|
||||||
|
private static string UserOtpSecretKey(string key) => $"{_userOtpSecrets}-{key}";
|
||||||
|
|
||||||
|
public static async Task SetUserSecretsCacheAsync(IAppDistributedCache cache, string userId, string secret, CancellationToken cancellationToken = default)
|
||||||
|
{
|
||||||
|
await cache.SetAsync(UserOtpSecretKey(userId), secret, new DistributedCacheEntryOptions { AbsoluteExpiration = DateTime.UtcNow.AddMinutes(3) }, cancellationToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static async Task<string> GetUserOtpSecretAsync(IAppDistributedCache cache, string userId, CancellationToken cancellationToken = default)
|
||||||
|
{
|
||||||
|
var key = await cache.GetAsync<string>(UserOtpSecretKey(userId), cancellationToken);
|
||||||
|
|
||||||
|
return key;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Shared/KBR.Cache/Constants/CacheProviders.cs
Normal file
11
Shared/KBR.Cache/Constants/CacheProviders.cs
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
namespace KBR.Cache.Constants
|
||||||
|
{
|
||||||
|
public static class CacheProviders
|
||||||
|
{
|
||||||
|
public const string InMemory = nameof(InMemory);
|
||||||
|
|
||||||
|
public const string SqlServer = nameof(SqlServer);
|
||||||
|
|
||||||
|
public const string Redis = nameof(Redis);
|
||||||
|
}
|
||||||
|
}
|
||||||
47
Shared/KBR.Cache/Extensions/ServiceCollectionExtensions.cs
Normal file
47
Shared/KBR.Cache/Extensions/ServiceCollectionExtensions.cs
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
using KBR.Cache.Constants;
|
||||||
|
using KBR.Cache.Options;
|
||||||
|
using Microsoft.Extensions.Configuration;
|
||||||
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
using Microsoft.Extensions.DependencyInjection.Extensions;
|
||||||
|
using System.Diagnostics.CodeAnalysis;
|
||||||
|
|
||||||
|
namespace KBR.Cache.Extensions
|
||||||
|
{
|
||||||
|
public static class ServiceCollectionExtensions
|
||||||
|
{
|
||||||
|
public static IServiceCollection AddCache([NotNull] this IServiceCollection services, IConfiguration configuration)
|
||||||
|
{
|
||||||
|
// Ensure the 'Microsoft.Extensions.Options.ConfigurationExtensions' package is referenced in your project
|
||||||
|
var cacheOptions = configuration.GetSection("Cache").Get<CacheOptions>();
|
||||||
|
|
||||||
|
if (cacheOptions == null || cacheOptions.Provider == CacheProviders.InMemory)
|
||||||
|
{
|
||||||
|
services.AddDistributedMemoryCache();
|
||||||
|
}
|
||||||
|
else if (cacheOptions.Provider == CacheProviders.SqlServer)
|
||||||
|
{
|
||||||
|
services.AddDistributedMySqlCache(options =>
|
||||||
|
{
|
||||||
|
options.ConnectionString = cacheOptions.ConnectionString;
|
||||||
|
options.TableName = "Cache";
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else if (cacheOptions.Provider == CacheProviders.Redis)
|
||||||
|
{
|
||||||
|
services.AddStackExchangeRedisCache(options =>
|
||||||
|
{
|
||||||
|
options.Configuration = cacheOptions.ConnectionString;
|
||||||
|
options.InstanceName = "SampleInstance";
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
throw new Exception("Cache options are not valid");
|
||||||
|
}
|
||||||
|
|
||||||
|
services.TryAddSingleton<IAppDistributedCache, AppDistributedCache>();
|
||||||
|
|
||||||
|
return services;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
27
Shared/KBR.Cache/IAppDistributedCache.cs
Normal file
27
Shared/KBR.Cache/IAppDistributedCache.cs
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
using Microsoft.Extensions.Caching.Distributed;
|
||||||
|
|
||||||
|
namespace KBR.Cache
|
||||||
|
{
|
||||||
|
public interface IAppDistributedCache
|
||||||
|
{
|
||||||
|
T Get<T>(string key)
|
||||||
|
where T : class;
|
||||||
|
|
||||||
|
Task<T> GetAsync<T>(string key, CancellationToken cancellationToken = default)
|
||||||
|
where T : class;
|
||||||
|
|
||||||
|
void Remove(string key);
|
||||||
|
|
||||||
|
Task RemoveAsync(string key, CancellationToken cancellationToken = default);
|
||||||
|
|
||||||
|
void Set<T>(string key, T obj, DistributedCacheEntryOptions? options = default);
|
||||||
|
|
||||||
|
Task SetAsync<T>(string key, T obj, DistributedCacheEntryOptions? options = default, CancellationToken cancellationToken = default);
|
||||||
|
|
||||||
|
TItem GetOrCreate<TItem>(string key, Func<TItem> factory)
|
||||||
|
where TItem : class;
|
||||||
|
|
||||||
|
Task<TItem> GetOrCreateAsync<TItem>(string key, Func<Task<TItem>> factory, CancellationToken cancellationToken = default)
|
||||||
|
where TItem : class;
|
||||||
|
}
|
||||||
|
}
|
||||||
26
Shared/KBR.Cache/KBR.Cache.csproj
Normal file
26
Shared/KBR.Cache/KBR.Cache.csproj
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net9.0</TargetFramework>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.9" />
|
||||||
|
<PackageReference Include="Microsoft.Extensions.Caching.SqlServer" Version="9.0.9" />
|
||||||
|
<PackageReference Include="Microsoft.Extensions.Caching.StackExchangeRedis" Version="9.0.9" />
|
||||||
|
<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="9.0.9" />
|
||||||
|
<PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="9.0.9" />
|
||||||
|
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="9.0.9" />
|
||||||
|
<PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="9.0.9" />
|
||||||
|
<PackageReference Include="Microsoft.Extensions.Options" Version="9.0.9" />
|
||||||
|
<PackageReference Include="Pomelo.Extensions.Caching.MySql" Version="2.2.1" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\KBR.Share.Lite\KBR.Shared.Lite.csproj" />
|
||||||
|
<ProjectReference Include="..\KBR.Shared\KBR.Shared.csproj" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
9
Shared/KBR.Cache/Options/CacheOptions.cs
Normal file
9
Shared/KBR.Cache/Options/CacheOptions.cs
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
namespace KBR.Cache.Options
|
||||||
|
{
|
||||||
|
public class CacheOptions
|
||||||
|
{
|
||||||
|
public string Provider { get; set; } = null!;
|
||||||
|
|
||||||
|
public string? ConnectionString { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
76
Shared/KBR.Share.Lite/Extensions/JsonExtensions.cs
Normal file
76
Shared/KBR.Share.Lite/Extensions/JsonExtensions.cs
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
|
namespace KBR.Shared.Lite.Extensions
|
||||||
|
{
|
||||||
|
public static class JsonExtensions
|
||||||
|
{
|
||||||
|
public static T? ToObject<T>(string value)
|
||||||
|
{
|
||||||
|
return JsonConvert.DeserializeObject<T>(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static T? ToObjectSystemText<T>(string value)
|
||||||
|
{
|
||||||
|
return System.Text.Json.JsonSerializer.Deserialize<T>(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static T? ToObject<T>(string value, Type destType)
|
||||||
|
{
|
||||||
|
var result = JsonConvert.DeserializeObject(value, destType);
|
||||||
|
|
||||||
|
if (result is null)
|
||||||
|
{
|
||||||
|
return default;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (T)result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static object? ToObject(string value, Type destType)
|
||||||
|
{
|
||||||
|
return ToObject<object?>(value, destType);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static T? ToObject<T>(string value, JsonConverter[] converters)
|
||||||
|
{
|
||||||
|
return JsonConvert.DeserializeObject<T>(value, converters);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static T? ToObject<T>(string value, Type destType, JsonConverter[] converters)
|
||||||
|
{
|
||||||
|
var result = JsonConvert.DeserializeObject(value, destType, converters);
|
||||||
|
|
||||||
|
if (result is null)
|
||||||
|
{
|
||||||
|
return default;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (T)result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static string ToJson<T>(T value)
|
||||||
|
{
|
||||||
|
return JsonConvert.SerializeObject(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static string ToJsonSystemText<T>(T value)
|
||||||
|
{
|
||||||
|
return System.Text.Json.JsonSerializer.Serialize(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static string ToJson<T>(T value, JsonSerializerSettings jsonSerializerSettings)
|
||||||
|
{
|
||||||
|
return JsonConvert.SerializeObject(value, jsonSerializerSettings);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static byte[] ToUtf8Bytes(object obj)
|
||||||
|
{
|
||||||
|
return System.Text.Json.JsonSerializer.SerializeToUtf8Bytes(obj);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static T? ToObject<T>(byte[] utf8Json)
|
||||||
|
{
|
||||||
|
return System.Text.Json.JsonSerializer.Deserialize<T>(utf8Json);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
13
Shared/KBR.Share.Lite/KBR.Shared.Lite.csproj
Normal file
13
Shared/KBR.Share.Lite/KBR.Shared.Lite.csproj
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Newtonsoft.Json" Version="13.0.4" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
28
Shared/KBR.Shared/Cache/CacheExtensions.cs
Normal file
28
Shared/KBR.Shared/Cache/CacheExtensions.cs
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
using KBR.Shared.Lite.Extensions;
|
||||||
|
|
||||||
|
namespace KBR.Shared.Cache
|
||||||
|
{
|
||||||
|
public static class CacheExtensions
|
||||||
|
{
|
||||||
|
public static byte[] ToByteArray(this object obj)
|
||||||
|
{
|
||||||
|
if (obj is not null)
|
||||||
|
{
|
||||||
|
return JsonExtensions.ToUtf8Bytes(obj);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Array.Empty<byte>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static T? FromByteArray<T>(this byte[] byteArray)
|
||||||
|
where T : class
|
||||||
|
{
|
||||||
|
if (byteArray is null)
|
||||||
|
{
|
||||||
|
return default;
|
||||||
|
}
|
||||||
|
|
||||||
|
return JsonExtensions.ToObject<T>(byteArray);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
21
Shared/KBR.Shared/Cache/CacheHelpers.cs
Normal file
21
Shared/KBR.Shared/Cache/CacheHelpers.cs
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
using KBR.Shared.Cache.Models;
|
||||||
|
using Microsoft.Extensions.Caching.Distributed;
|
||||||
|
|
||||||
|
namespace KBR.Shared.Cache
|
||||||
|
{
|
||||||
|
public static class CacheHelpers
|
||||||
|
{
|
||||||
|
private static readonly string _userSessions = nameof(_userSessions);
|
||||||
|
private static string UserSessionsKey(string key) => $"{_userSessions}-{key}";
|
||||||
|
|
||||||
|
public static async Task SetUserSessionsCacheAsync(IAppDistributedCache cache, string userId, UserSessionModel sessions, CancellationToken cancellationToken = default)
|
||||||
|
{
|
||||||
|
await cache.SetAsync(UserSessionsKey(userId), sessions, GetOptions(), cancellationToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static DistributedCacheEntryOptions GetOptions()
|
||||||
|
{
|
||||||
|
return new DistributedCacheEntryOptions { AbsoluteExpiration = DateTime.MaxValue };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
27
Shared/KBR.Shared/Cache/IAppDistributedCache.cs
Normal file
27
Shared/KBR.Shared/Cache/IAppDistributedCache.cs
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
using Microsoft.Extensions.Caching.Distributed;
|
||||||
|
|
||||||
|
namespace KBR.Shared.Cache
|
||||||
|
{
|
||||||
|
public interface IAppDistributedCache
|
||||||
|
{
|
||||||
|
T Get<T>(string key)
|
||||||
|
where T : class;
|
||||||
|
|
||||||
|
Task<T> GetAsync<T>(string key, CancellationToken cancellationToken = default)
|
||||||
|
where T : class;
|
||||||
|
|
||||||
|
void Remove(string key);
|
||||||
|
|
||||||
|
Task RemoveAsync(string key, CancellationToken cancellationToken = default);
|
||||||
|
|
||||||
|
void Set<T>(string key, T obj, DistributedCacheEntryOptions? options = default);
|
||||||
|
|
||||||
|
Task SetAsync<T>(string key, T obj, DistributedCacheEntryOptions? options = default, CancellationToken cancellationToken = default);
|
||||||
|
|
||||||
|
TItem GetOrCreate<TItem>(string key, Func<TItem> factory)
|
||||||
|
where TItem : class;
|
||||||
|
|
||||||
|
Task<TItem> GetOrCreateAsync<TItem>(string key, Func<Task<TItem>> factory, CancellationToken cancellationToken = default)
|
||||||
|
where TItem : class;
|
||||||
|
}
|
||||||
|
}
|
||||||
15
Shared/KBR.Shared/Cache/Models/UserSessionModel.cs
Normal file
15
Shared/KBR.Shared/Cache/Models/UserSessionModel.cs
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
namespace KBR.Shared.Cache.Models
|
||||||
|
{
|
||||||
|
public class UserSessionModel
|
||||||
|
{
|
||||||
|
public UserSessionModel()
|
||||||
|
{
|
||||||
|
Alive = new();
|
||||||
|
Killed = new();
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<string> Alive { get; set; }
|
||||||
|
|
||||||
|
public List<string> Killed { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
17
Shared/KBR.Shared/KBR.Shared.csproj
Normal file
17
Shared/KBR.Shared/KBR.Shared.csproj
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net9.0</TargetFramework>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Microsoft.Extensions.Caching.Abstractions" Version="9.0.9" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\KBR.Share.Lite\KBR.Shared.Lite.csproj" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
21
Shared/KBR.Shared/Mail/MailHelpers.cs
Normal file
21
Shared/KBR.Shared/Mail/MailHelpers.cs
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
namespace KBR.Shared.Mail
|
||||||
|
{
|
||||||
|
public static class MailHelpers
|
||||||
|
{
|
||||||
|
// Replace email with other domain passed as a parameter
|
||||||
|
public static string ReplaceEmailDomain(string email, string newDomain)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrWhiteSpace(email))
|
||||||
|
throw new ArgumentException("Email cannot be null or empty.", nameof(email));
|
||||||
|
|
||||||
|
if (string.IsNullOrWhiteSpace(newDomain))
|
||||||
|
throw new ArgumentException("New domain cannot be null or empty.", nameof(newDomain));
|
||||||
|
|
||||||
|
var atIndex = email.IndexOf('@');
|
||||||
|
if (atIndex == -1)
|
||||||
|
throw new ArgumentException("Invalid email format.", nameof(email));
|
||||||
|
|
||||||
|
return $"{email.Substring(0, atIndex + 1)}{newDomain}";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user