diff --git a/PortBlog.API/Controllers/BlogController.cs b/PortBlog.API/Controllers/BlogController.cs new file mode 100644 index 0000000..ed15017 --- /dev/null +++ b/PortBlog.API/Controllers/BlogController.cs @@ -0,0 +1,17 @@ +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; + +namespace PortBlog.API.Controllers +{ + [Route("api/blog")] + [ApiController] + public class BlogController : ControllerBase + { + private readonly ILogger _logger; + + public BlogController(ILogger logger) + { + this._logger = logger; + } + } +} diff --git a/PortBlog.API/Controllers/CvController.cs b/PortBlog.API/Controllers/CvController.cs new file mode 100644 index 0000000..1a93a89 --- /dev/null +++ b/PortBlog.API/Controllers/CvController.cs @@ -0,0 +1,50 @@ +using AutoMapper; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using PortBlog.API.Entities; +using PortBlog.API.Models; +using PortBlog.API.Repositories.Contracts; + +namespace PortBlog.API.Controllers +{ + [Route("api/cv")] + [ApiController] + public class CvController : ControllerBase + { + private readonly ILogger _logger; + private readonly ICandidateRepository _candidateRepository; + private readonly IResumeRepository _resumeRepository; + private readonly IMapper _mapper; + + public CvController(ILogger logger, ICandidateRepository candidateRepository, IResumeRepository resumeRepository, IMapper mapper) + { + _logger = logger ?? throw new ArgumentNullException(nameof(logger)); + _candidateRepository = candidateRepository ?? throw new ArgumentNullException(nameof(candidateRepository)); + _resumeRepository = resumeRepository ?? throw new ArgumentNullException(nameof(resumeRepository)); + _mapper = mapper; + } + + [HttpGet("{candidateId}")] + public async Task> Get(int candidateId) + { + try + { + if (!await _candidateRepository.CandidateExistAsync(candidateId)) + { + _logger.LogInformation($"Candidate with id {candidateId} wasn't found when accessing cv details."); + return NotFound(); + } + + var latestResumeForCandidate = await _resumeRepository.GetLatestResumeForCandidateAsync(candidateId, true); + + return Ok(_mapper.Map(latestResumeForCandidate)); + + } + catch (Exception ex) + { + _logger.LogCritical($"Exception while getting Cv details for the candidate with id {candidateId}.", ex); + return StatusCode(500, "A problem happened while handling your request."); + } + } + } +} diff --git a/PortBlog.API/Controllers/PostController.cs b/PortBlog.API/Controllers/PostController.cs new file mode 100644 index 0000000..bce5fd9 --- /dev/null +++ b/PortBlog.API/Controllers/PostController.cs @@ -0,0 +1,16 @@ +using Microsoft.AspNetCore.Mvc; + +namespace PortBlog.API.Controllers +{ + [Route("api/blog/post")] + [ApiController] + public class PostController : ControllerBase + { + private readonly ILogger _logger; + + public PostController(ILogger logger) + { + this._logger = logger; + } + } +} diff --git a/PortBlog.API/DbContexts/BlogContext.cs b/PortBlog.API/DbContexts/BlogContext.cs deleted file mode 100644 index 3a7ff3b..0000000 --- a/PortBlog.API/DbContexts/BlogContext.cs +++ /dev/null @@ -1,8 +0,0 @@ -using Microsoft.EntityFrameworkCore; - -namespace PortBlog.API.DbContexts -{ - public class BlogContext : DbContext - { - } -} diff --git a/PortBlog.API/DbContexts/CvBlogContext.cs b/PortBlog.API/DbContexts/CvBlogContext.cs new file mode 100644 index 0000000..5890f88 --- /dev/null +++ b/PortBlog.API/DbContexts/CvBlogContext.cs @@ -0,0 +1,59 @@ +using Microsoft.EntityFrameworkCore; +using PortBlog.API.DbContexts.Seed; +using PortBlog.API.Entities; + +namespace PortBlog.API.DbContexts +{ + public class CvBlogContext : DbContext + { + public CvBlogContext(DbContextOptions dbContextOptions) : base(dbContextOptions) { } + + public DbSet Candidates { get; set; } + public DbSet Resumes { get; set; } + + public DbSet Hobbies { get; set; } + + public DbSet SocialLinks { get; set; } + + public DbSet Academics { get; set; } + + public DbSet Experiences { get; set; } + + public DbSet ExperienceDetails { get; set; } + + public DbSet Skills { get; set; } + + public DbSet Certifications { get; set; } + + public DbSet Messages { get; set; } + + public DbSet MessageStatusLogs{ get; set; } + + public DbSet Blogs { get; set; } + + public DbSet Posts { get; set; } + + public DbSet Projects { get; set; } + + public DbSet Files { get; set; } + + public DbSet ClientLogs { get; set; } + + protected override void OnModelCreating(ModelBuilder modelBuilder) + { + modelBuilder.Entity().HasData(InitialData.GetCandidateData()); + modelBuilder.Entity().HasData(InitialData.GetResumeData()); + modelBuilder.Entity().HasData(InitialData.GetSocialLinksData()); + modelBuilder.Entity().HasData(InitialData.GetHobbyData()); + modelBuilder.Entity().HasData(InitialData.GetAcademicData()); + modelBuilder.Entity().HasData(InitialData.GetSkillData()); + modelBuilder.Entity().HasData(InitialData.GetProjectData()); + modelBuilder.Entity().HasData(InitialData.GetBlogData()); + modelBuilder.Entity().HasData(InitialData.GetPostsData()); + modelBuilder.Entity().HasData(InitialData.GetExperiencesData()); + modelBuilder.Entity().HasData(InitialData.GetExperienceDetailsData()); + + base.OnModelCreating(modelBuilder); + } + } +} diff --git a/PortBlog.API/DbContexts/PortfolioContext.cs b/PortBlog.API/DbContexts/PortfolioContext.cs deleted file mode 100644 index d4f8732..0000000 --- a/PortBlog.API/DbContexts/PortfolioContext.cs +++ /dev/null @@ -1,8 +0,0 @@ -using Microsoft.EntityFrameworkCore; - -namespace PortBlog.API.DbContexts -{ - public class PortfolioContext : DbContext - { - } -} diff --git a/PortBlog.API/DbContexts/Seed/InitialData.cs b/PortBlog.API/DbContexts/Seed/InitialData.cs new file mode 100644 index 0000000..7387553 --- /dev/null +++ b/PortBlog.API/DbContexts/Seed/InitialData.cs @@ -0,0 +1,377 @@ +using PortBlog.API.Entities; +using System.Net.NetworkInformation; + +namespace PortBlog.API.DbContexts.Seed +{ + public static class InitialData + { + public static Candidate GetCandidateData() + { + return new Candidate() + { + CandidateId = 1, + FirstName = "Bangara Raju", + LastName = "Kottedi", + Phone = "+91 9441212187", + Email = "bangararaju.kottedi@gmail.com", + Dob = new DateTime(1992, 5, 6), + Gender = "Male", + Address = "Samalkot, Andhra Pradesh, India", + }; + } + + public static Resume GetResumeData() + { + return new Resume() + { + ResumeId = 1, + CandidateId = 1, + Title = "Full Stack Developer", + 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.", + Order = 1 + }; + } + + public static SocialLinks GetSocialLinksData() + { + return new SocialLinks() + { + Id = 1, + BlogUrl = "https://bangararaju.kottedi.in/blog", + Linkedin = "https://in.linkedin.com/in/bangara-raju-kottedi-299072109", + GitHub = "https://github.com/rajukottedi", + ResumeId = 1 + }; + } + + public static List GetHobbyData() + { + return new List() + { + new Hobby() + { + HobbyId = 1, + Order = 1, + Name = "Web Development", + Description = "Crafting Professional-Quality Websites with Precision", + Icon = "fa-square-terminal", + ResumeId = 1 + }, + new Hobby() + { + HobbyId = 2, + Order = 2, + Name = "Automation", + Description = "Streamlining and Simplifying Complex Tasks through Automation", + Icon = "fa-robot", + ResumeId = 1 + }, + new Hobby() + { + HobbyId = 3, + Order = 3, + Name = "Blogging", + Description = "Sharing the knowledge and insights I’ve gathered along my journey", + Icon = "fa-typewriter", + ResumeId = 1 + }, + new Hobby() + { + HobbyId = 4, + Order = 4, + Name = "Gardening", + Description = "Cultivating Nature's Beauty and Bounty", + Icon = "fa-seedling", + ResumeId = 1 + } + }; + } + + public static List GetAcademicData() + { + return new List + { + new Academic() + { + AcademicId = 1, + Institution = "Pragati Little Public School", + StartYear = 2006, + EndYear = 2007, + Degree = "High School", + ResumeId = 1 + }, + new Academic() + { + AcademicId = 2, + Institution = "Sri Chaitanya Junior College", + StartYear = 2007, + EndYear = 2009, + Degree = "Intermediate", + DegreeSpecialization = "MPC", + ResumeId = 1 + }, + new Academic() + { + AcademicId = 3, + Institution = "Kakinada Institute of Technology & Science", + StartYear = 2009, + EndYear = 2013, + Degree = "BTech", + DegreeSpecialization = "ECE", + ResumeId = 1 + } + }; + } + + public static List GetSkillData() + { + return new List + { + new Skill() + { + SkillId = 1, + Name = "Web Development", + ProficiencyLevel = 80, + ResumeId = 1 + }, + new Skill() + { + SkillId = 2, + Name = "Web Development", + ProficiencyLevel = 80, + ResumeId = 1 + }, + new Skill() + { + SkillId = 3, + Name = "Web Development", + ProficiencyLevel = 80, + ResumeId = 1 + }, + new Skill() + { + SkillId = 4, + Name = "Web Development", + ProficiencyLevel = 80, + ResumeId = 1 + }, + new Skill() + { + SkillId= 5, + Name = "Web Development", + ProficiencyLevel = 80, + ResumeId = 1 + } + }; + } + + public static List GetProjectData() + { + return new List + { + new Project() + { + ProjectId = 1, + Name = "Transfora (Business Process Management)", + Description = "Business Process Management", + Category = "Web Development", + ImagePath = "", + TechnologiesUsed = ".NET, Angular", + Responsibilities = "Developing, Testing, Support", + Roles = "Coding, Reviewing, Testing", + ResumeId = 1 + }, + new Project() + { + ProjectId = 2, + Name = "Transfora (Business Process Management)", + Description = "Business Process Management", + Category = "Web Development", + ImagePath = "", + TechnologiesUsed = ".NET, Angular", + Responsibilities = "Developing, Testing, Support", + Roles = "Coding, Reviewing, Testing", + ResumeId = 1 + }, + new Project() + { + ProjectId = 3, + Name = "Transfora (Business Process Management)", + Description = "Business Process Management", + Category = "Web Development", + ImagePath = "", + TechnologiesUsed = ".NET, Angular", + Responsibilities = "Developing, Testing, Support", + Roles = "Coding, Reviewing, Testing", + ResumeId = 1 + } + }; + } + + public static Blog GetBlogData() + { + return new Blog() + { + BlogUrl = "https://bangararaju.kottedi.in/blog", + Name = "Engineer's Odyssey", + Description = "Your Hub for Tech, DIY, and Innovation" + }; + } + + public static List GetPostsData() + { + return new List + { + new Post() + { + PostId = 1, + Slug = "hello-world", + Title = "Hello World", + Description = "Hello World", + Category = "Welcome", + PostUrl = "https://bangararaju.kottedi.in/blog/hello-world", + CreatedDate = DateTime.Now, + BlogUrl = "https://bangararaju.kottedi.in/blog" + }, + new Post() + { + PostId = 2, + Slug = "hello-world", + Title = "Hello World", + Description = "Hello World", + Category = "Welcome", + PostUrl = "https://bangararaju.kottedi.in/blog/hello-world", + CreatedDate = DateTime.Now, + BlogUrl = "https://bangararaju.kottedi.in/blog" + }, + new Post() + { + PostId = 3, + Slug = "hello-world", + Title = "Hello World", + Description = "Hello World", + Category = "Welcome", + PostUrl = "https://bangararaju.kottedi.in/blog/hello-world", + CreatedDate = DateTime.Now, + BlogUrl = "https://bangararaju.kottedi.in/blog", + } + }; + } + + public static List GetExperiencesData() + { + return new List + { + new Experience() + { + ExperienceId = 1, + Title = "Jr. Software Engineer", + Company = "Agility E Services", + Description = "", + Location = "Hyderabad", + StartDate = new DateTime(2015, 9, 2), + EndDate = new DateTime(2016, 4, 25), + ResumeId = 1 + }, + new Experience() + { + ExperienceId = 2, + Title = "Web Developer", + Company = "Agility", + Description = "", + Location = "Kuwait", + StartDate = new DateTime(2016, 5, 12), + EndDate = new DateTime(2022, 1, 31), + ResumeId = 1 + }, + new Experience() + { + ExperienceId = 3, + Title = "Senior Web Developer", + Company = "Agility", + Description = "", + Location = "Kuwait", + StartDate = new DateTime(2022, 2, 1), + EndDate = new DateTime(2022, 10, 31), + ResumeId = 1 + }, + new Experience() + { + ExperienceId = 4, + Title = "Technology Specialist", + Company = "Agility E Services", + Description = "", + Location = "Hyderabad", + StartDate = new DateTime(2022, 11, 4), + EndDate = new DateTime(2024, 4, 12), + ResumeId = 1 + }, + }; + } + + public static List GetExperienceDetailsData() + { + return new List + { + new ExperienceDetails() + { + Id = 1, + ExperienceId = 1, + 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.", + Order = 1 + }, + new ExperienceDetails() + { + Id = 2, + ExperienceId = 1, + 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.", + Order = 2 + }, + new ExperienceDetails() + { + Id = 3, + ExperienceId = 2, + 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.", + Order = 1 + }, + new ExperienceDetails() + { + Id = 4, + ExperienceId = 2, + 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.", + Order = 2 + }, + new ExperienceDetails() + { + Id = 5, + ExperienceId = 3, + 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.", + Order = 1 + }, + new ExperienceDetails() + { + Id = 6, + ExperienceId = 3, + 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.", + Order = 2 + }, + new ExperienceDetails() + { + Id = 7, + ExperienceId = 4, + 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.", + Order = 1 + }, + new ExperienceDetails() + { + Id = 8, + ExperienceId = 4, + 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.", + Order = 2 + }, + + }; + } + } +} diff --git a/PortBlog.API/Entities/Academic.cs b/PortBlog.API/Entities/Academic.cs new file mode 100644 index 0000000..108c51e --- /dev/null +++ b/PortBlog.API/Entities/Academic.cs @@ -0,0 +1,34 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace PortBlog.API.Entities +{ + public class Academic : BaseEntity + { + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int AcademicId { get; set; } + + [Required] + [MaxLength(200)] + public string Institution { get; set; } = string.Empty; + + [Required] + public int StartYear { get; set; } + + [Required] + public int EndYear { get; set; } + + public int ResumeId { get; set; } + + [ForeignKey(nameof(ResumeId))] + public Resume? Resume { get; set; } + + [Required] + [MaxLength(100)] + public string Degree { get; set; } = string.Empty; + + [MaxLength(100)] + public string? DegreeSpecialization { get; set; } + } +} diff --git a/PortBlog.API/Entities/BaseEntity.cs b/PortBlog.API/Entities/BaseEntity.cs new file mode 100644 index 0000000..3faf32e --- /dev/null +++ b/PortBlog.API/Entities/BaseEntity.cs @@ -0,0 +1,13 @@ +namespace PortBlog.API.Entities +{ + public class BaseEntity + { + public string? CreatedBy { get; set; } + + public string? ModifiedBy { get; set; } + + public DateTime? CreatedDate { get; set; } = DateTime.Now; + + public DateTime? ModifiedDate { get; set; } = DateTime.Now; + } +} diff --git a/PortBlog.API/Entities/Blog.cs b/PortBlog.API/Entities/Blog.cs new file mode 100644 index 0000000..4002083 --- /dev/null +++ b/PortBlog.API/Entities/Blog.cs @@ -0,0 +1,24 @@ +using Microsoft.EntityFrameworkCore; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace PortBlog.API.Entities +{ + public class Blog : BaseEntity + { + [Required] + [MaxLength(200)] + [Url] + [Key] + public string BlogUrl { get; set; } = string.Empty; + + [Required] + [MaxLength(50)] + public string Name { get; set; } = string.Empty; + + [MaxLength(200)] + public string? Description { get; set; } = string.Empty; + + public ICollection Posts { get; set; } = new List(); + } +} \ No newline at end of file diff --git a/PortBlog.API/Entities/Candidate.cs b/PortBlog.API/Entities/Candidate.cs new file mode 100644 index 0000000..61a2c11 --- /dev/null +++ b/PortBlog.API/Entities/Candidate.cs @@ -0,0 +1,42 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using System.Diagnostics.Contracts; + +namespace PortBlog.API.Entities +{ + public class Candidate : BaseEntity + { + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int CandidateId { get; set; } + + [Required] + [MaxLength(50)] + public string FirstName { get; set; } = string.Empty; + + [Required] + [MaxLength(50)] + public string LastName { get; set; } = string.Empty; + + public string? Gender { get; set; } + + public DateTime? Dob { get; set; } + + [Required] + [EmailAddress] + [MaxLength(100)] + public string Email { get; set; } = string.Empty; + + [Required] + [Phone] + [MaxLength(20)] + public string Phone { get; set; } = string.Empty; + + [MaxLength(200)] + public string? Address { get; set; } = string.Empty; + + public string? Avatar { get; set; } + + public ICollection Resumes { get; set; } = new List(); + } +} diff --git a/PortBlog.API/Entities/Certification.cs b/PortBlog.API/Entities/Certification.cs new file mode 100644 index 0000000..6a346f2 --- /dev/null +++ b/PortBlog.API/Entities/Certification.cs @@ -0,0 +1,33 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace PortBlog.API.Entities +{ + public class Certification : BaseEntity + { + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int CertificationId { get; set; } + + [Required] + [MaxLength(100)] + public string CertificationName { get; set; } = string.Empty; + + [MaxLength(100)] + public string IssuingOrganization { get; set; } = string.Empty; + + [Url] + [MaxLength(200)] + public string? CertificationLink { get; set; } + + [Required] + public DateTime IssueDate { get; set; } + + public DateTime? ExpiryDate { get; set; } + + public int ResumeId { get; set; } + + [ForeignKey(nameof(ResumeId))] + public Resume? Resume { get; set; } + } +} diff --git a/PortBlog.API/Entities/ClientLog.cs b/PortBlog.API/Entities/ClientLog.cs new file mode 100644 index 0000000..13fd3f1 --- /dev/null +++ b/PortBlog.API/Entities/ClientLog.cs @@ -0,0 +1,27 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace PortBlog.API.Entities +{ + public class ClientLog + { + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int Id { get; set; } + + [Required] + [MaxLength(50)] + public string SiteName { get; set; } = string.Empty; + + [Required] + [MaxLength(100)] + public string SiteUrl { get; set; } = string.Empty; + + [Required] + public string ClientIp { get; set; } = string.Empty; + + public string? ClientLocation { get; set; } = string.Empty; + + public DateTime CreatedDate { get; set; } = DateTime.Now; + } +} \ No newline at end of file diff --git a/PortBlog.API/Entities/Experience.cs b/PortBlog.API/Entities/Experience.cs new file mode 100644 index 0000000..57592ab --- /dev/null +++ b/PortBlog.API/Entities/Experience.cs @@ -0,0 +1,39 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace PortBlog.API.Entities +{ + public class Experience : BaseEntity + { + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int ExperienceId { get; set; } + + [Required] + [MaxLength(100)] + public string Title { get; set; } = string.Empty; + + [MaxLength(500)] + public string? Description { get; set; } + + [Required] + [MaxLength(100)] + public string Company { get; set; } = string.Empty; + + [Required] + [MaxLength(100)] + public string Location { get; set; } = string.Empty; + + [Required] + public DateTime StartDate { get; set; } + + public DateTime? EndDate { get; set; } + + public int ResumeId { get; set; } + + [ForeignKey(nameof(ResumeId))] + public Resume? Resume { get; set; } + + public ICollection Details { get; set; } = new List(); + } +} diff --git a/PortBlog.API/Entities/ExperienceDetails.cs b/PortBlog.API/Entities/ExperienceDetails.cs new file mode 100644 index 0000000..6b4de76 --- /dev/null +++ b/PortBlog.API/Entities/ExperienceDetails.cs @@ -0,0 +1,23 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace PortBlog.API.Entities +{ + public class ExperienceDetails : BaseEntity + { + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int Id { get; set; } + + [Required] + [MaxLength(500)] + public string Details { get; set; } = string.Empty; + + public int Order { get; set; } = 0; + + public int ExperienceId { get; set; } + + [ForeignKey(nameof(ExperienceId))] + public Experience? Experience { get; set; } + } +} diff --git a/PortBlog.API/Entities/Hobby.cs b/PortBlog.API/Entities/Hobby.cs new file mode 100644 index 0000000..10a1ddc --- /dev/null +++ b/PortBlog.API/Entities/Hobby.cs @@ -0,0 +1,31 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace PortBlog.API.Entities +{ + public class Hobby : BaseEntity + { + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int HobbyId { get; set; } + + [Required] + [MaxLength(100)] + public string Name { get; set; } = string.Empty; + + [Required] + [MaxLength(500)] + public string Description { get; set; } = string.Empty; + + [Required] + public int Order { get; set; } + + [MaxLength(50)] + public string? Icon { get; set; } + + public int ResumeId { get; set; } + + [ForeignKey(nameof(ResumeId))] + public Resume? Resume { get; set; } + } +} diff --git a/PortBlog.API/Entities/Message.cs b/PortBlog.API/Entities/Message.cs new file mode 100644 index 0000000..749f480 --- /dev/null +++ b/PortBlog.API/Entities/Message.cs @@ -0,0 +1,31 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace PortBlog.API.Entities +{ + public class Message + { + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int Id { get; set; } + + [Required] + [MaxLength(50)] + public string Name { get; set; } = string.Empty; + + [Required] + [EmailAddress] + [MaxLength(100)] + public string Email { get; set; } = string.Empty; + + [Required] + [MaxLength(50)] + public string Subject { get; set; } = string.Empty; + + [Required] + [MaxLength(500)] + public string Content { get; set; } = string.Empty; + + public DateTime CreatedDate { get; set; } = DateTime.Now; + } +} diff --git a/PortBlog.API/Entities/MessageStatusLog.cs b/PortBlog.API/Entities/MessageStatusLog.cs new file mode 100644 index 0000000..7aac4af --- /dev/null +++ b/PortBlog.API/Entities/MessageStatusLog.cs @@ -0,0 +1,22 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace PortBlog.API.Entities +{ + public class MessageStatusLog + { + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int Id { get; set; } + + public int MessageId { get; set; } + + [ForeignKey(nameof(MessageId))] + public Message? Message { get; set; } + + [MaxLength(10)] + public string Status { get; set; } = string.Empty; + + public DateTime CreatedDate { get; set; } = DateTime.Now; + } +} diff --git a/PortBlog.API/Entities/Post.cs b/PortBlog.API/Entities/Post.cs new file mode 100644 index 0000000..26f98c4 --- /dev/null +++ b/PortBlog.API/Entities/Post.cs @@ -0,0 +1,51 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace PortBlog.API.Entities +{ + public class Post : BaseEntity + { + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int PostId { get; set; } + + [Required] + [MaxLength(100)] + public string Slug { get; set; } = string.Empty; + + [Required] + [MaxLength(100)] + public string Title { get; set; } = string.Empty; + + [Required] + [MaxLength(200)] + public string Description { get; set; } = string.Empty; + + [Required] + [MaxLength(100)] + public string Category { get; set; } = string.Empty; + + [MaxLength(100)] + public string? Author { get; set; } + + [Url] + [MaxLength(200)] + public string PostUrl { get; set; } = string.Empty; + + public int Likes { get; set; } = 0; + + public int Views { get; set; } = 0; + + public int Comments { get; set; } = 0; + + [MaxLength(200)] + public string? Image { get; set; } + + [Required] + [MaxLength(200)] + public string BlogUrl { get; set; } = string.Empty; + + [ForeignKey(nameof(BlogUrl))] + public Blog? Blog { get; set; } + } +} diff --git a/PortBlog.API/Entities/Project.cs b/PortBlog.API/Entities/Project.cs new file mode 100644 index 0000000..3309156 --- /dev/null +++ b/PortBlog.API/Entities/Project.cs @@ -0,0 +1,60 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace PortBlog.API.Entities +{ + public class Project : BaseEntity + { + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int ProjectId { get; set; } + + [Required] + [MaxLength(100)] + public string Name { get; set; } = string.Empty; + + [Required] + [MaxLength(500)] + public string Description { get; set; } = string.Empty; + + [Required] + [MaxLength(100)] + public string Category { get; set; } = string.Empty; + + [Required] + [MaxLength(100)] + public string? Roles { get; set; } + + [MaxLength(200)] + public string? Challenges { get; set; } + + [MaxLength(200)] + public string? LessonsLearned { get; set; } + + [MaxLength(200)] + public string? Impact { get; set; } + + [Required] + [MaxLength(200)] + public string? Responsibilities { get; set; } + + [Required] + [MaxLength(200)] + public string? TechnologiesUsed { get; set; } + + public DateTime? StartDate { get; set; } + + public DateTime? EndDate { get; set; } + + [MaxLength(20)] + public string? Status { get; set; } + + [MaxLength(200)] + public string? ImagePath { get; set; } + + public int ResumeId { get; set; } + + [ForeignKey(nameof(ResumeId))] + public Resume? Resume { get; set; } + } +} diff --git a/PortBlog.API/Entities/Resume.cs b/PortBlog.API/Entities/Resume.cs new file mode 100644 index 0000000..325ff2d --- /dev/null +++ b/PortBlog.API/Entities/Resume.cs @@ -0,0 +1,44 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace PortBlog.API.Entities +{ + public class Resume : BaseEntity + { + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int ResumeId { get; set; } + + [Required] + [MaxLength(100)] + public string Title { get; set; } = string.Empty; + + [Required] + [MaxLength(1000)] + public string About { get; set; } = string.Empty; + + [Required] + public int Order { get; set; } + + public int CandidateId { get; set; } + + [ForeignKey(nameof(CandidateId))] + public Candidate? Candidate { get; set; } + + public ResumeFile? ResumeFile { get; set; } + + public SocialLinks? SocialLinks { get; set; } + + public ICollection Academics { get; set; } = new List(); + + public ICollection Skills { get; set; } = new List(); + + public ICollection Experiences { get; set; } = new List(); + + public ICollection Certifications { get; set; } = new List(); + + public ICollection Hobbies { get; set; } = new List(); + + public ICollection Projects { get; set; } = new List(); + } +} diff --git a/PortBlog.API/Entities/ResumeFile.cs b/PortBlog.API/Entities/ResumeFile.cs new file mode 100644 index 0000000..a2d6111 --- /dev/null +++ b/PortBlog.API/Entities/ResumeFile.cs @@ -0,0 +1,32 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace PortBlog.API.Entities +{ + public class ResumeFile : BaseEntity + { + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int FileId { get; set; } + + [Required] + [MaxLength(100)] + public string FileName { get; set; } = string.Empty; + + [Required] + [MaxLength(50)] + public string FileFormat { get; set; } = string.Empty; + + [Required] + [MaxLength(100)] + public string FilePath { get; set; } = string.Empty; + + [MaxLength(10)] + public string? Version { get; set; } = string.Empty; + + public int ResumeId { get; set; } + + [ForeignKey(nameof(ResumeId))] + public Resume? Resume { get; set; } + } +} diff --git a/PortBlog.API/Entities/Skill.cs b/PortBlog.API/Entities/Skill.cs new file mode 100644 index 0000000..46468d8 --- /dev/null +++ b/PortBlog.API/Entities/Skill.cs @@ -0,0 +1,27 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace PortBlog.API.Entities +{ + public class Skill : BaseEntity + { + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int SkillId { get; set; } + + [Required] + [MaxLength(50)] + public string Name { get; set; } = string.Empty; + + [MaxLength(200)] + public string? Description { get; set; } + + [Required] + public int ProficiencyLevel { get; set; } + + public int ResumeId { get; set; } + + [ForeignKey(nameof(ResumeId))] + public Resume? Resume { get; set; } + } +} diff --git a/PortBlog.API/Entities/SocialLinks.cs b/PortBlog.API/Entities/SocialLinks.cs new file mode 100644 index 0000000..cd88e19 --- /dev/null +++ b/PortBlog.API/Entities/SocialLinks.cs @@ -0,0 +1,42 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace PortBlog.API.Entities +{ + public class SocialLinks : BaseEntity + { + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int Id { get; set; } + + [MaxLength(200)] + public string? GitHub { get; set; } + + [Required] + [MaxLength(200)] + public string Linkedin { get; set; } = string.Empty; + + [MaxLength(200)] + public string? Instagram { get; set; } + + [MaxLength(200)] + public string? Facebook { get; set; } + + [MaxLength(200)] + public string? Twitter { get; set; } + + [MaxLength(200)] + public string? PersonalWebsite { get; set; } + + [MaxLength(200)] + public string? BlogUrl { get; set; } + + [ForeignKey(nameof(BlogUrl))] + public Blog? Blog { get; set; } + + [ForeignKey(nameof(ResumeId))] + public Resume? Resume { get; set; } + + public int ResumeId { get; set; } + } +} diff --git a/PortBlog.API/Extensions/ServiceExtensions.cs b/PortBlog.API/Extensions/ServiceExtensions.cs new file mode 100644 index 0000000..1be9871 --- /dev/null +++ b/PortBlog.API/Extensions/ServiceExtensions.cs @@ -0,0 +1,15 @@ +using PortBlog.API.Repositories; +using PortBlog.API.Repositories.Contracts; + +namespace PortBlog.API.Extensions +{ + public static class ServiceExtensions + { + public static IServiceCollection AddRepositories(this IServiceCollection services) + { + services.AddScoped(); + services.AddScoped(); + return services; + } + } +} diff --git a/PortBlog.API/Images/bpm.jpg b/PortBlog.API/Images/bpm.jpg new file mode 100644 index 0000000..ecea084 Binary files /dev/null and b/PortBlog.API/Images/bpm.jpg differ diff --git a/PortBlog.API/Images/bpm.png b/PortBlog.API/Images/bpm.png new file mode 100644 index 0000000..e2e8c46 Binary files /dev/null and b/PortBlog.API/Images/bpm.png differ diff --git a/PortBlog.API/Images/hcm.jpg b/PortBlog.API/Images/hcm.jpg new file mode 100644 index 0000000..534a527 Binary files /dev/null and b/PortBlog.API/Images/hcm.jpg differ diff --git a/PortBlog.API/Images/hms-in-brief.png b/PortBlog.API/Images/hms-in-brief.png new file mode 100644 index 0000000..769f672 Binary files /dev/null and b/PortBlog.API/Images/hms-in-brief.png differ diff --git a/PortBlog.API/Images/hms.png b/PortBlog.API/Images/hms.png new file mode 100644 index 0000000..ab68fe7 Binary files /dev/null and b/PortBlog.API/Images/hms.png differ diff --git a/PortBlog.API/Migrations/20240425092224_InitialDBMigration.Designer.cs b/PortBlog.API/Migrations/20240425092224_InitialDBMigration.Designer.cs new file mode 100644 index 0000000..70c3678 --- /dev/null +++ b/PortBlog.API/Migrations/20240425092224_InitialDBMigration.Designer.cs @@ -0,0 +1,981 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using PortBlog.API.DbContexts; + +#nullable disable + +namespace PortBlog.API.Migrations +{ + [DbContext(typeof(CvBlogContext))] + [Migration("20240425092224_InitialDBMigration")] + partial class InitialDBMigration + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "8.0.4") + .HasAnnotation("Relational:MaxIdentifierLength", 64); + + MySqlModelBuilderExtensions.AutoIncrementColumns(modelBuilder); + + modelBuilder.Entity("PortBlog.API.Entities.Academic", b => + { + b.Property("AcademicId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("AcademicId")); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("Degree") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("DegreeSpecialization") + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("EndYear") + .HasColumnType("int"); + + b.Property("Institution") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("ResumeId") + .HasColumnType("int"); + + b.Property("StartYear") + .HasColumnType("int"); + + b.HasKey("AcademicId"); + + b.HasIndex("ResumeId"); + + b.ToTable("Academics"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Blog", b => + { + b.Property("BlogUrl") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("Description") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.HasKey("BlogUrl"); + + b.ToTable("Blogs"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Candidate", b => + { + b.Property("CandidateId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CandidateId")); + + b.Property("Address") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("Avatar") + .HasColumnType("longtext"); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.Property("Gender") + .HasColumnType("longtext"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("Phone") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("varchar(20)"); + + b.HasKey("CandidateId"); + + b.ToTable("Candidates"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Certification", b => + { + b.Property("CertificationId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CertificationId")); + + b.Property("CertificationLink") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("CertificationName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("ExpiryDate") + .HasColumnType("datetime(6)"); + + b.Property("IssueDate") + .HasColumnType("datetime(6)"); + + b.Property("IssuingOrganization") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("ResumeId") + .HasColumnType("int"); + + b.HasKey("CertificationId"); + + b.HasIndex("ResumeId"); + + b.ToTable("Certifications"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.ClientLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("ClientIp") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("ClientLocation") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("SiteName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.Property("SiteUrl") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.HasKey("Id"); + + b.ToTable("ClientLogs"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Experience", b => + { + b.Property("ExperienceId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("ExperienceId")); + + b.Property("Company") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("Description") + .HasMaxLength(500) + .HasColumnType("varchar(500)"); + + b.Property("EndDate") + .HasColumnType("datetime(6)"); + + b.Property("Location") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("ResumeId") + .HasColumnType("int"); + + b.Property("StartDate") + .HasColumnType("datetime(6)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.HasKey("ExperienceId"); + + b.HasIndex("ResumeId"); + + b.ToTable("Experiences"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.ExperienceDetails", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("Details") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("varchar(500)"); + + b.Property("ExperienceId") + .HasColumnType("int"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("Order") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ExperienceId"); + + b.ToTable("ExperienceDetails"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Hobby", b => + { + b.Property("HobbyId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("HobbyId")); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("varchar(500)"); + + b.Property("Icon") + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("Order") + .HasColumnType("int"); + + b.Property("ResumeId") + .HasColumnType("int"); + + b.HasKey("HobbyId"); + + b.HasIndex("ResumeId"); + + b.ToTable("Hobbies"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Message", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Content") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("varchar(500)"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.Property("Subject") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.HasKey("Id"); + + b.ToTable("Messages"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.MessageStatusLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("MessageId") + .HasColumnType("int"); + + b.Property("Status") + .IsRequired() + .HasMaxLength(10) + .HasColumnType("varchar(10)"); + + b.HasKey("Id"); + + b.HasIndex("MessageId"); + + b.ToTable("MessageStatusLogs"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Post", b => + { + b.Property("PostId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("PostId")); + + b.Property("Author") + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("BlogUrl") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("Category") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("Comments") + .HasColumnType("int"); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("Image") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("Likes") + .HasColumnType("int"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("PostUrl") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("Slug") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("Views") + .HasColumnType("int"); + + b.HasKey("PostId"); + + b.HasIndex("BlogUrl"); + + b.ToTable("Posts"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Project", b => + { + b.Property("ProjectId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("ProjectId")); + + b.Property("Category") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("Challenges") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("varchar(500)"); + + b.Property("EndDate") + .HasColumnType("datetime(6)"); + + b.Property("ImagePath") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("Impact") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("LessonsLearned") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("Responsibilities") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("ResumeId") + .HasColumnType("int"); + + b.Property("Roles") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("StartDate") + .HasColumnType("datetime(6)"); + + b.Property("Status") + .HasMaxLength(20) + .HasColumnType("varchar(20)"); + + b.Property("TechnologiesUsed") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.HasKey("ProjectId"); + + b.HasIndex("ResumeId"); + + b.ToTable("Projects"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Resume", b => + { + b.Property("ResumeId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("ResumeId")); + + b.Property("About") + .IsRequired() + .HasMaxLength(1000) + .HasColumnType("varchar(1000)"); + + b.Property("CandidateId") + .HasColumnType("int"); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("Order") + .HasColumnType("int"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.HasKey("ResumeId"); + + b.HasIndex("CandidateId"); + + b.ToTable("Resumes"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.ResumeFile", b => + { + b.Property("FileId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("FileId")); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("FileFormat") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.Property("FileName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("FilePath") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("ResumeId") + .HasColumnType("int"); + + b.Property("Version") + .HasMaxLength(10) + .HasColumnType("varchar(10)"); + + b.HasKey("FileId"); + + b.HasIndex("ResumeId") + .IsUnique(); + + b.ToTable("Files"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Skill", b => + { + b.Property("SkillId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("SkillId")); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("Description") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.Property("ProficiencyLevel") + .HasColumnType("int"); + + b.Property("ResumeId") + .HasColumnType("int"); + + b.HasKey("SkillId"); + + b.HasIndex("ResumeId"); + + b.ToTable("Skills"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.SocialLinks", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("BlogUrl") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("Facebook") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("GitHub") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("Instagram") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("Linkedin") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("PersonalWebsite") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("ResumeId") + .HasColumnType("int"); + + b.Property("Twitter") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.HasKey("Id"); + + b.HasIndex("BlogUrl"); + + b.HasIndex("ResumeId") + .IsUnique(); + + b.ToTable("SocialLinks"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Academic", b => + { + b.HasOne("PortBlog.API.Entities.Resume", "Resume") + .WithMany("Academics") + .HasForeignKey("ResumeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Resume"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Certification", b => + { + b.HasOne("PortBlog.API.Entities.Resume", "Resume") + .WithMany("Certifications") + .HasForeignKey("ResumeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Resume"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Experience", b => + { + b.HasOne("PortBlog.API.Entities.Resume", "Resume") + .WithMany("Experiences") + .HasForeignKey("ResumeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Resume"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.ExperienceDetails", b => + { + b.HasOne("PortBlog.API.Entities.Experience", "Experience") + .WithMany("Details") + .HasForeignKey("ExperienceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Experience"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Hobby", b => + { + b.HasOne("PortBlog.API.Entities.Resume", "Resume") + .WithMany("Hobbys") + .HasForeignKey("ResumeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Resume"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.MessageStatusLog", b => + { + b.HasOne("PortBlog.API.Entities.Message", "Message") + .WithMany() + .HasForeignKey("MessageId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Message"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Post", b => + { + b.HasOne("PortBlog.API.Entities.Blog", "Blog") + .WithMany("Posts") + .HasForeignKey("BlogUrl") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Blog"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Project", b => + { + b.HasOne("PortBlog.API.Entities.Resume", "Resume") + .WithMany("Projects") + .HasForeignKey("ResumeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Resume"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Resume", b => + { + b.HasOne("PortBlog.API.Entities.Candidate", "Candidate") + .WithMany("Resumes") + .HasForeignKey("CandidateId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Candidate"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.ResumeFile", b => + { + b.HasOne("PortBlog.API.Entities.Resume", "Resume") + .WithOne("ResumeFile") + .HasForeignKey("PortBlog.API.Entities.ResumeFile", "ResumeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Resume"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Skill", b => + { + b.HasOne("PortBlog.API.Entities.Resume", "Resume") + .WithMany("Skills") + .HasForeignKey("ResumeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Resume"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.SocialLinks", b => + { + b.HasOne("PortBlog.API.Entities.Blog", "Blog") + .WithMany() + .HasForeignKey("BlogUrl"); + + b.HasOne("PortBlog.API.Entities.Resume", "Resume") + .WithOne("SocialLinks") + .HasForeignKey("PortBlog.API.Entities.SocialLinks", "ResumeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Blog"); + + b.Navigation("Resume"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Blog", b => + { + b.Navigation("Posts"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Candidate", b => + { + b.Navigation("Resumes"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Experience", b => + { + b.Navigation("Details"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Resume", b => + { + b.Navigation("Academics"); + + b.Navigation("Certifications"); + + b.Navigation("Experiences"); + + b.Navigation("Hobbys"); + + b.Navigation("Projects"); + + b.Navigation("ResumeFile"); + + b.Navigation("Skills"); + + b.Navigation("SocialLinks"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/PortBlog.API/Migrations/20240425092224_InitialDBMigration.cs b/PortBlog.API/Migrations/20240425092224_InitialDBMigration.cs new file mode 100644 index 0000000..113d7c4 --- /dev/null +++ b/PortBlog.API/Migrations/20240425092224_InitialDBMigration.cs @@ -0,0 +1,662 @@ +using System; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace PortBlog.API.Migrations +{ + /// + public partial class InitialDBMigration : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AlterDatabase() + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.CreateTable( + name: "Blogs", + columns: table => new + { + BlogUrl = table.Column(type: "varchar(200)", maxLength: 200, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + Name = table.Column(type: "varchar(50)", maxLength: 50, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + Description = table.Column(type: "varchar(200)", maxLength: 200, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + CreatedBy = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + ModifiedBy = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + CreatedDate = table.Column(type: "datetime(6)", nullable: true), + ModifiedDate = table.Column(type: "datetime(6)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Blogs", x => x.BlogUrl); + }) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.CreateTable( + name: "Candidates", + columns: table => new + { + CandidateId = table.Column(type: "int", nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + FirstName = table.Column(type: "varchar(50)", maxLength: 50, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + LastName = table.Column(type: "varchar(50)", maxLength: 50, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + Gender = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + Email = table.Column(type: "varchar(100)", maxLength: 100, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + Phone = table.Column(type: "varchar(20)", maxLength: 20, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + Address = table.Column(type: "varchar(200)", maxLength: 200, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + Avatar = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + CreatedBy = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + ModifiedBy = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + CreatedDate = table.Column(type: "datetime(6)", nullable: true), + ModifiedDate = table.Column(type: "datetime(6)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Candidates", x => x.CandidateId); + }) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.CreateTable( + name: "ClientLogs", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + SiteName = table.Column(type: "varchar(50)", maxLength: 50, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + SiteUrl = table.Column(type: "varchar(100)", maxLength: 100, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + ClientIp = table.Column(type: "longtext", nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + ClientLocation = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + CreatedDate = table.Column(type: "datetime(6)", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_ClientLogs", x => x.Id); + }) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.CreateTable( + name: "Messages", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Name = table.Column(type: "varchar(50)", maxLength: 50, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + Email = table.Column(type: "varchar(100)", maxLength: 100, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + Subject = table.Column(type: "varchar(50)", maxLength: 50, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + Content = table.Column(type: "varchar(500)", maxLength: 500, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + CreatedDate = table.Column(type: "datetime(6)", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Messages", x => x.Id); + }) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.CreateTable( + name: "Posts", + columns: table => new + { + PostId = table.Column(type: "int", nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Slug = table.Column(type: "varchar(100)", maxLength: 100, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + Title = table.Column(type: "varchar(100)", maxLength: 100, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + Description = table.Column(type: "varchar(200)", maxLength: 200, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + Category = table.Column(type: "varchar(100)", maxLength: 100, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + Author = table.Column(type: "varchar(100)", maxLength: 100, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + PostUrl = table.Column(type: "varchar(200)", maxLength: 200, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + Likes = table.Column(type: "int", nullable: false), + Views = table.Column(type: "int", nullable: false), + Comments = table.Column(type: "int", nullable: false), + Image = table.Column(type: "varchar(200)", maxLength: 200, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + BlogUrl = table.Column(type: "varchar(200)", maxLength: 200, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + CreatedBy = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + ModifiedBy = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + CreatedDate = table.Column(type: "datetime(6)", nullable: true), + ModifiedDate = table.Column(type: "datetime(6)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Posts", x => x.PostId); + table.ForeignKey( + name: "FK_Posts_Blogs_BlogUrl", + column: x => x.BlogUrl, + principalTable: "Blogs", + principalColumn: "BlogUrl", + onDelete: ReferentialAction.Cascade); + }) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.CreateTable( + name: "Resumes", + columns: table => new + { + ResumeId = table.Column(type: "int", nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Title = table.Column(type: "varchar(100)", maxLength: 100, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + About = table.Column(type: "varchar(1000)", maxLength: 1000, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + Order = table.Column(type: "int", nullable: false), + CandidateId = table.Column(type: "int", nullable: false), + CreatedBy = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + ModifiedBy = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + CreatedDate = table.Column(type: "datetime(6)", nullable: true), + ModifiedDate = table.Column(type: "datetime(6)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Resumes", x => x.ResumeId); + table.ForeignKey( + name: "FK_Resumes_Candidates_CandidateId", + column: x => x.CandidateId, + principalTable: "Candidates", + principalColumn: "CandidateId", + onDelete: ReferentialAction.Cascade); + }) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.CreateTable( + name: "MessageStatusLogs", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + MessageId = table.Column(type: "int", nullable: false), + Status = table.Column(type: "varchar(10)", maxLength: 10, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + CreatedDate = table.Column(type: "datetime(6)", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_MessageStatusLogs", x => x.Id); + table.ForeignKey( + name: "FK_MessageStatusLogs_Messages_MessageId", + column: x => x.MessageId, + principalTable: "Messages", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.CreateTable( + name: "Academics", + columns: table => new + { + AcademicId = table.Column(type: "int", nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Institution = table.Column(type: "varchar(200)", maxLength: 200, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + StartYear = table.Column(type: "int", nullable: false), + EndYear = table.Column(type: "int", nullable: false), + ResumeId = table.Column(type: "int", nullable: false), + Degree = table.Column(type: "varchar(100)", maxLength: 100, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + DegreeSpecialization = table.Column(type: "varchar(100)", maxLength: 100, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + CreatedBy = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + ModifiedBy = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + CreatedDate = table.Column(type: "datetime(6)", nullable: true), + ModifiedDate = table.Column(type: "datetime(6)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Academics", x => x.AcademicId); + table.ForeignKey( + name: "FK_Academics_Resumes_ResumeId", + column: x => x.ResumeId, + principalTable: "Resumes", + principalColumn: "ResumeId", + onDelete: ReferentialAction.Cascade); + }) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.CreateTable( + name: "Certifications", + columns: table => new + { + CertificationId = table.Column(type: "int", nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + CertificationName = table.Column(type: "varchar(100)", maxLength: 100, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + IssuingOrganization = table.Column(type: "varchar(100)", maxLength: 100, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + CertificationLink = table.Column(type: "varchar(200)", maxLength: 200, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + IssueDate = table.Column(type: "datetime(6)", nullable: false), + ExpiryDate = table.Column(type: "datetime(6)", nullable: true), + ResumeId = table.Column(type: "int", nullable: false), + CreatedBy = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + ModifiedBy = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + CreatedDate = table.Column(type: "datetime(6)", nullable: true), + ModifiedDate = table.Column(type: "datetime(6)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Certifications", x => x.CertificationId); + table.ForeignKey( + name: "FK_Certifications_Resumes_ResumeId", + column: x => x.ResumeId, + principalTable: "Resumes", + principalColumn: "ResumeId", + onDelete: ReferentialAction.Cascade); + }) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.CreateTable( + name: "Experiences", + columns: table => new + { + ExperienceId = table.Column(type: "int", nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Title = table.Column(type: "varchar(100)", maxLength: 100, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + Description = table.Column(type: "varchar(500)", maxLength: 500, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + Company = table.Column(type: "varchar(100)", maxLength: 100, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + Location = table.Column(type: "varchar(100)", maxLength: 100, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + StartDate = table.Column(type: "datetime(6)", nullable: false), + EndDate = table.Column(type: "datetime(6)", nullable: true), + ResumeId = table.Column(type: "int", nullable: false), + CreatedBy = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + ModifiedBy = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + CreatedDate = table.Column(type: "datetime(6)", nullable: true), + ModifiedDate = table.Column(type: "datetime(6)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Experiences", x => x.ExperienceId); + table.ForeignKey( + name: "FK_Experiences_Resumes_ResumeId", + column: x => x.ResumeId, + principalTable: "Resumes", + principalColumn: "ResumeId", + onDelete: ReferentialAction.Cascade); + }) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.CreateTable( + name: "Files", + columns: table => new + { + FileId = table.Column(type: "int", nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + FileName = table.Column(type: "varchar(100)", maxLength: 100, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + FileFormat = table.Column(type: "varchar(50)", maxLength: 50, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + FilePath = table.Column(type: "varchar(100)", maxLength: 100, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + Version = table.Column(type: "varchar(10)", maxLength: 10, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + ResumeId = table.Column(type: "int", nullable: false), + CreatedBy = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + ModifiedBy = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + CreatedDate = table.Column(type: "datetime(6)", nullable: true), + ModifiedDate = table.Column(type: "datetime(6)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Files", x => x.FileId); + table.ForeignKey( + name: "FK_Files_Resumes_ResumeId", + column: x => x.ResumeId, + principalTable: "Resumes", + principalColumn: "ResumeId", + onDelete: ReferentialAction.Cascade); + }) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.CreateTable( + name: "Hobbies", + columns: table => new + { + HobbyId = table.Column(type: "int", nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Name = table.Column(type: "varchar(100)", maxLength: 100, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + Description = table.Column(type: "varchar(500)", maxLength: 500, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + Order = table.Column(type: "int", nullable: false), + Icon = table.Column(type: "varchar(50)", maxLength: 50, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + ResumeId = table.Column(type: "int", nullable: false), + CreatedBy = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + ModifiedBy = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + CreatedDate = table.Column(type: "datetime(6)", nullable: true), + ModifiedDate = table.Column(type: "datetime(6)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Hobbies", x => x.HobbyId); + table.ForeignKey( + name: "FK_Hobbies_Resumes_ResumeId", + column: x => x.ResumeId, + principalTable: "Resumes", + principalColumn: "ResumeId", + onDelete: ReferentialAction.Cascade); + }) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.CreateTable( + name: "Projects", + columns: table => new + { + ProjectId = table.Column(type: "int", nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Name = table.Column(type: "varchar(100)", maxLength: 100, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + Description = table.Column(type: "varchar(500)", maxLength: 500, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + Category = table.Column(type: "varchar(100)", maxLength: 100, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + Roles = table.Column(type: "varchar(100)", maxLength: 100, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + Challenges = table.Column(type: "varchar(200)", maxLength: 200, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + LessonsLearned = table.Column(type: "varchar(200)", maxLength: 200, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + Impact = table.Column(type: "varchar(200)", maxLength: 200, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + Responsibilities = table.Column(type: "varchar(200)", maxLength: 200, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + TechnologiesUsed = table.Column(type: "varchar(200)", maxLength: 200, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + StartDate = table.Column(type: "datetime(6)", nullable: true), + EndDate = table.Column(type: "datetime(6)", nullable: true), + Status = table.Column(type: "varchar(20)", maxLength: 20, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + ImagePath = table.Column(type: "varchar(200)", maxLength: 200, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + ResumeId = table.Column(type: "int", nullable: false), + CreatedBy = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + ModifiedBy = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + CreatedDate = table.Column(type: "datetime(6)", nullable: true), + ModifiedDate = table.Column(type: "datetime(6)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Projects", x => x.ProjectId); + table.ForeignKey( + name: "FK_Projects_Resumes_ResumeId", + column: x => x.ResumeId, + principalTable: "Resumes", + principalColumn: "ResumeId", + onDelete: ReferentialAction.Cascade); + }) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.CreateTable( + name: "Skills", + columns: table => new + { + SkillId = table.Column(type: "int", nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Name = table.Column(type: "varchar(50)", maxLength: 50, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + Description = table.Column(type: "varchar(200)", maxLength: 200, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + ProficiencyLevel = table.Column(type: "int", nullable: false), + ResumeId = table.Column(type: "int", nullable: false), + CreatedBy = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + ModifiedBy = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + CreatedDate = table.Column(type: "datetime(6)", nullable: true), + ModifiedDate = table.Column(type: "datetime(6)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Skills", x => x.SkillId); + table.ForeignKey( + name: "FK_Skills_Resumes_ResumeId", + column: x => x.ResumeId, + principalTable: "Resumes", + principalColumn: "ResumeId", + onDelete: ReferentialAction.Cascade); + }) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.CreateTable( + name: "SocialLinks", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + GitHub = table.Column(type: "varchar(200)", maxLength: 200, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + Linkedin = table.Column(type: "varchar(200)", maxLength: 200, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + Instagram = table.Column(type: "varchar(200)", maxLength: 200, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + Facebook = table.Column(type: "varchar(200)", maxLength: 200, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + Twitter = table.Column(type: "varchar(200)", maxLength: 200, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + PersonalWebsite = table.Column(type: "varchar(200)", maxLength: 200, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + BlogUrl = table.Column(type: "varchar(200)", maxLength: 200, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + ResumeId = table.Column(type: "int", nullable: false), + CreatedBy = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + ModifiedBy = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + CreatedDate = table.Column(type: "datetime(6)", nullable: true), + ModifiedDate = table.Column(type: "datetime(6)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_SocialLinks", x => x.Id); + table.ForeignKey( + name: "FK_SocialLinks_Blogs_BlogUrl", + column: x => x.BlogUrl, + principalTable: "Blogs", + principalColumn: "BlogUrl"); + table.ForeignKey( + name: "FK_SocialLinks_Resumes_ResumeId", + column: x => x.ResumeId, + principalTable: "Resumes", + principalColumn: "ResumeId", + onDelete: ReferentialAction.Cascade); + }) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.CreateTable( + name: "ExperienceDetails", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Details = table.Column(type: "varchar(500)", maxLength: 500, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + Order = table.Column(type: "int", nullable: false), + ExperienceId = table.Column(type: "int", nullable: false), + CreatedBy = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + ModifiedBy = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + CreatedDate = table.Column(type: "datetime(6)", nullable: true), + ModifiedDate = table.Column(type: "datetime(6)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_ExperienceDetails", x => x.Id); + table.ForeignKey( + name: "FK_ExperienceDetails_Experiences_ExperienceId", + column: x => x.ExperienceId, + principalTable: "Experiences", + principalColumn: "ExperienceId", + onDelete: ReferentialAction.Cascade); + }) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.CreateIndex( + name: "IX_Academics_ResumeId", + table: "Academics", + column: "ResumeId"); + + migrationBuilder.CreateIndex( + name: "IX_Certifications_ResumeId", + table: "Certifications", + column: "ResumeId"); + + migrationBuilder.CreateIndex( + name: "IX_ExperienceDetails_ExperienceId", + table: "ExperienceDetails", + column: "ExperienceId"); + + migrationBuilder.CreateIndex( + name: "IX_Experiences_ResumeId", + table: "Experiences", + column: "ResumeId"); + + migrationBuilder.CreateIndex( + name: "IX_Files_ResumeId", + table: "Files", + column: "ResumeId", + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_Hobbies_ResumeId", + table: "Hobbies", + column: "ResumeId"); + + migrationBuilder.CreateIndex( + name: "IX_MessageStatusLogs_MessageId", + table: "MessageStatusLogs", + column: "MessageId"); + + migrationBuilder.CreateIndex( + name: "IX_Posts_BlogUrl", + table: "Posts", + column: "BlogUrl"); + + migrationBuilder.CreateIndex( + name: "IX_Projects_ResumeId", + table: "Projects", + column: "ResumeId"); + + migrationBuilder.CreateIndex( + name: "IX_Resumes_CandidateId", + table: "Resumes", + column: "CandidateId"); + + migrationBuilder.CreateIndex( + name: "IX_Skills_ResumeId", + table: "Skills", + column: "ResumeId"); + + migrationBuilder.CreateIndex( + name: "IX_SocialLinks_BlogUrl", + table: "SocialLinks", + column: "BlogUrl"); + + migrationBuilder.CreateIndex( + name: "IX_SocialLinks_ResumeId", + table: "SocialLinks", + column: "ResumeId", + unique: true); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "Academics"); + + migrationBuilder.DropTable( + name: "Certifications"); + + migrationBuilder.DropTable( + name: "ClientLogs"); + + migrationBuilder.DropTable( + name: "ExperienceDetails"); + + migrationBuilder.DropTable( + name: "Files"); + + migrationBuilder.DropTable( + name: "Hobbies"); + + migrationBuilder.DropTable( + name: "MessageStatusLogs"); + + migrationBuilder.DropTable( + name: "Posts"); + + migrationBuilder.DropTable( + name: "Projects"); + + migrationBuilder.DropTable( + name: "Skills"); + + migrationBuilder.DropTable( + name: "SocialLinks"); + + migrationBuilder.DropTable( + name: "Experiences"); + + migrationBuilder.DropTable( + name: "Messages"); + + migrationBuilder.DropTable( + name: "Blogs"); + + migrationBuilder.DropTable( + name: "Resumes"); + + migrationBuilder.DropTable( + name: "Candidates"); + } + } +} diff --git a/PortBlog.API/Migrations/20240425092347_InitialSeedData.Designer.cs b/PortBlog.API/Migrations/20240425092347_InitialSeedData.Designer.cs new file mode 100644 index 0000000..b2c81d2 --- /dev/null +++ b/PortBlog.API/Migrations/20240425092347_InitialSeedData.Designer.cs @@ -0,0 +1,1378 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using PortBlog.API.DbContexts; + +#nullable disable + +namespace PortBlog.API.Migrations +{ + [DbContext(typeof(CvBlogContext))] + [Migration("20240425092347_InitialSeedData")] + partial class InitialSeedData + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "8.0.4") + .HasAnnotation("Relational:MaxIdentifierLength", 64); + + MySqlModelBuilderExtensions.AutoIncrementColumns(modelBuilder); + + modelBuilder.Entity("PortBlog.API.Entities.Academic", b => + { + b.Property("AcademicId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("AcademicId")); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("Degree") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("DegreeSpecialization") + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("EndYear") + .HasColumnType("int"); + + b.Property("Institution") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("ResumeId") + .HasColumnType("int"); + + b.Property("StartYear") + .HasColumnType("int"); + + b.HasKey("AcademicId"); + + b.HasIndex("ResumeId"); + + b.ToTable("Academics"); + + b.HasData( + new + { + AcademicId = 1, + CreatedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6028), + Degree = "High School", + EndYear = 2007, + Institution = "Pragati Little Public School", + ModifiedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6029), + ResumeId = 1, + StartYear = 2006 + }, + new + { + AcademicId = 2, + CreatedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6032), + Degree = "Intermediate", + DegreeSpecialization = "MPC", + EndYear = 2009, + Institution = "Sri Chaitanya Junior College", + ModifiedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6032), + ResumeId = 1, + StartYear = 2007 + }, + new + { + AcademicId = 3, + CreatedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6034), + Degree = "BTech", + DegreeSpecialization = "ECE", + EndYear = 2013, + Institution = "Kakinada Institute of Technology & Science", + ModifiedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6035), + ResumeId = 1, + StartYear = 2009 + }); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Blog", b => + { + b.Property("BlogUrl") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("Description") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.HasKey("BlogUrl"); + + b.ToTable("Blogs"); + + b.HasData( + new + { + BlogUrl = "https://bangararaju.kottedi.in/blog", + CreatedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6122), + Description = "Your Hub for Tech, DIY, and Innovation", + ModifiedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6122), + Name = "Engineer's Odyssey" + }); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Candidate", b => + { + b.Property("CandidateId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CandidateId")); + + b.Property("Address") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("Avatar") + .HasColumnType("longtext"); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.Property("Gender") + .HasColumnType("longtext"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("Phone") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("varchar(20)"); + + b.HasKey("CandidateId"); + + b.ToTable("Candidates"); + + b.HasData( + new + { + CandidateId = 1, + Address = "Samalkot, Andhra Pradesh, India", + CreatedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(5678), + Email = "bangararaju.kottedi@gmail.com", + FirstName = "Bangara Raju", + Gender = "Male", + LastName = "Kottedi", + ModifiedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(5692), + Phone = "+91 9441212187" + }); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Certification", b => + { + b.Property("CertificationId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CertificationId")); + + b.Property("CertificationLink") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("CertificationName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("ExpiryDate") + .HasColumnType("datetime(6)"); + + b.Property("IssueDate") + .HasColumnType("datetime(6)"); + + b.Property("IssuingOrganization") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("ResumeId") + .HasColumnType("int"); + + b.HasKey("CertificationId"); + + b.HasIndex("ResumeId"); + + b.ToTable("Certifications"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.ClientLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("ClientIp") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("ClientLocation") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("SiteName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.Property("SiteUrl") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.HasKey("Id"); + + b.ToTable("ClientLogs"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Experience", b => + { + b.Property("ExperienceId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("ExperienceId")); + + b.Property("Company") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("Description") + .HasMaxLength(500) + .HasColumnType("varchar(500)"); + + b.Property("EndDate") + .HasColumnType("datetime(6)"); + + b.Property("Location") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("ResumeId") + .HasColumnType("int"); + + b.Property("StartDate") + .HasColumnType("datetime(6)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.HasKey("ExperienceId"); + + b.HasIndex("ResumeId"); + + b.ToTable("Experiences"); + + b.HasData( + new + { + ExperienceId = 1, + Company = "Agility E Services", + CreatedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6183), + Description = "", + EndDate = new DateTime(2016, 4, 25, 0, 0, 0, 0, DateTimeKind.Unspecified), + Location = "Hyderabad", + ModifiedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6183), + ResumeId = 1, + StartDate = new DateTime(2015, 9, 2, 0, 0, 0, 0, DateTimeKind.Unspecified), + Title = "Jr. Software Engineer" + }, + new + { + ExperienceId = 2, + Company = "Agility", + CreatedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6192), + Description = "", + EndDate = new DateTime(2022, 1, 31, 0, 0, 0, 0, DateTimeKind.Unspecified), + Location = "Kuwait", + ModifiedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6192), + ResumeId = 1, + StartDate = new DateTime(2016, 5, 12, 0, 0, 0, 0, DateTimeKind.Unspecified), + Title = "Web Developer" + }, + new + { + ExperienceId = 3, + Company = "Agility", + CreatedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6195), + Description = "", + EndDate = new DateTime(2022, 10, 31, 0, 0, 0, 0, DateTimeKind.Unspecified), + Location = "Kuwait", + ModifiedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6195), + ResumeId = 1, + StartDate = new DateTime(2022, 2, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + Title = "Senior Web Developer" + }, + new + { + ExperienceId = 4, + Company = "Agility E Services", + CreatedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6198), + Description = "", + EndDate = new DateTime(2024, 4, 12, 0, 0, 0, 0, DateTimeKind.Unspecified), + Location = "Hyderabad", + ModifiedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6198), + ResumeId = 1, + StartDate = new DateTime(2022, 11, 4, 0, 0, 0, 0, DateTimeKind.Unspecified), + Title = "Technology Specialist" + }); + }); + + modelBuilder.Entity("PortBlog.API.Entities.ExperienceDetails", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("Details") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("varchar(500)"); + + b.Property("ExperienceId") + .HasColumnType("int"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("Order") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ExperienceId"); + + b.ToTable("ExperienceDetails"); + + b.HasData( + new + { + Id = 1, + CreatedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6219), + 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, + ModifiedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6219), + Order = 1 + }, + new + { + Id = 2, + CreatedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6222), + 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, + ModifiedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6223), + Order = 2 + }, + new + { + Id = 3, + CreatedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6224), + 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, + ModifiedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6224), + Order = 1 + }, + new + { + Id = 4, + CreatedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6226), + 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, + ModifiedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6226), + Order = 2 + }, + new + { + Id = 5, + CreatedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6227), + 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, + ModifiedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6228), + Order = 1 + }, + new + { + Id = 6, + CreatedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6230), + 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, + ModifiedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6230), + Order = 2 + }, + new + { + Id = 7, + CreatedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6231), + 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, + ModifiedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6231), + Order = 1 + }, + new + { + Id = 8, + CreatedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6232), + 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, + ModifiedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6233), + Order = 2 + }); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Hobby", b => + { + b.Property("HobbyId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("HobbyId")); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("varchar(500)"); + + b.Property("Icon") + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("Order") + .HasColumnType("int"); + + b.Property("ResumeId") + .HasColumnType("int"); + + b.HasKey("HobbyId"); + + b.HasIndex("ResumeId"); + + b.ToTable("Hobbies"); + + b.HasData( + new + { + HobbyId = 1, + CreatedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(5981), + Description = "Crafting Professional-Quality Websites with Precision", + Icon = "fa-square-terminal", + ModifiedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(5983), + Name = "Web Development", + Order = 1, + ResumeId = 1 + }, + new + { + HobbyId = 2, + CreatedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(5990), + Description = "Streamlining and Simplifying Complex Tasks through Automation", + Icon = "fa-robot", + ModifiedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(5990), + Name = "Automation", + Order = 2, + ResumeId = 1 + }, + new + { + HobbyId = 3, + CreatedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(5992), + Description = "Sharing the knowledge and insights I’ve gathered along my journey", + Icon = "fa-typewriter", + ModifiedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(5993), + Name = "Blogging", + Order = 3, + ResumeId = 1 + }, + new + { + HobbyId = 4, + CreatedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(5994), + Description = "Cultivating Nature's Beauty and Bounty", + Icon = "fa-seedling", + ModifiedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(5995), + Name = "Gardening", + Order = 4, + ResumeId = 1 + }); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Message", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Content") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("varchar(500)"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.Property("Subject") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.HasKey("Id"); + + b.ToTable("Messages"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.MessageStatusLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("MessageId") + .HasColumnType("int"); + + b.Property("Status") + .IsRequired() + .HasMaxLength(10) + .HasColumnType("varchar(10)"); + + b.HasKey("Id"); + + b.HasIndex("MessageId"); + + b.ToTable("MessageStatusLogs"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Post", b => + { + b.Property("PostId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("PostId")); + + b.Property("Author") + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("BlogUrl") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("Category") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("Comments") + .HasColumnType("int"); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("Image") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("Likes") + .HasColumnType("int"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("PostUrl") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("Slug") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("Views") + .HasColumnType("int"); + + b.HasKey("PostId"); + + b.HasIndex("BlogUrl"); + + b.ToTable("Posts"); + + b.HasData( + new + { + PostId = 1, + BlogUrl = "https://bangararaju.kottedi.in/blog", + Category = "Welcome", + Comments = 0, + CreatedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6152), + Description = "Hello World", + Likes = 0, + ModifiedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6148), + PostUrl = "https://bangararaju.kottedi.in/blog/hello-world", + Slug = "hello-world", + Title = "Hello World", + Views = 0 + }, + new + { + PostId = 2, + BlogUrl = "https://bangararaju.kottedi.in/blog", + Category = "Welcome", + Comments = 0, + CreatedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6157), + Description = "Hello World", + Likes = 0, + ModifiedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6155), + PostUrl = "https://bangararaju.kottedi.in/blog/hello-world", + Slug = "hello-world", + Title = "Hello World", + Views = 0 + }, + new + { + PostId = 3, + BlogUrl = "https://bangararaju.kottedi.in/blog", + Category = "Welcome", + Comments = 0, + CreatedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6160), + Description = "Hello World", + Likes = 0, + ModifiedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6158), + PostUrl = "https://bangararaju.kottedi.in/blog/hello-world", + Slug = "hello-world", + Title = "Hello World", + Views = 0 + }); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Project", b => + { + b.Property("ProjectId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("ProjectId")); + + b.Property("Category") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("Challenges") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("varchar(500)"); + + b.Property("EndDate") + .HasColumnType("datetime(6)"); + + b.Property("ImagePath") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("Impact") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("LessonsLearned") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("Responsibilities") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("ResumeId") + .HasColumnType("int"); + + b.Property("Roles") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("StartDate") + .HasColumnType("datetime(6)"); + + b.Property("Status") + .HasMaxLength(20) + .HasColumnType("varchar(20)"); + + b.Property("TechnologiesUsed") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.HasKey("ProjectId"); + + b.HasIndex("ResumeId"); + + b.ToTable("Projects"); + + b.HasData( + new + { + ProjectId = 1, + Category = "Web Development", + CreatedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6091), + Description = "Business Process Management", + ImagePath = "", + ModifiedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6091), + Name = "Transfora (Business Process Management)", + Responsibilities = "Developing, Testing, Support", + ResumeId = 1, + Roles = "Coding, Reviewing, Testing", + TechnologiesUsed = ".NET, Angular" + }, + new + { + ProjectId = 2, + Category = "Web Development", + CreatedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6099), + Description = "Business Process Management", + ImagePath = "", + ModifiedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6099), + Name = "Transfora (Business Process Management)", + Responsibilities = "Developing, Testing, Support", + ResumeId = 1, + Roles = "Coding, Reviewing, Testing", + TechnologiesUsed = ".NET, Angular" + }, + new + { + ProjectId = 3, + Category = "Web Development", + CreatedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6101), + Description = "Business Process Management", + ImagePath = "", + ModifiedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6102), + Name = "Transfora (Business Process Management)", + Responsibilities = "Developing, Testing, Support", + ResumeId = 1, + Roles = "Coding, Reviewing, Testing", + TechnologiesUsed = ".NET, Angular" + }); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Resume", b => + { + b.Property("ResumeId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("ResumeId")); + + b.Property("About") + .IsRequired() + .HasMaxLength(1000) + .HasColumnType("varchar(1000)"); + + b.Property("CandidateId") + .HasColumnType("int"); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("Order") + .HasColumnType("int"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.HasKey("ResumeId"); + + b.HasIndex("CandidateId"); + + b.ToTable("Resumes"); + + b.HasData( + new + { + 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.", + CandidateId = 1, + CreatedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(5849), + ModifiedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(5849), + Order = 1, + Title = "Full Stack Developer" + }); + }); + + modelBuilder.Entity("PortBlog.API.Entities.ResumeFile", b => + { + b.Property("FileId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("FileId")); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("FileFormat") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.Property("FileName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("FilePath") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("ResumeId") + .HasColumnType("int"); + + b.Property("Version") + .HasMaxLength(10) + .HasColumnType("varchar(10)"); + + b.HasKey("FileId"); + + b.HasIndex("ResumeId") + .IsUnique(); + + b.ToTable("Files"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Skill", b => + { + b.Property("SkillId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("SkillId")); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("Description") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.Property("ProficiencyLevel") + .HasColumnType("int"); + + b.Property("ResumeId") + .HasColumnType("int"); + + b.HasKey("SkillId"); + + b.HasIndex("ResumeId"); + + b.ToTable("Skills"); + + b.HasData( + new + { + SkillId = 1, + CreatedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6060), + ModifiedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6061), + Name = "Web Development", + ProficiencyLevel = 80, + ResumeId = 1 + }, + new + { + SkillId = 2, + CreatedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6064), + ModifiedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6064), + Name = "Web Development", + ProficiencyLevel = 80, + ResumeId = 1 + }, + new + { + SkillId = 3, + CreatedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6066), + ModifiedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6066), + Name = "Web Development", + ProficiencyLevel = 80, + ResumeId = 1 + }, + new + { + SkillId = 4, + CreatedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6067), + ModifiedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6068), + Name = "Web Development", + ProficiencyLevel = 80, + ResumeId = 1 + }, + new + { + SkillId = 5, + CreatedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6069), + ModifiedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6069), + Name = "Web Development", + ProficiencyLevel = 80, + ResumeId = 1 + }); + }); + + modelBuilder.Entity("PortBlog.API.Entities.SocialLinks", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("BlogUrl") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("Facebook") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("GitHub") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("Instagram") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("Linkedin") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("PersonalWebsite") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("ResumeId") + .HasColumnType("int"); + + b.Property("Twitter") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.HasKey("Id"); + + b.HasIndex("BlogUrl"); + + b.HasIndex("ResumeId") + .IsUnique(); + + b.ToTable("SocialLinks"); + + b.HasData( + new + { + Id = 1, + BlogUrl = "https://bangararaju.kottedi.in/blog", + CreatedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(5878), + GitHub = "https://github.com/rajukottedi", + Linkedin = "https://in.linkedin.com/in/bangara-raju-kottedi-299072109", + ModifiedDate = new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(5878), + ResumeId = 1 + }); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Academic", b => + { + b.HasOne("PortBlog.API.Entities.Resume", "Resume") + .WithMany("Academics") + .HasForeignKey("ResumeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Resume"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Certification", b => + { + b.HasOne("PortBlog.API.Entities.Resume", "Resume") + .WithMany("Certifications") + .HasForeignKey("ResumeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Resume"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Experience", b => + { + b.HasOne("PortBlog.API.Entities.Resume", "Resume") + .WithMany("Experiences") + .HasForeignKey("ResumeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Resume"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.ExperienceDetails", b => + { + b.HasOne("PortBlog.API.Entities.Experience", "Experience") + .WithMany("Details") + .HasForeignKey("ExperienceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Experience"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Hobby", b => + { + b.HasOne("PortBlog.API.Entities.Resume", "Resume") + .WithMany("Hobbys") + .HasForeignKey("ResumeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Resume"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.MessageStatusLog", b => + { + b.HasOne("PortBlog.API.Entities.Message", "Message") + .WithMany() + .HasForeignKey("MessageId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Message"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Post", b => + { + b.HasOne("PortBlog.API.Entities.Blog", "Blog") + .WithMany("Posts") + .HasForeignKey("BlogUrl") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Blog"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Project", b => + { + b.HasOne("PortBlog.API.Entities.Resume", "Resume") + .WithMany("Projects") + .HasForeignKey("ResumeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Resume"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Resume", b => + { + b.HasOne("PortBlog.API.Entities.Candidate", "Candidate") + .WithMany("Resumes") + .HasForeignKey("CandidateId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Candidate"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.ResumeFile", b => + { + b.HasOne("PortBlog.API.Entities.Resume", "Resume") + .WithOne("ResumeFile") + .HasForeignKey("PortBlog.API.Entities.ResumeFile", "ResumeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Resume"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Skill", b => + { + b.HasOne("PortBlog.API.Entities.Resume", "Resume") + .WithMany("Skills") + .HasForeignKey("ResumeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Resume"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.SocialLinks", b => + { + b.HasOne("PortBlog.API.Entities.Blog", "Blog") + .WithMany() + .HasForeignKey("BlogUrl"); + + b.HasOne("PortBlog.API.Entities.Resume", "Resume") + .WithOne("SocialLinks") + .HasForeignKey("PortBlog.API.Entities.SocialLinks", "ResumeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Blog"); + + b.Navigation("Resume"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Blog", b => + { + b.Navigation("Posts"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Candidate", b => + { + b.Navigation("Resumes"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Experience", b => + { + b.Navigation("Details"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Resume", b => + { + b.Navigation("Academics"); + + b.Navigation("Certifications"); + + b.Navigation("Experiences"); + + b.Navigation("Hobbys"); + + b.Navigation("Projects"); + + b.Navigation("ResumeFile"); + + b.Navigation("Skills"); + + b.Navigation("SocialLinks"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/PortBlog.API/Migrations/20240425092347_InitialSeedData.cs b/PortBlog.API/Migrations/20240425092347_InitialSeedData.cs new file mode 100644 index 0000000..86d2649 --- /dev/null +++ b/PortBlog.API/Migrations/20240425092347_InitialSeedData.cs @@ -0,0 +1,290 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +#pragma warning disable CA1814 // Prefer jagged arrays over multidimensional + +namespace PortBlog.API.Migrations +{ + /// + public partial class InitialSeedData : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.InsertData( + table: "Blogs", + columns: new[] { "BlogUrl", "CreatedBy", "CreatedDate", "Description", "ModifiedBy", "ModifiedDate", "Name" }, + values: new object[] { "https://bangararaju.kottedi.in/blog", null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6122), "Your Hub for Tech, DIY, and Innovation", null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6122), "Engineer's Odyssey" }); + + migrationBuilder.InsertData( + table: "Candidates", + columns: new[] { "CandidateId", "Address", "Avatar", "CreatedBy", "CreatedDate", "Email", "FirstName", "Gender", "LastName", "ModifiedBy", "ModifiedDate", "Phone" }, + values: new object[] { 1, "Samalkot, Andhra Pradesh, India", null, null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(5678), "bangararaju.kottedi@gmail.com", "Bangara Raju", "Male", "Kottedi", null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(5692), "+91 9441212187" }); + + migrationBuilder.InsertData( + table: "Posts", + columns: new[] { "PostId", "Author", "BlogUrl", "Category", "Comments", "CreatedBy", "CreatedDate", "Description", "Image", "Likes", "ModifiedBy", "ModifiedDate", "PostUrl", "Slug", "Title", "Views" }, + values: new object[,] + { + { 1, null, "https://bangararaju.kottedi.in/blog", "Welcome", 0, null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6152), "Hello World", null, 0, null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6148), "https://bangararaju.kottedi.in/blog/hello-world", "hello-world", "Hello World", 0 }, + { 2, null, "https://bangararaju.kottedi.in/blog", "Welcome", 0, null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6157), "Hello World", null, 0, null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6155), "https://bangararaju.kottedi.in/blog/hello-world", "hello-world", "Hello World", 0 }, + { 3, null, "https://bangararaju.kottedi.in/blog", "Welcome", 0, null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6160), "Hello World", null, 0, null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6158), "https://bangararaju.kottedi.in/blog/hello-world", "hello-world", "Hello World", 0 } + }); + + migrationBuilder.InsertData( + table: "Resumes", + columns: new[] { "ResumeId", "About", "CandidateId", "CreatedBy", "CreatedDate", "ModifiedBy", "ModifiedDate", "Order", "Title" }, + values: new object[] { 1, "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.", 1, null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(5849), null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(5849), 1, "Full Stack Developer" }); + + migrationBuilder.InsertData( + table: "Academics", + columns: new[] { "AcademicId", "CreatedBy", "CreatedDate", "Degree", "DegreeSpecialization", "EndYear", "Institution", "ModifiedBy", "ModifiedDate", "ResumeId", "StartYear" }, + values: new object[,] + { + { 1, null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6028), "High School", null, 2007, "Pragati Little Public School", null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6029), 1, 2006 }, + { 2, null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6032), "Intermediate", "MPC", 2009, "Sri Chaitanya Junior College", null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6032), 1, 2007 }, + { 3, null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6034), "BTech", "ECE", 2013, "Kakinada Institute of Technology & Science", null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6035), 1, 2009 } + }); + + migrationBuilder.InsertData( + table: "Experiences", + columns: new[] { "ExperienceId", "Company", "CreatedBy", "CreatedDate", "Description", "EndDate", "Location", "ModifiedBy", "ModifiedDate", "ResumeId", "StartDate", "Title" }, + values: new object[,] + { + { 1, "Agility E Services", null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6183), "", new DateTime(2016, 4, 25, 0, 0, 0, 0, DateTimeKind.Unspecified), "Hyderabad", null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6183), 1, new DateTime(2015, 9, 2, 0, 0, 0, 0, DateTimeKind.Unspecified), "Jr. Software Engineer" }, + { 2, "Agility", null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6192), "", new DateTime(2022, 1, 31, 0, 0, 0, 0, DateTimeKind.Unspecified), "Kuwait", null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6192), 1, new DateTime(2016, 5, 12, 0, 0, 0, 0, DateTimeKind.Unspecified), "Web Developer" }, + { 3, "Agility", null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6195), "", new DateTime(2022, 10, 31, 0, 0, 0, 0, DateTimeKind.Unspecified), "Kuwait", null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6195), 1, new DateTime(2022, 2, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), "Senior Web Developer" }, + { 4, "Agility E Services", null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6198), "", new DateTime(2024, 4, 12, 0, 0, 0, 0, DateTimeKind.Unspecified), "Hyderabad", null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6198), 1, new DateTime(2022, 11, 4, 0, 0, 0, 0, DateTimeKind.Unspecified), "Technology Specialist" } + }); + + migrationBuilder.InsertData( + table: "Hobbies", + columns: new[] { "HobbyId", "CreatedBy", "CreatedDate", "Description", "Icon", "ModifiedBy", "ModifiedDate", "Name", "Order", "ResumeId" }, + values: new object[,] + { + { 1, null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(5981), "Crafting Professional-Quality Websites with Precision", "fa-square-terminal", null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(5983), "Web Development", 1, 1 }, + { 2, null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(5990), "Streamlining and Simplifying Complex Tasks through Automation", "fa-robot", null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(5990), "Automation", 2, 1 }, + { 3, null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(5992), "Sharing the knowledge and insights I’ve gathered along my journey", "fa-typewriter", null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(5993), "Blogging", 3, 1 }, + { 4, null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(5994), "Cultivating Nature's Beauty and Bounty", "fa-seedling", null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(5995), "Gardening", 4, 1 } + }); + + migrationBuilder.InsertData( + table: "Projects", + columns: new[] { "ProjectId", "Category", "Challenges", "CreatedBy", "CreatedDate", "Description", "EndDate", "ImagePath", "Impact", "LessonsLearned", "ModifiedBy", "ModifiedDate", "Name", "Responsibilities", "ResumeId", "Roles", "StartDate", "Status", "TechnologiesUsed" }, + values: new object[,] + { + { 1, "Web Development", null, null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6091), "Business Process Management", null, "", null, null, null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6091), "Transfora (Business Process Management)", "Developing, Testing, Support", 1, "Coding, Reviewing, Testing", null, null, ".NET, Angular" }, + { 2, "Web Development", null, null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6099), "Business Process Management", null, "", null, null, null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6099), "Transfora (Business Process Management)", "Developing, Testing, Support", 1, "Coding, Reviewing, Testing", null, null, ".NET, Angular" }, + { 3, "Web Development", null, null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6101), "Business Process Management", null, "", null, null, null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6102), "Transfora (Business Process Management)", "Developing, Testing, Support", 1, "Coding, Reviewing, Testing", null, null, ".NET, Angular" } + }); + + migrationBuilder.InsertData( + table: "Skills", + columns: new[] { "SkillId", "CreatedBy", "CreatedDate", "Description", "ModifiedBy", "ModifiedDate", "Name", "ProficiencyLevel", "ResumeId" }, + values: new object[,] + { + { 1, null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6060), null, null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6061), "Web Development", 80, 1 }, + { 2, null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6064), null, null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6064), "Web Development", 80, 1 }, + { 3, null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6066), null, null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6066), "Web Development", 80, 1 }, + { 4, null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6067), null, null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6068), "Web Development", 80, 1 }, + { 5, null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6069), null, null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6069), "Web Development", 80, 1 } + }); + + migrationBuilder.InsertData( + table: "SocialLinks", + columns: new[] { "Id", "BlogUrl", "CreatedBy", "CreatedDate", "Facebook", "GitHub", "Instagram", "Linkedin", "ModifiedBy", "ModifiedDate", "PersonalWebsite", "ResumeId", "Twitter" }, + values: new object[] { 1, "https://bangararaju.kottedi.in/blog", null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(5878), null, "https://github.com/rajukottedi", null, "https://in.linkedin.com/in/bangara-raju-kottedi-299072109", null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(5878), null, 1, null }); + + migrationBuilder.InsertData( + table: "ExperienceDetails", + columns: new[] { "Id", "CreatedBy", "CreatedDate", "Details", "ExperienceId", "ModifiedBy", "ModifiedDate", "Order" }, + values: new object[,] + { + { 1, null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6219), "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.", 1, null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6219), 1 }, + { 2, null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6222), "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.", 1, null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6223), 2 }, + { 3, null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6224), "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.", 2, null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6224), 1 }, + { 4, null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6226), "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.", 2, null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6226), 2 }, + { 5, null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6227), "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.", 3, null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6228), 1 }, + { 6, null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6230), "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.", 3, null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6230), 2 }, + { 7, null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6231), "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.", 4, null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6231), 1 }, + { 8, null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6232), "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.", 4, null, new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6233), 2 } + }); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DeleteData( + table: "Academics", + keyColumn: "AcademicId", + keyValue: 1); + + migrationBuilder.DeleteData( + table: "Academics", + keyColumn: "AcademicId", + keyValue: 2); + + migrationBuilder.DeleteData( + table: "Academics", + keyColumn: "AcademicId", + keyValue: 3); + + migrationBuilder.DeleteData( + table: "ExperienceDetails", + keyColumn: "Id", + keyValue: 1); + + migrationBuilder.DeleteData( + table: "ExperienceDetails", + keyColumn: "Id", + keyValue: 2); + + migrationBuilder.DeleteData( + table: "ExperienceDetails", + keyColumn: "Id", + keyValue: 3); + + migrationBuilder.DeleteData( + table: "ExperienceDetails", + keyColumn: "Id", + keyValue: 4); + + migrationBuilder.DeleteData( + table: "ExperienceDetails", + keyColumn: "Id", + keyValue: 5); + + migrationBuilder.DeleteData( + table: "ExperienceDetails", + keyColumn: "Id", + keyValue: 6); + + migrationBuilder.DeleteData( + table: "ExperienceDetails", + keyColumn: "Id", + keyValue: 7); + + migrationBuilder.DeleteData( + table: "ExperienceDetails", + keyColumn: "Id", + keyValue: 8); + + migrationBuilder.DeleteData( + table: "Hobbies", + keyColumn: "HobbyId", + keyValue: 1); + + migrationBuilder.DeleteData( + table: "Hobbies", + keyColumn: "HobbyId", + keyValue: 2); + + migrationBuilder.DeleteData( + table: "Hobbies", + keyColumn: "HobbyId", + keyValue: 3); + + migrationBuilder.DeleteData( + table: "Hobbies", + keyColumn: "HobbyId", + keyValue: 4); + + migrationBuilder.DeleteData( + table: "Posts", + keyColumn: "PostId", + keyValue: 1); + + migrationBuilder.DeleteData( + table: "Posts", + keyColumn: "PostId", + keyValue: 2); + + migrationBuilder.DeleteData( + table: "Posts", + keyColumn: "PostId", + keyValue: 3); + + migrationBuilder.DeleteData( + table: "Projects", + keyColumn: "ProjectId", + keyValue: 1); + + migrationBuilder.DeleteData( + table: "Projects", + keyColumn: "ProjectId", + keyValue: 2); + + migrationBuilder.DeleteData( + table: "Projects", + keyColumn: "ProjectId", + keyValue: 3); + + migrationBuilder.DeleteData( + table: "Skills", + keyColumn: "SkillId", + keyValue: 1); + + migrationBuilder.DeleteData( + table: "Skills", + keyColumn: "SkillId", + keyValue: 2); + + migrationBuilder.DeleteData( + table: "Skills", + keyColumn: "SkillId", + keyValue: 3); + + migrationBuilder.DeleteData( + table: "Skills", + keyColumn: "SkillId", + keyValue: 4); + + migrationBuilder.DeleteData( + table: "Skills", + keyColumn: "SkillId", + keyValue: 5); + + migrationBuilder.DeleteData( + table: "SocialLinks", + keyColumn: "Id", + keyValue: 1); + + migrationBuilder.DeleteData( + table: "Blogs", + keyColumn: "BlogUrl", + keyValue: "https://bangararaju.kottedi.in/blog"); + + migrationBuilder.DeleteData( + table: "Experiences", + keyColumn: "ExperienceId", + keyValue: 1); + + migrationBuilder.DeleteData( + table: "Experiences", + keyColumn: "ExperienceId", + keyValue: 2); + + migrationBuilder.DeleteData( + table: "Experiences", + keyColumn: "ExperienceId", + keyValue: 3); + + migrationBuilder.DeleteData( + table: "Experiences", + keyColumn: "ExperienceId", + keyValue: 4); + + migrationBuilder.DeleteData( + table: "Resumes", + keyColumn: "ResumeId", + keyValue: 1); + + migrationBuilder.DeleteData( + table: "Candidates", + keyColumn: "CandidateId", + keyValue: 1); + } + } +} diff --git a/PortBlog.API/Migrations/20240425191634_AddDobToCandidate.Designer.cs b/PortBlog.API/Migrations/20240425191634_AddDobToCandidate.Designer.cs new file mode 100644 index 0000000..0ef6634 --- /dev/null +++ b/PortBlog.API/Migrations/20240425191634_AddDobToCandidate.Designer.cs @@ -0,0 +1,1381 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using PortBlog.API.DbContexts; + +#nullable disable + +namespace PortBlog.API.Migrations +{ + [DbContext(typeof(CvBlogContext))] + [Migration("20240425191634_AddDobToCandidate")] + partial class AddDobToCandidate + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "8.0.4") + .HasAnnotation("Relational:MaxIdentifierLength", 64); + + MySqlModelBuilderExtensions.AutoIncrementColumns(modelBuilder); + + modelBuilder.Entity("PortBlog.API.Entities.Academic", b => + { + b.Property("AcademicId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("AcademicId")); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("Degree") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("DegreeSpecialization") + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("EndYear") + .HasColumnType("int"); + + b.Property("Institution") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("ResumeId") + .HasColumnType("int"); + + b.Property("StartYear") + .HasColumnType("int"); + + b.HasKey("AcademicId"); + + b.HasIndex("ResumeId"); + + b.ToTable("Academics"); + + b.HasData( + new + { + AcademicId = 1, + CreatedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5962), + Degree = "High School", + EndYear = 2007, + Institution = "Pragati Little Public School", + ModifiedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5962), + ResumeId = 1, + StartYear = 2006 + }, + new + { + AcademicId = 2, + CreatedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5965), + Degree = "Intermediate", + DegreeSpecialization = "MPC", + EndYear = 2009, + Institution = "Sri Chaitanya Junior College", + ModifiedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5966), + ResumeId = 1, + StartYear = 2007 + }, + new + { + AcademicId = 3, + CreatedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5968), + Degree = "BTech", + DegreeSpecialization = "ECE", + EndYear = 2013, + Institution = "Kakinada Institute of Technology & Science", + ModifiedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5968), + ResumeId = 1, + StartYear = 2009 + }); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Blog", b => + { + b.Property("BlogUrl") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("Description") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.HasKey("BlogUrl"); + + b.ToTable("Blogs"); + + b.HasData( + new + { + BlogUrl = "https://bangararaju.kottedi.in/blog", + CreatedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6082), + Description = "Your Hub for Tech, DIY, and Innovation", + ModifiedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6082), + Name = "Engineer's Odyssey" + }); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Candidate", b => + { + b.Property("CandidateId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CandidateId")); + + b.Property("Address") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("Avatar") + .HasColumnType("longtext"); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("Dob") + .HasColumnType("datetime(6)"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.Property("Gender") + .HasColumnType("longtext"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("Phone") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("varchar(20)"); + + b.HasKey("CandidateId"); + + b.ToTable("Candidates"); + + b.HasData( + new + { + CandidateId = 1, + Address = "Samalkot, Andhra Pradesh, India", + CreatedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5737), + Email = "bangararaju.kottedi@gmail.com", + FirstName = "Bangara Raju", + Gender = "Male", + LastName = "Kottedi", + ModifiedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5755), + Phone = "+91 9441212187" + }); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Certification", b => + { + b.Property("CertificationId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CertificationId")); + + b.Property("CertificationLink") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("CertificationName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("ExpiryDate") + .HasColumnType("datetime(6)"); + + b.Property("IssueDate") + .HasColumnType("datetime(6)"); + + b.Property("IssuingOrganization") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("ResumeId") + .HasColumnType("int"); + + b.HasKey("CertificationId"); + + b.HasIndex("ResumeId"); + + b.ToTable("Certifications"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.ClientLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("ClientIp") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("ClientLocation") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("SiteName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.Property("SiteUrl") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.HasKey("Id"); + + b.ToTable("ClientLogs"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Experience", b => + { + b.Property("ExperienceId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("ExperienceId")); + + b.Property("Company") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("Description") + .HasMaxLength(500) + .HasColumnType("varchar(500)"); + + b.Property("EndDate") + .HasColumnType("datetime(6)"); + + b.Property("Location") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("ResumeId") + .HasColumnType("int"); + + b.Property("StartDate") + .HasColumnType("datetime(6)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.HasKey("ExperienceId"); + + b.HasIndex("ResumeId"); + + b.ToTable("Experiences"); + + b.HasData( + new + { + ExperienceId = 1, + Company = "Agility E Services", + CreatedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6140), + Description = "", + EndDate = new DateTime(2016, 4, 25, 0, 0, 0, 0, DateTimeKind.Unspecified), + Location = "Hyderabad", + ModifiedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6141), + ResumeId = 1, + StartDate = new DateTime(2015, 9, 2, 0, 0, 0, 0, DateTimeKind.Unspecified), + Title = "Jr. Software Engineer" + }, + new + { + ExperienceId = 2, + Company = "Agility", + CreatedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6148), + Description = "", + EndDate = new DateTime(2022, 1, 31, 0, 0, 0, 0, DateTimeKind.Unspecified), + Location = "Kuwait", + ModifiedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6148), + ResumeId = 1, + StartDate = new DateTime(2016, 5, 12, 0, 0, 0, 0, DateTimeKind.Unspecified), + Title = "Web Developer" + }, + new + { + ExperienceId = 3, + Company = "Agility", + CreatedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6151), + Description = "", + EndDate = new DateTime(2022, 10, 31, 0, 0, 0, 0, DateTimeKind.Unspecified), + Location = "Kuwait", + ModifiedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6151), + ResumeId = 1, + StartDate = new DateTime(2022, 2, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + Title = "Senior Web Developer" + }, + new + { + ExperienceId = 4, + Company = "Agility E Services", + CreatedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6154), + Description = "", + EndDate = new DateTime(2024, 4, 12, 0, 0, 0, 0, DateTimeKind.Unspecified), + Location = "Hyderabad", + ModifiedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6154), + ResumeId = 1, + StartDate = new DateTime(2022, 11, 4, 0, 0, 0, 0, DateTimeKind.Unspecified), + Title = "Technology Specialist" + }); + }); + + modelBuilder.Entity("PortBlog.API.Entities.ExperienceDetails", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("Details") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("varchar(500)"); + + b.Property("ExperienceId") + .HasColumnType("int"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("Order") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ExperienceId"); + + b.ToTable("ExperienceDetails"); + + b.HasData( + new + { + Id = 1, + CreatedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6175), + 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, + ModifiedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6175), + Order = 1 + }, + new + { + Id = 2, + CreatedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6178), + 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, + ModifiedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6179), + Order = 2 + }, + new + { + Id = 3, + CreatedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6180), + 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, + ModifiedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6180), + Order = 1 + }, + new + { + Id = 4, + CreatedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6181), + 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, + ModifiedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6182), + Order = 2 + }, + new + { + Id = 5, + CreatedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6183), + 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, + ModifiedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6183), + Order = 1 + }, + new + { + Id = 6, + CreatedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6185), + 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, + ModifiedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6185), + Order = 2 + }, + new + { + Id = 7, + CreatedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6186), + 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, + ModifiedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6186), + Order = 1 + }, + new + { + Id = 8, + CreatedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6187), + 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, + ModifiedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6188), + Order = 2 + }); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Hobby", b => + { + b.Property("HobbyId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("HobbyId")); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("varchar(500)"); + + b.Property("Icon") + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("Order") + .HasColumnType("int"); + + b.Property("ResumeId") + .HasColumnType("int"); + + b.HasKey("HobbyId"); + + b.HasIndex("ResumeId"); + + b.ToTable("Hobbies"); + + b.HasData( + new + { + HobbyId = 1, + CreatedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5930), + Description = "Crafting Professional-Quality Websites with Precision", + Icon = "fa-square-terminal", + ModifiedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5930), + Name = "Web Development", + Order = 1, + ResumeId = 1 + }, + new + { + HobbyId = 2, + CreatedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5934), + Description = "Streamlining and Simplifying Complex Tasks through Automation", + Icon = "fa-robot", + ModifiedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5935), + Name = "Automation", + Order = 2, + ResumeId = 1 + }, + new + { + HobbyId = 3, + CreatedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5937), + Description = "Sharing the knowledge and insights I’ve gathered along my journey", + Icon = "fa-typewriter", + ModifiedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5937), + Name = "Blogging", + Order = 3, + ResumeId = 1 + }, + new + { + HobbyId = 4, + CreatedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5938), + Description = "Cultivating Nature's Beauty and Bounty", + Icon = "fa-seedling", + ModifiedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5939), + Name = "Gardening", + Order = 4, + ResumeId = 1 + }); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Message", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Content") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("varchar(500)"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.Property("Subject") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.HasKey("Id"); + + b.ToTable("Messages"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.MessageStatusLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("MessageId") + .HasColumnType("int"); + + b.Property("Status") + .IsRequired() + .HasMaxLength(10) + .HasColumnType("varchar(10)"); + + b.HasKey("Id"); + + b.HasIndex("MessageId"); + + b.ToTable("MessageStatusLogs"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Post", b => + { + b.Property("PostId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("PostId")); + + b.Property("Author") + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("BlogUrl") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("Category") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("Comments") + .HasColumnType("int"); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("Image") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("Likes") + .HasColumnType("int"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("PostUrl") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("Slug") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("Views") + .HasColumnType("int"); + + b.HasKey("PostId"); + + b.HasIndex("BlogUrl"); + + b.ToTable("Posts"); + + b.HasData( + new + { + PostId = 1, + BlogUrl = "https://bangararaju.kottedi.in/blog", + Category = "Welcome", + Comments = 0, + CreatedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6107), + Description = "Hello World", + Likes = 0, + ModifiedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6104), + PostUrl = "https://bangararaju.kottedi.in/blog/hello-world", + Slug = "hello-world", + Title = "Hello World", + Views = 0 + }, + new + { + PostId = 2, + BlogUrl = "https://bangararaju.kottedi.in/blog", + Category = "Welcome", + Comments = 0, + CreatedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6112), + Description = "Hello World", + Likes = 0, + ModifiedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6111), + PostUrl = "https://bangararaju.kottedi.in/blog/hello-world", + Slug = "hello-world", + Title = "Hello World", + Views = 0 + }, + new + { + PostId = 3, + BlogUrl = "https://bangararaju.kottedi.in/blog", + Category = "Welcome", + Comments = 0, + CreatedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6115), + Description = "Hello World", + Likes = 0, + ModifiedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6114), + PostUrl = "https://bangararaju.kottedi.in/blog/hello-world", + Slug = "hello-world", + Title = "Hello World", + Views = 0 + }); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Project", b => + { + b.Property("ProjectId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("ProjectId")); + + b.Property("Category") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("Challenges") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("varchar(500)"); + + b.Property("EndDate") + .HasColumnType("datetime(6)"); + + b.Property("ImagePath") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("Impact") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("LessonsLearned") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("Responsibilities") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("ResumeId") + .HasColumnType("int"); + + b.Property("Roles") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("StartDate") + .HasColumnType("datetime(6)"); + + b.Property("Status") + .HasMaxLength(20) + .HasColumnType("varchar(20)"); + + b.Property("TechnologiesUsed") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.HasKey("ProjectId"); + + b.HasIndex("ResumeId"); + + b.ToTable("Projects"); + + b.HasData( + new + { + ProjectId = 1, + Category = "Web Development", + CreatedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6022), + Description = "Business Process Management", + ImagePath = "", + ModifiedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6022), + Name = "Transfora (Business Process Management)", + Responsibilities = "Developing, Testing, Support", + ResumeId = 1, + Roles = "Coding, Reviewing, Testing", + TechnologiesUsed = ".NET, Angular" + }, + new + { + ProjectId = 2, + Category = "Web Development", + CreatedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6027), + Description = "Business Process Management", + ImagePath = "", + ModifiedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6027), + Name = "Transfora (Business Process Management)", + Responsibilities = "Developing, Testing, Support", + ResumeId = 1, + Roles = "Coding, Reviewing, Testing", + TechnologiesUsed = ".NET, Angular" + }, + new + { + ProjectId = 3, + Category = "Web Development", + CreatedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6030), + Description = "Business Process Management", + ImagePath = "", + ModifiedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6030), + Name = "Transfora (Business Process Management)", + Responsibilities = "Developing, Testing, Support", + ResumeId = 1, + Roles = "Coding, Reviewing, Testing", + TechnologiesUsed = ".NET, Angular" + }); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Resume", b => + { + b.Property("ResumeId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("ResumeId")); + + b.Property("About") + .IsRequired() + .HasMaxLength(1000) + .HasColumnType("varchar(1000)"); + + b.Property("CandidateId") + .HasColumnType("int"); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("Order") + .HasColumnType("int"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.HasKey("ResumeId"); + + b.HasIndex("CandidateId"); + + b.ToTable("Resumes"); + + b.HasData( + new + { + 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.", + CandidateId = 1, + CreatedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5883), + ModifiedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5884), + Order = 1, + Title = "Full Stack Developer" + }); + }); + + modelBuilder.Entity("PortBlog.API.Entities.ResumeFile", b => + { + b.Property("FileId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("FileId")); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("FileFormat") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.Property("FileName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("FilePath") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("ResumeId") + .HasColumnType("int"); + + b.Property("Version") + .HasMaxLength(10) + .HasColumnType("varchar(10)"); + + b.HasKey("FileId"); + + b.HasIndex("ResumeId") + .IsUnique(); + + b.ToTable("Files"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Skill", b => + { + b.Property("SkillId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("SkillId")); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("Description") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.Property("ProficiencyLevel") + .HasColumnType("int"); + + b.Property("ResumeId") + .HasColumnType("int"); + + b.HasKey("SkillId"); + + b.HasIndex("ResumeId"); + + b.ToTable("Skills"); + + b.HasData( + new + { + SkillId = 1, + CreatedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5991), + ModifiedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5992), + Name = "Web Development", + ProficiencyLevel = 80, + ResumeId = 1 + }, + new + { + SkillId = 2, + CreatedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5995), + ModifiedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5996), + Name = "Web Development", + ProficiencyLevel = 80, + ResumeId = 1 + }, + new + { + SkillId = 3, + CreatedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5997), + ModifiedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5998), + Name = "Web Development", + ProficiencyLevel = 80, + ResumeId = 1 + }, + new + { + SkillId = 4, + CreatedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5999), + ModifiedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5999), + Name = "Web Development", + ProficiencyLevel = 80, + ResumeId = 1 + }, + new + { + SkillId = 5, + CreatedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6000), + ModifiedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6001), + Name = "Web Development", + ProficiencyLevel = 80, + ResumeId = 1 + }); + }); + + modelBuilder.Entity("PortBlog.API.Entities.SocialLinks", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("BlogUrl") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("Facebook") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("GitHub") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("Instagram") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("Linkedin") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("PersonalWebsite") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("ResumeId") + .HasColumnType("int"); + + b.Property("Twitter") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.HasKey("Id"); + + b.HasIndex("BlogUrl"); + + b.HasIndex("ResumeId") + .IsUnique(); + + b.ToTable("SocialLinks"); + + b.HasData( + new + { + Id = 1, + BlogUrl = "https://bangararaju.kottedi.in/blog", + CreatedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5909), + GitHub = "https://github.com/rajukottedi", + Linkedin = "https://in.linkedin.com/in/bangara-raju-kottedi-299072109", + ModifiedDate = new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5910), + ResumeId = 1 + }); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Academic", b => + { + b.HasOne("PortBlog.API.Entities.Resume", "Resume") + .WithMany("Academics") + .HasForeignKey("ResumeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Resume"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Certification", b => + { + b.HasOne("PortBlog.API.Entities.Resume", "Resume") + .WithMany("Certifications") + .HasForeignKey("ResumeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Resume"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Experience", b => + { + b.HasOne("PortBlog.API.Entities.Resume", "Resume") + .WithMany("Experiences") + .HasForeignKey("ResumeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Resume"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.ExperienceDetails", b => + { + b.HasOne("PortBlog.API.Entities.Experience", "Experience") + .WithMany("Details") + .HasForeignKey("ExperienceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Experience"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Hobby", b => + { + b.HasOne("PortBlog.API.Entities.Resume", "Resume") + .WithMany("Hobbies") + .HasForeignKey("ResumeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Resume"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.MessageStatusLog", b => + { + b.HasOne("PortBlog.API.Entities.Message", "Message") + .WithMany() + .HasForeignKey("MessageId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Message"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Post", b => + { + b.HasOne("PortBlog.API.Entities.Blog", "Blog") + .WithMany("Posts") + .HasForeignKey("BlogUrl") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Blog"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Project", b => + { + b.HasOne("PortBlog.API.Entities.Resume", "Resume") + .WithMany("Projects") + .HasForeignKey("ResumeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Resume"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Resume", b => + { + b.HasOne("PortBlog.API.Entities.Candidate", "Candidate") + .WithMany("Resumes") + .HasForeignKey("CandidateId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Candidate"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.ResumeFile", b => + { + b.HasOne("PortBlog.API.Entities.Resume", "Resume") + .WithOne("ResumeFile") + .HasForeignKey("PortBlog.API.Entities.ResumeFile", "ResumeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Resume"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Skill", b => + { + b.HasOne("PortBlog.API.Entities.Resume", "Resume") + .WithMany("Skills") + .HasForeignKey("ResumeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Resume"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.SocialLinks", b => + { + b.HasOne("PortBlog.API.Entities.Blog", "Blog") + .WithMany() + .HasForeignKey("BlogUrl"); + + b.HasOne("PortBlog.API.Entities.Resume", "Resume") + .WithOne("SocialLinks") + .HasForeignKey("PortBlog.API.Entities.SocialLinks", "ResumeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Blog"); + + b.Navigation("Resume"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Blog", b => + { + b.Navigation("Posts"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Candidate", b => + { + b.Navigation("Resumes"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Experience", b => + { + b.Navigation("Details"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Resume", b => + { + b.Navigation("Academics"); + + b.Navigation("Certifications"); + + b.Navigation("Experiences"); + + b.Navigation("Hobbies"); + + b.Navigation("Projects"); + + b.Navigation("ResumeFile"); + + b.Navigation("Skills"); + + b.Navigation("SocialLinks"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/PortBlog.API/Migrations/20240425191634_AddDobToCandidate.cs b/PortBlog.API/Migrations/20240425191634_AddDobToCandidate.cs new file mode 100644 index 0000000..4aac15c --- /dev/null +++ b/PortBlog.API/Migrations/20240425191634_AddDobToCandidate.cs @@ -0,0 +1,505 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace PortBlog.API.Migrations +{ + /// + public partial class AddDobToCandidate : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "Dob", + table: "Candidates", + type: "datetime(6)", + nullable: true); + + migrationBuilder.UpdateData( + table: "Academics", + keyColumn: "AcademicId", + keyValue: 1, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5962), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5962) }); + + migrationBuilder.UpdateData( + table: "Academics", + keyColumn: "AcademicId", + keyValue: 2, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5965), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5966) }); + + migrationBuilder.UpdateData( + table: "Academics", + keyColumn: "AcademicId", + keyValue: 3, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5968), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5968) }); + + migrationBuilder.UpdateData( + table: "Blogs", + keyColumn: "BlogUrl", + keyValue: "https://bangararaju.kottedi.in/blog", + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6082), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6082) }); + + migrationBuilder.UpdateData( + table: "Candidates", + keyColumn: "CandidateId", + keyValue: 1, + columns: new[] { "CreatedDate", "Dob", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5737), null, new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5755) }); + + migrationBuilder.UpdateData( + table: "ExperienceDetails", + keyColumn: "Id", + keyValue: 1, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6175), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6175) }); + + migrationBuilder.UpdateData( + table: "ExperienceDetails", + keyColumn: "Id", + keyValue: 2, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6178), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6179) }); + + migrationBuilder.UpdateData( + table: "ExperienceDetails", + keyColumn: "Id", + keyValue: 3, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6180), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6180) }); + + migrationBuilder.UpdateData( + table: "ExperienceDetails", + keyColumn: "Id", + keyValue: 4, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6181), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6182) }); + + migrationBuilder.UpdateData( + table: "ExperienceDetails", + keyColumn: "Id", + keyValue: 5, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6183), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6183) }); + + migrationBuilder.UpdateData( + table: "ExperienceDetails", + keyColumn: "Id", + keyValue: 6, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6185), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6185) }); + + migrationBuilder.UpdateData( + table: "ExperienceDetails", + keyColumn: "Id", + keyValue: 7, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6186), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6186) }); + + migrationBuilder.UpdateData( + table: "ExperienceDetails", + keyColumn: "Id", + keyValue: 8, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6187), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6188) }); + + migrationBuilder.UpdateData( + table: "Experiences", + keyColumn: "ExperienceId", + keyValue: 1, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6140), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6141) }); + + migrationBuilder.UpdateData( + table: "Experiences", + keyColumn: "ExperienceId", + keyValue: 2, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6148), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6148) }); + + migrationBuilder.UpdateData( + table: "Experiences", + keyColumn: "ExperienceId", + keyValue: 3, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6151), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6151) }); + + migrationBuilder.UpdateData( + table: "Experiences", + keyColumn: "ExperienceId", + keyValue: 4, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6154), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6154) }); + + migrationBuilder.UpdateData( + table: "Hobbies", + keyColumn: "HobbyId", + keyValue: 1, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5930), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5930) }); + + migrationBuilder.UpdateData( + table: "Hobbies", + keyColumn: "HobbyId", + keyValue: 2, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5934), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5935) }); + + migrationBuilder.UpdateData( + table: "Hobbies", + keyColumn: "HobbyId", + keyValue: 3, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5937), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5937) }); + + migrationBuilder.UpdateData( + table: "Hobbies", + keyColumn: "HobbyId", + keyValue: 4, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5938), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5939) }); + + migrationBuilder.UpdateData( + table: "Posts", + keyColumn: "PostId", + keyValue: 1, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6107), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6104) }); + + migrationBuilder.UpdateData( + table: "Posts", + keyColumn: "PostId", + keyValue: 2, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6112), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6111) }); + + migrationBuilder.UpdateData( + table: "Posts", + keyColumn: "PostId", + keyValue: 3, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6115), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6114) }); + + migrationBuilder.UpdateData( + table: "Projects", + keyColumn: "ProjectId", + keyValue: 1, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6022), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6022) }); + + migrationBuilder.UpdateData( + table: "Projects", + keyColumn: "ProjectId", + keyValue: 2, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6027), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6027) }); + + migrationBuilder.UpdateData( + table: "Projects", + keyColumn: "ProjectId", + keyValue: 3, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6030), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6030) }); + + migrationBuilder.UpdateData( + table: "Resumes", + keyColumn: "ResumeId", + keyValue: 1, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5883), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5884) }); + + migrationBuilder.UpdateData( + table: "Skills", + keyColumn: "SkillId", + keyValue: 1, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5991), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5992) }); + + migrationBuilder.UpdateData( + table: "Skills", + keyColumn: "SkillId", + keyValue: 2, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5995), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5996) }); + + migrationBuilder.UpdateData( + table: "Skills", + keyColumn: "SkillId", + keyValue: 3, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5997), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5998) }); + + migrationBuilder.UpdateData( + table: "Skills", + keyColumn: "SkillId", + keyValue: 4, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5999), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5999) }); + + migrationBuilder.UpdateData( + table: "Skills", + keyColumn: "SkillId", + keyValue: 5, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6000), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6001) }); + + migrationBuilder.UpdateData( + table: "SocialLinks", + keyColumn: "Id", + keyValue: 1, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5909), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5910) }); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "Dob", + table: "Candidates"); + + migrationBuilder.UpdateData( + table: "Academics", + keyColumn: "AcademicId", + keyValue: 1, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6028), new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6029) }); + + migrationBuilder.UpdateData( + table: "Academics", + keyColumn: "AcademicId", + keyValue: 2, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6032), new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6032) }); + + migrationBuilder.UpdateData( + table: "Academics", + keyColumn: "AcademicId", + keyValue: 3, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6034), new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6035) }); + + migrationBuilder.UpdateData( + table: "Blogs", + keyColumn: "BlogUrl", + keyValue: "https://bangararaju.kottedi.in/blog", + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6122), new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6122) }); + + migrationBuilder.UpdateData( + table: "Candidates", + keyColumn: "CandidateId", + keyValue: 1, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(5678), new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(5692) }); + + migrationBuilder.UpdateData( + table: "ExperienceDetails", + keyColumn: "Id", + keyValue: 1, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6219), new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6219) }); + + migrationBuilder.UpdateData( + table: "ExperienceDetails", + keyColumn: "Id", + keyValue: 2, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6222), new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6223) }); + + migrationBuilder.UpdateData( + table: "ExperienceDetails", + keyColumn: "Id", + keyValue: 3, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6224), new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6224) }); + + migrationBuilder.UpdateData( + table: "ExperienceDetails", + keyColumn: "Id", + keyValue: 4, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6226), new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6226) }); + + migrationBuilder.UpdateData( + table: "ExperienceDetails", + keyColumn: "Id", + keyValue: 5, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6227), new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6228) }); + + migrationBuilder.UpdateData( + table: "ExperienceDetails", + keyColumn: "Id", + keyValue: 6, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6230), new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6230) }); + + migrationBuilder.UpdateData( + table: "ExperienceDetails", + keyColumn: "Id", + keyValue: 7, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6231), new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6231) }); + + migrationBuilder.UpdateData( + table: "ExperienceDetails", + keyColumn: "Id", + keyValue: 8, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6232), new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6233) }); + + migrationBuilder.UpdateData( + table: "Experiences", + keyColumn: "ExperienceId", + keyValue: 1, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6183), new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6183) }); + + migrationBuilder.UpdateData( + table: "Experiences", + keyColumn: "ExperienceId", + keyValue: 2, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6192), new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6192) }); + + migrationBuilder.UpdateData( + table: "Experiences", + keyColumn: "ExperienceId", + keyValue: 3, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6195), new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6195) }); + + migrationBuilder.UpdateData( + table: "Experiences", + keyColumn: "ExperienceId", + keyValue: 4, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6198), new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6198) }); + + migrationBuilder.UpdateData( + table: "Hobbies", + keyColumn: "HobbyId", + keyValue: 1, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(5981), new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(5983) }); + + migrationBuilder.UpdateData( + table: "Hobbies", + keyColumn: "HobbyId", + keyValue: 2, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(5990), new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(5990) }); + + migrationBuilder.UpdateData( + table: "Hobbies", + keyColumn: "HobbyId", + keyValue: 3, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(5992), new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(5993) }); + + migrationBuilder.UpdateData( + table: "Hobbies", + keyColumn: "HobbyId", + keyValue: 4, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(5994), new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(5995) }); + + migrationBuilder.UpdateData( + table: "Posts", + keyColumn: "PostId", + keyValue: 1, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6152), new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6148) }); + + migrationBuilder.UpdateData( + table: "Posts", + keyColumn: "PostId", + keyValue: 2, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6157), new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6155) }); + + migrationBuilder.UpdateData( + table: "Posts", + keyColumn: "PostId", + keyValue: 3, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6160), new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6158) }); + + migrationBuilder.UpdateData( + table: "Projects", + keyColumn: "ProjectId", + keyValue: 1, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6091), new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6091) }); + + migrationBuilder.UpdateData( + table: "Projects", + keyColumn: "ProjectId", + keyValue: 2, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6099), new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6099) }); + + migrationBuilder.UpdateData( + table: "Projects", + keyColumn: "ProjectId", + keyValue: 3, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6101), new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6102) }); + + migrationBuilder.UpdateData( + table: "Resumes", + keyColumn: "ResumeId", + keyValue: 1, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(5849), new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(5849) }); + + migrationBuilder.UpdateData( + table: "Skills", + keyColumn: "SkillId", + keyValue: 1, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6060), new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6061) }); + + migrationBuilder.UpdateData( + table: "Skills", + keyColumn: "SkillId", + keyValue: 2, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6064), new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6064) }); + + migrationBuilder.UpdateData( + table: "Skills", + keyColumn: "SkillId", + keyValue: 3, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6066), new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6066) }); + + migrationBuilder.UpdateData( + table: "Skills", + keyColumn: "SkillId", + keyValue: 4, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6067), new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6068) }); + + migrationBuilder.UpdateData( + table: "Skills", + keyColumn: "SkillId", + keyValue: 5, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6069), new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(6069) }); + + migrationBuilder.UpdateData( + table: "SocialLinks", + keyColumn: "Id", + keyValue: 1, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(5878), new DateTime(2024, 4, 25, 14, 53, 46, 863, DateTimeKind.Local).AddTicks(5878) }); + } + } +} diff --git a/PortBlog.API/Migrations/20240425191821_AddDobData.Designer.cs b/PortBlog.API/Migrations/20240425191821_AddDobData.Designer.cs new file mode 100644 index 0000000..d82a282 --- /dev/null +++ b/PortBlog.API/Migrations/20240425191821_AddDobData.Designer.cs @@ -0,0 +1,1382 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using PortBlog.API.DbContexts; + +#nullable disable + +namespace PortBlog.API.Migrations +{ + [DbContext(typeof(CvBlogContext))] + [Migration("20240425191821_AddDobData")] + partial class AddDobData + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "8.0.4") + .HasAnnotation("Relational:MaxIdentifierLength", 64); + + MySqlModelBuilderExtensions.AutoIncrementColumns(modelBuilder); + + modelBuilder.Entity("PortBlog.API.Entities.Academic", b => + { + b.Property("AcademicId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("AcademicId")); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("Degree") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("DegreeSpecialization") + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("EndYear") + .HasColumnType("int"); + + b.Property("Institution") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("ResumeId") + .HasColumnType("int"); + + b.Property("StartYear") + .HasColumnType("int"); + + b.HasKey("AcademicId"); + + b.HasIndex("ResumeId"); + + b.ToTable("Academics"); + + b.HasData( + new + { + AcademicId = 1, + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(1988), + Degree = "High School", + EndYear = 2007, + Institution = "Pragati Little Public School", + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(1988), + ResumeId = 1, + StartYear = 2006 + }, + new + { + AcademicId = 2, + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(1992), + Degree = "Intermediate", + DegreeSpecialization = "MPC", + EndYear = 2009, + Institution = "Sri Chaitanya Junior College", + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(1992), + ResumeId = 1, + StartYear = 2007 + }, + new + { + AcademicId = 3, + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(1994), + Degree = "BTech", + DegreeSpecialization = "ECE", + EndYear = 2013, + Institution = "Kakinada Institute of Technology & Science", + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(1995), + ResumeId = 1, + StartYear = 2009 + }); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Blog", b => + { + b.Property("BlogUrl") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("Description") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.HasKey("BlogUrl"); + + b.ToTable("Blogs"); + + b.HasData( + new + { + BlogUrl = "https://bangararaju.kottedi.in/blog", + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2101), + Description = "Your Hub for Tech, DIY, and Innovation", + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2101), + Name = "Engineer's Odyssey" + }); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Candidate", b => + { + b.Property("CandidateId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CandidateId")); + + b.Property("Address") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("Avatar") + .HasColumnType("longtext"); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("Dob") + .HasColumnType("datetime(6)"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.Property("Gender") + .HasColumnType("longtext"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("Phone") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("varchar(20)"); + + b.HasKey("CandidateId"); + + b.ToTable("Candidates"); + + b.HasData( + new + { + CandidateId = 1, + Address = "Samalkot, Andhra Pradesh, India", + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(1782), + Dob = new DateTime(1992, 5, 6, 0, 0, 0, 0, DateTimeKind.Unspecified), + Email = "bangararaju.kottedi@gmail.com", + FirstName = "Bangara Raju", + Gender = "Male", + LastName = "Kottedi", + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(1797), + Phone = "+91 9441212187" + }); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Certification", b => + { + b.Property("CertificationId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CertificationId")); + + b.Property("CertificationLink") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("CertificationName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("ExpiryDate") + .HasColumnType("datetime(6)"); + + b.Property("IssueDate") + .HasColumnType("datetime(6)"); + + b.Property("IssuingOrganization") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("ResumeId") + .HasColumnType("int"); + + b.HasKey("CertificationId"); + + b.HasIndex("ResumeId"); + + b.ToTable("Certifications"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.ClientLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("ClientIp") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("ClientLocation") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("SiteName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.Property("SiteUrl") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.HasKey("Id"); + + b.ToTable("ClientLogs"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Experience", b => + { + b.Property("ExperienceId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("ExperienceId")); + + b.Property("Company") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("Description") + .HasMaxLength(500) + .HasColumnType("varchar(500)"); + + b.Property("EndDate") + .HasColumnType("datetime(6)"); + + b.Property("Location") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("ResumeId") + .HasColumnType("int"); + + b.Property("StartDate") + .HasColumnType("datetime(6)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.HasKey("ExperienceId"); + + b.HasIndex("ResumeId"); + + b.ToTable("Experiences"); + + b.HasData( + new + { + ExperienceId = 1, + Company = "Agility E Services", + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2153), + Description = "", + EndDate = new DateTime(2016, 4, 25, 0, 0, 0, 0, DateTimeKind.Unspecified), + Location = "Hyderabad", + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2154), + ResumeId = 1, + StartDate = new DateTime(2015, 9, 2, 0, 0, 0, 0, DateTimeKind.Unspecified), + Title = "Jr. Software Engineer" + }, + new + { + ExperienceId = 2, + Company = "Agility", + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2159), + Description = "", + EndDate = new DateTime(2022, 1, 31, 0, 0, 0, 0, DateTimeKind.Unspecified), + Location = "Kuwait", + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2159), + ResumeId = 1, + StartDate = new DateTime(2016, 5, 12, 0, 0, 0, 0, DateTimeKind.Unspecified), + Title = "Web Developer" + }, + new + { + ExperienceId = 3, + Company = "Agility", + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2162), + Description = "", + EndDate = new DateTime(2022, 10, 31, 0, 0, 0, 0, DateTimeKind.Unspecified), + Location = "Kuwait", + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2163), + ResumeId = 1, + StartDate = new DateTime(2022, 2, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + Title = "Senior Web Developer" + }, + new + { + ExperienceId = 4, + Company = "Agility E Services", + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2165), + Description = "", + EndDate = new DateTime(2024, 4, 12, 0, 0, 0, 0, DateTimeKind.Unspecified), + Location = "Hyderabad", + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2166), + ResumeId = 1, + StartDate = new DateTime(2022, 11, 4, 0, 0, 0, 0, DateTimeKind.Unspecified), + Title = "Technology Specialist" + }); + }); + + modelBuilder.Entity("PortBlog.API.Entities.ExperienceDetails", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("Details") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("varchar(500)"); + + b.Property("ExperienceId") + .HasColumnType("int"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("Order") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ExperienceId"); + + b.ToTable("ExperienceDetails"); + + b.HasData( + new + { + Id = 1, + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2184), + 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, + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2184), + Order = 1 + }, + new + { + Id = 2, + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2187), + 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, + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2188), + Order = 2 + }, + new + { + Id = 3, + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2189), + 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, + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2189), + Order = 1 + }, + new + { + Id = 4, + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2190), + 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, + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2191), + Order = 2 + }, + new + { + Id = 5, + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2192), + 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, + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2192), + Order = 1 + }, + new + { + Id = 6, + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2194), + 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, + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2194), + Order = 2 + }, + new + { + Id = 7, + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2195), + 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, + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2195), + Order = 1 + }, + new + { + Id = 8, + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2196), + 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, + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2197), + Order = 2 + }); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Hobby", b => + { + b.Property("HobbyId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("HobbyId")); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("varchar(500)"); + + b.Property("Icon") + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("Order") + .HasColumnType("int"); + + b.Property("ResumeId") + .HasColumnType("int"); + + b.HasKey("HobbyId"); + + b.HasIndex("ResumeId"); + + b.ToTable("Hobbies"); + + b.HasData( + new + { + HobbyId = 1, + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(1959), + Description = "Crafting Professional-Quality Websites with Precision", + Icon = "fa-square-terminal", + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(1960), + Name = "Web Development", + Order = 1, + ResumeId = 1 + }, + new + { + HobbyId = 2, + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(1964), + Description = "Streamlining and Simplifying Complex Tasks through Automation", + Icon = "fa-robot", + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(1965), + Name = "Automation", + Order = 2, + ResumeId = 1 + }, + new + { + HobbyId = 3, + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(1967), + Description = "Sharing the knowledge and insights I’ve gathered along my journey", + Icon = "fa-typewriter", + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(1967), + Name = "Blogging", + Order = 3, + ResumeId = 1 + }, + new + { + HobbyId = 4, + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(1969), + Description = "Cultivating Nature's Beauty and Bounty", + Icon = "fa-seedling", + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(1969), + Name = "Gardening", + Order = 4, + ResumeId = 1 + }); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Message", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Content") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("varchar(500)"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.Property("Subject") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.HasKey("Id"); + + b.ToTable("Messages"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.MessageStatusLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("MessageId") + .HasColumnType("int"); + + b.Property("Status") + .IsRequired() + .HasMaxLength(10) + .HasColumnType("varchar(10)"); + + b.HasKey("Id"); + + b.HasIndex("MessageId"); + + b.ToTable("MessageStatusLogs"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Post", b => + { + b.Property("PostId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("PostId")); + + b.Property("Author") + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("BlogUrl") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("Category") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("Comments") + .HasColumnType("int"); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("Image") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("Likes") + .HasColumnType("int"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("PostUrl") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("Slug") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("Views") + .HasColumnType("int"); + + b.HasKey("PostId"); + + b.HasIndex("BlogUrl"); + + b.ToTable("Posts"); + + b.HasData( + new + { + PostId = 1, + BlogUrl = "https://bangararaju.kottedi.in/blog", + Category = "Welcome", + Comments = 0, + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2123), + Description = "Hello World", + Likes = 0, + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2120), + PostUrl = "https://bangararaju.kottedi.in/blog/hello-world", + Slug = "hello-world", + Title = "Hello World", + Views = 0 + }, + new + { + PostId = 2, + BlogUrl = "https://bangararaju.kottedi.in/blog", + Category = "Welcome", + Comments = 0, + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2129), + Description = "Hello World", + Likes = 0, + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2128), + PostUrl = "https://bangararaju.kottedi.in/blog/hello-world", + Slug = "hello-world", + Title = "Hello World", + Views = 0 + }, + new + { + PostId = 3, + BlogUrl = "https://bangararaju.kottedi.in/blog", + Category = "Welcome", + Comments = 0, + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2132), + Description = "Hello World", + Likes = 0, + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2131), + PostUrl = "https://bangararaju.kottedi.in/blog/hello-world", + Slug = "hello-world", + Title = "Hello World", + Views = 0 + }); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Project", b => + { + b.Property("ProjectId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("ProjectId")); + + b.Property("Category") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("Challenges") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("varchar(500)"); + + b.Property("EndDate") + .HasColumnType("datetime(6)"); + + b.Property("ImagePath") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("Impact") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("LessonsLearned") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("Responsibilities") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("ResumeId") + .HasColumnType("int"); + + b.Property("Roles") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("StartDate") + .HasColumnType("datetime(6)"); + + b.Property("Status") + .HasMaxLength(20) + .HasColumnType("varchar(20)"); + + b.Property("TechnologiesUsed") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.HasKey("ProjectId"); + + b.HasIndex("ResumeId"); + + b.ToTable("Projects"); + + b.HasData( + new + { + ProjectId = 1, + Category = "Web Development", + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2039), + Description = "Business Process Management", + ImagePath = "", + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2040), + Name = "Transfora (Business Process Management)", + Responsibilities = "Developing, Testing, Support", + ResumeId = 1, + Roles = "Coding, Reviewing, Testing", + TechnologiesUsed = ".NET, Angular" + }, + new + { + ProjectId = 2, + Category = "Web Development", + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2076), + Description = "Business Process Management", + ImagePath = "", + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2076), + Name = "Transfora (Business Process Management)", + Responsibilities = "Developing, Testing, Support", + ResumeId = 1, + Roles = "Coding, Reviewing, Testing", + TechnologiesUsed = ".NET, Angular" + }, + new + { + ProjectId = 3, + Category = "Web Development", + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2078), + Description = "Business Process Management", + ImagePath = "", + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2079), + Name = "Transfora (Business Process Management)", + Responsibilities = "Developing, Testing, Support", + ResumeId = 1, + Roles = "Coding, Reviewing, Testing", + TechnologiesUsed = ".NET, Angular" + }); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Resume", b => + { + b.Property("ResumeId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("ResumeId")); + + b.Property("About") + .IsRequired() + .HasMaxLength(1000) + .HasColumnType("varchar(1000)"); + + b.Property("CandidateId") + .HasColumnType("int"); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("Order") + .HasColumnType("int"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.HasKey("ResumeId"); + + b.HasIndex("CandidateId"); + + b.ToTable("Resumes"); + + b.HasData( + new + { + 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.", + CandidateId = 1, + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(1920), + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(1920), + Order = 1, + Title = "Full Stack Developer" + }); + }); + + modelBuilder.Entity("PortBlog.API.Entities.ResumeFile", b => + { + b.Property("FileId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("FileId")); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("FileFormat") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.Property("FileName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("FilePath") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("ResumeId") + .HasColumnType("int"); + + b.Property("Version") + .HasMaxLength(10) + .HasColumnType("varchar(10)"); + + b.HasKey("FileId"); + + b.HasIndex("ResumeId") + .IsUnique(); + + b.ToTable("Files"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Skill", b => + { + b.Property("SkillId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("SkillId")); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("Description") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.Property("ProficiencyLevel") + .HasColumnType("int"); + + b.Property("ResumeId") + .HasColumnType("int"); + + b.HasKey("SkillId"); + + b.HasIndex("ResumeId"); + + b.ToTable("Skills"); + + b.HasData( + new + { + SkillId = 1, + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2012), + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2013), + Name = "Web Development", + ProficiencyLevel = 80, + ResumeId = 1 + }, + new + { + SkillId = 2, + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2016), + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2017), + Name = "Web Development", + ProficiencyLevel = 80, + ResumeId = 1 + }, + new + { + SkillId = 3, + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2018), + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2018), + Name = "Web Development", + ProficiencyLevel = 80, + ResumeId = 1 + }, + new + { + SkillId = 4, + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2020), + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2020), + Name = "Web Development", + ProficiencyLevel = 80, + ResumeId = 1 + }, + new + { + SkillId = 5, + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2021), + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2021), + Name = "Web Development", + ProficiencyLevel = 80, + ResumeId = 1 + }); + }); + + modelBuilder.Entity("PortBlog.API.Entities.SocialLinks", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("BlogUrl") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("Facebook") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("GitHub") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("Instagram") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("Linkedin") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("PersonalWebsite") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("ResumeId") + .HasColumnType("int"); + + b.Property("Twitter") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.HasKey("Id"); + + b.HasIndex("BlogUrl"); + + b.HasIndex("ResumeId") + .IsUnique(); + + b.ToTable("SocialLinks"); + + b.HasData( + new + { + Id = 1, + BlogUrl = "https://bangararaju.kottedi.in/blog", + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(1939), + GitHub = "https://github.com/rajukottedi", + Linkedin = "https://in.linkedin.com/in/bangara-raju-kottedi-299072109", + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(1940), + ResumeId = 1 + }); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Academic", b => + { + b.HasOne("PortBlog.API.Entities.Resume", "Resume") + .WithMany("Academics") + .HasForeignKey("ResumeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Resume"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Certification", b => + { + b.HasOne("PortBlog.API.Entities.Resume", "Resume") + .WithMany("Certifications") + .HasForeignKey("ResumeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Resume"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Experience", b => + { + b.HasOne("PortBlog.API.Entities.Resume", "Resume") + .WithMany("Experiences") + .HasForeignKey("ResumeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Resume"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.ExperienceDetails", b => + { + b.HasOne("PortBlog.API.Entities.Experience", "Experience") + .WithMany("Details") + .HasForeignKey("ExperienceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Experience"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Hobby", b => + { + b.HasOne("PortBlog.API.Entities.Resume", "Resume") + .WithMany("Hobbies") + .HasForeignKey("ResumeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Resume"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.MessageStatusLog", b => + { + b.HasOne("PortBlog.API.Entities.Message", "Message") + .WithMany() + .HasForeignKey("MessageId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Message"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Post", b => + { + b.HasOne("PortBlog.API.Entities.Blog", "Blog") + .WithMany("Posts") + .HasForeignKey("BlogUrl") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Blog"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Project", b => + { + b.HasOne("PortBlog.API.Entities.Resume", "Resume") + .WithMany("Projects") + .HasForeignKey("ResumeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Resume"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Resume", b => + { + b.HasOne("PortBlog.API.Entities.Candidate", "Candidate") + .WithMany("Resumes") + .HasForeignKey("CandidateId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Candidate"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.ResumeFile", b => + { + b.HasOne("PortBlog.API.Entities.Resume", "Resume") + .WithOne("ResumeFile") + .HasForeignKey("PortBlog.API.Entities.ResumeFile", "ResumeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Resume"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Skill", b => + { + b.HasOne("PortBlog.API.Entities.Resume", "Resume") + .WithMany("Skills") + .HasForeignKey("ResumeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Resume"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.SocialLinks", b => + { + b.HasOne("PortBlog.API.Entities.Blog", "Blog") + .WithMany() + .HasForeignKey("BlogUrl"); + + b.HasOne("PortBlog.API.Entities.Resume", "Resume") + .WithOne("SocialLinks") + .HasForeignKey("PortBlog.API.Entities.SocialLinks", "ResumeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Blog"); + + b.Navigation("Resume"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Blog", b => + { + b.Navigation("Posts"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Candidate", b => + { + b.Navigation("Resumes"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Experience", b => + { + b.Navigation("Details"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Resume", b => + { + b.Navigation("Academics"); + + b.Navigation("Certifications"); + + b.Navigation("Experiences"); + + b.Navigation("Hobbies"); + + b.Navigation("Projects"); + + b.Navigation("ResumeFile"); + + b.Navigation("Skills"); + + b.Navigation("SocialLinks"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/PortBlog.API/Migrations/20240425191821_AddDobData.cs b/PortBlog.API/Migrations/20240425191821_AddDobData.cs new file mode 100644 index 0000000..8401124 --- /dev/null +++ b/PortBlog.API/Migrations/20240425191821_AddDobData.cs @@ -0,0 +1,495 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace PortBlog.API.Migrations +{ + /// + public partial class AddDobData : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.UpdateData( + table: "Academics", + keyColumn: "AcademicId", + keyValue: 1, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(1988), new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(1988) }); + + migrationBuilder.UpdateData( + table: "Academics", + keyColumn: "AcademicId", + keyValue: 2, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(1992), new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(1992) }); + + migrationBuilder.UpdateData( + table: "Academics", + keyColumn: "AcademicId", + keyValue: 3, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(1994), new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(1995) }); + + migrationBuilder.UpdateData( + table: "Blogs", + keyColumn: "BlogUrl", + keyValue: "https://bangararaju.kottedi.in/blog", + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2101), new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2101) }); + + migrationBuilder.UpdateData( + table: "Candidates", + keyColumn: "CandidateId", + keyValue: 1, + columns: new[] { "CreatedDate", "Dob", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(1782), new DateTime(1992, 5, 6, 0, 0, 0, 0, DateTimeKind.Unspecified), new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(1797) }); + + migrationBuilder.UpdateData( + table: "ExperienceDetails", + keyColumn: "Id", + keyValue: 1, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2184), new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2184) }); + + migrationBuilder.UpdateData( + table: "ExperienceDetails", + keyColumn: "Id", + keyValue: 2, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2187), new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2188) }); + + migrationBuilder.UpdateData( + table: "ExperienceDetails", + keyColumn: "Id", + keyValue: 3, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2189), new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2189) }); + + migrationBuilder.UpdateData( + table: "ExperienceDetails", + keyColumn: "Id", + keyValue: 4, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2190), new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2191) }); + + migrationBuilder.UpdateData( + table: "ExperienceDetails", + keyColumn: "Id", + keyValue: 5, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2192), new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2192) }); + + migrationBuilder.UpdateData( + table: "ExperienceDetails", + keyColumn: "Id", + keyValue: 6, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2194), new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2194) }); + + migrationBuilder.UpdateData( + table: "ExperienceDetails", + keyColumn: "Id", + keyValue: 7, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2195), new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2195) }); + + migrationBuilder.UpdateData( + table: "ExperienceDetails", + keyColumn: "Id", + keyValue: 8, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2196), new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2197) }); + + migrationBuilder.UpdateData( + table: "Experiences", + keyColumn: "ExperienceId", + keyValue: 1, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2153), new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2154) }); + + migrationBuilder.UpdateData( + table: "Experiences", + keyColumn: "ExperienceId", + keyValue: 2, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2159), new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2159) }); + + migrationBuilder.UpdateData( + table: "Experiences", + keyColumn: "ExperienceId", + keyValue: 3, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2162), new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2163) }); + + migrationBuilder.UpdateData( + table: "Experiences", + keyColumn: "ExperienceId", + keyValue: 4, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2165), new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2166) }); + + migrationBuilder.UpdateData( + table: "Hobbies", + keyColumn: "HobbyId", + keyValue: 1, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(1959), new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(1960) }); + + migrationBuilder.UpdateData( + table: "Hobbies", + keyColumn: "HobbyId", + keyValue: 2, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(1964), new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(1965) }); + + migrationBuilder.UpdateData( + table: "Hobbies", + keyColumn: "HobbyId", + keyValue: 3, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(1967), new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(1967) }); + + migrationBuilder.UpdateData( + table: "Hobbies", + keyColumn: "HobbyId", + keyValue: 4, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(1969), new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(1969) }); + + migrationBuilder.UpdateData( + table: "Posts", + keyColumn: "PostId", + keyValue: 1, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2123), new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2120) }); + + migrationBuilder.UpdateData( + table: "Posts", + keyColumn: "PostId", + keyValue: 2, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2129), new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2128) }); + + migrationBuilder.UpdateData( + table: "Posts", + keyColumn: "PostId", + keyValue: 3, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2132), new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2131) }); + + migrationBuilder.UpdateData( + table: "Projects", + keyColumn: "ProjectId", + keyValue: 1, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2039), new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2040) }); + + migrationBuilder.UpdateData( + table: "Projects", + keyColumn: "ProjectId", + keyValue: 2, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2076), new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2076) }); + + migrationBuilder.UpdateData( + table: "Projects", + keyColumn: "ProjectId", + keyValue: 3, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2078), new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2079) }); + + migrationBuilder.UpdateData( + table: "Resumes", + keyColumn: "ResumeId", + keyValue: 1, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(1920), new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(1920) }); + + migrationBuilder.UpdateData( + table: "Skills", + keyColumn: "SkillId", + keyValue: 1, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2012), new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2013) }); + + migrationBuilder.UpdateData( + table: "Skills", + keyColumn: "SkillId", + keyValue: 2, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2016), new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2017) }); + + migrationBuilder.UpdateData( + table: "Skills", + keyColumn: "SkillId", + keyValue: 3, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2018), new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2018) }); + + migrationBuilder.UpdateData( + table: "Skills", + keyColumn: "SkillId", + keyValue: 4, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2020), new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2020) }); + + migrationBuilder.UpdateData( + table: "Skills", + keyColumn: "SkillId", + keyValue: 5, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2021), new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2021) }); + + migrationBuilder.UpdateData( + table: "SocialLinks", + keyColumn: "Id", + keyValue: 1, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(1939), new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(1940) }); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.UpdateData( + table: "Academics", + keyColumn: "AcademicId", + keyValue: 1, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5962), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5962) }); + + migrationBuilder.UpdateData( + table: "Academics", + keyColumn: "AcademicId", + keyValue: 2, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5965), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5966) }); + + migrationBuilder.UpdateData( + table: "Academics", + keyColumn: "AcademicId", + keyValue: 3, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5968), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5968) }); + + migrationBuilder.UpdateData( + table: "Blogs", + keyColumn: "BlogUrl", + keyValue: "https://bangararaju.kottedi.in/blog", + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6082), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6082) }); + + migrationBuilder.UpdateData( + table: "Candidates", + keyColumn: "CandidateId", + keyValue: 1, + columns: new[] { "CreatedDate", "Dob", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5737), null, new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5755) }); + + migrationBuilder.UpdateData( + table: "ExperienceDetails", + keyColumn: "Id", + keyValue: 1, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6175), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6175) }); + + migrationBuilder.UpdateData( + table: "ExperienceDetails", + keyColumn: "Id", + keyValue: 2, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6178), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6179) }); + + migrationBuilder.UpdateData( + table: "ExperienceDetails", + keyColumn: "Id", + keyValue: 3, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6180), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6180) }); + + migrationBuilder.UpdateData( + table: "ExperienceDetails", + keyColumn: "Id", + keyValue: 4, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6181), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6182) }); + + migrationBuilder.UpdateData( + table: "ExperienceDetails", + keyColumn: "Id", + keyValue: 5, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6183), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6183) }); + + migrationBuilder.UpdateData( + table: "ExperienceDetails", + keyColumn: "Id", + keyValue: 6, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6185), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6185) }); + + migrationBuilder.UpdateData( + table: "ExperienceDetails", + keyColumn: "Id", + keyValue: 7, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6186), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6186) }); + + migrationBuilder.UpdateData( + table: "ExperienceDetails", + keyColumn: "Id", + keyValue: 8, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6187), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6188) }); + + migrationBuilder.UpdateData( + table: "Experiences", + keyColumn: "ExperienceId", + keyValue: 1, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6140), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6141) }); + + migrationBuilder.UpdateData( + table: "Experiences", + keyColumn: "ExperienceId", + keyValue: 2, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6148), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6148) }); + + migrationBuilder.UpdateData( + table: "Experiences", + keyColumn: "ExperienceId", + keyValue: 3, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6151), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6151) }); + + migrationBuilder.UpdateData( + table: "Experiences", + keyColumn: "ExperienceId", + keyValue: 4, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6154), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6154) }); + + migrationBuilder.UpdateData( + table: "Hobbies", + keyColumn: "HobbyId", + keyValue: 1, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5930), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5930) }); + + migrationBuilder.UpdateData( + table: "Hobbies", + keyColumn: "HobbyId", + keyValue: 2, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5934), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5935) }); + + migrationBuilder.UpdateData( + table: "Hobbies", + keyColumn: "HobbyId", + keyValue: 3, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5937), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5937) }); + + migrationBuilder.UpdateData( + table: "Hobbies", + keyColumn: "HobbyId", + keyValue: 4, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5938), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5939) }); + + migrationBuilder.UpdateData( + table: "Posts", + keyColumn: "PostId", + keyValue: 1, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6107), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6104) }); + + migrationBuilder.UpdateData( + table: "Posts", + keyColumn: "PostId", + keyValue: 2, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6112), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6111) }); + + migrationBuilder.UpdateData( + table: "Posts", + keyColumn: "PostId", + keyValue: 3, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6115), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6114) }); + + migrationBuilder.UpdateData( + table: "Projects", + keyColumn: "ProjectId", + keyValue: 1, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6022), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6022) }); + + migrationBuilder.UpdateData( + table: "Projects", + keyColumn: "ProjectId", + keyValue: 2, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6027), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6027) }); + + migrationBuilder.UpdateData( + table: "Projects", + keyColumn: "ProjectId", + keyValue: 3, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6030), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6030) }); + + migrationBuilder.UpdateData( + table: "Resumes", + keyColumn: "ResumeId", + keyValue: 1, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5883), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5884) }); + + migrationBuilder.UpdateData( + table: "Skills", + keyColumn: "SkillId", + keyValue: 1, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5991), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5992) }); + + migrationBuilder.UpdateData( + table: "Skills", + keyColumn: "SkillId", + keyValue: 2, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5995), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5996) }); + + migrationBuilder.UpdateData( + table: "Skills", + keyColumn: "SkillId", + keyValue: 3, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5997), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5998) }); + + migrationBuilder.UpdateData( + table: "Skills", + keyColumn: "SkillId", + keyValue: 4, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5999), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5999) }); + + migrationBuilder.UpdateData( + table: "Skills", + keyColumn: "SkillId", + keyValue: 5, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6000), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(6001) }); + + migrationBuilder.UpdateData( + table: "SocialLinks", + keyColumn: "Id", + keyValue: 1, + columns: new[] { "CreatedDate", "ModifiedDate" }, + values: new object[] { new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5909), new DateTime(2024, 4, 26, 0, 46, 33, 130, DateTimeKind.Local).AddTicks(5910) }); + } + } +} diff --git a/PortBlog.API/Migrations/CvBlogContextModelSnapshot.cs b/PortBlog.API/Migrations/CvBlogContextModelSnapshot.cs new file mode 100644 index 0000000..c7d78ef --- /dev/null +++ b/PortBlog.API/Migrations/CvBlogContextModelSnapshot.cs @@ -0,0 +1,1379 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using PortBlog.API.DbContexts; + +#nullable disable + +namespace PortBlog.API.Migrations +{ + [DbContext(typeof(CvBlogContext))] + partial class CvBlogContextModelSnapshot : ModelSnapshot + { + protected override void BuildModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "8.0.4") + .HasAnnotation("Relational:MaxIdentifierLength", 64); + + MySqlModelBuilderExtensions.AutoIncrementColumns(modelBuilder); + + modelBuilder.Entity("PortBlog.API.Entities.Academic", b => + { + b.Property("AcademicId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("AcademicId")); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("Degree") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("DegreeSpecialization") + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("EndYear") + .HasColumnType("int"); + + b.Property("Institution") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("ResumeId") + .HasColumnType("int"); + + b.Property("StartYear") + .HasColumnType("int"); + + b.HasKey("AcademicId"); + + b.HasIndex("ResumeId"); + + b.ToTable("Academics"); + + b.HasData( + new + { + AcademicId = 1, + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(1988), + Degree = "High School", + EndYear = 2007, + Institution = "Pragati Little Public School", + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(1988), + ResumeId = 1, + StartYear = 2006 + }, + new + { + AcademicId = 2, + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(1992), + Degree = "Intermediate", + DegreeSpecialization = "MPC", + EndYear = 2009, + Institution = "Sri Chaitanya Junior College", + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(1992), + ResumeId = 1, + StartYear = 2007 + }, + new + { + AcademicId = 3, + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(1994), + Degree = "BTech", + DegreeSpecialization = "ECE", + EndYear = 2013, + Institution = "Kakinada Institute of Technology & Science", + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(1995), + ResumeId = 1, + StartYear = 2009 + }); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Blog", b => + { + b.Property("BlogUrl") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("Description") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.HasKey("BlogUrl"); + + b.ToTable("Blogs"); + + b.HasData( + new + { + BlogUrl = "https://bangararaju.kottedi.in/blog", + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2101), + Description = "Your Hub for Tech, DIY, and Innovation", + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2101), + Name = "Engineer's Odyssey" + }); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Candidate", b => + { + b.Property("CandidateId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CandidateId")); + + b.Property("Address") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("Avatar") + .HasColumnType("longtext"); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("Dob") + .HasColumnType("datetime(6)"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.Property("Gender") + .HasColumnType("longtext"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("Phone") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("varchar(20)"); + + b.HasKey("CandidateId"); + + b.ToTable("Candidates"); + + b.HasData( + new + { + CandidateId = 1, + Address = "Samalkot, Andhra Pradesh, India", + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(1782), + Dob = new DateTime(1992, 5, 6, 0, 0, 0, 0, DateTimeKind.Unspecified), + Email = "bangararaju.kottedi@gmail.com", + FirstName = "Bangara Raju", + Gender = "Male", + LastName = "Kottedi", + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(1797), + Phone = "+91 9441212187" + }); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Certification", b => + { + b.Property("CertificationId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("CertificationId")); + + b.Property("CertificationLink") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("CertificationName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("ExpiryDate") + .HasColumnType("datetime(6)"); + + b.Property("IssueDate") + .HasColumnType("datetime(6)"); + + b.Property("IssuingOrganization") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("ResumeId") + .HasColumnType("int"); + + b.HasKey("CertificationId"); + + b.HasIndex("ResumeId"); + + b.ToTable("Certifications"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.ClientLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("ClientIp") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("ClientLocation") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("SiteName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.Property("SiteUrl") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.HasKey("Id"); + + b.ToTable("ClientLogs"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Experience", b => + { + b.Property("ExperienceId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("ExperienceId")); + + b.Property("Company") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("Description") + .HasMaxLength(500) + .HasColumnType("varchar(500)"); + + b.Property("EndDate") + .HasColumnType("datetime(6)"); + + b.Property("Location") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("ResumeId") + .HasColumnType("int"); + + b.Property("StartDate") + .HasColumnType("datetime(6)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.HasKey("ExperienceId"); + + b.HasIndex("ResumeId"); + + b.ToTable("Experiences"); + + b.HasData( + new + { + ExperienceId = 1, + Company = "Agility E Services", + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2153), + Description = "", + EndDate = new DateTime(2016, 4, 25, 0, 0, 0, 0, DateTimeKind.Unspecified), + Location = "Hyderabad", + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2154), + ResumeId = 1, + StartDate = new DateTime(2015, 9, 2, 0, 0, 0, 0, DateTimeKind.Unspecified), + Title = "Jr. Software Engineer" + }, + new + { + ExperienceId = 2, + Company = "Agility", + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2159), + Description = "", + EndDate = new DateTime(2022, 1, 31, 0, 0, 0, 0, DateTimeKind.Unspecified), + Location = "Kuwait", + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2159), + ResumeId = 1, + StartDate = new DateTime(2016, 5, 12, 0, 0, 0, 0, DateTimeKind.Unspecified), + Title = "Web Developer" + }, + new + { + ExperienceId = 3, + Company = "Agility", + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2162), + Description = "", + EndDate = new DateTime(2022, 10, 31, 0, 0, 0, 0, DateTimeKind.Unspecified), + Location = "Kuwait", + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2163), + ResumeId = 1, + StartDate = new DateTime(2022, 2, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + Title = "Senior Web Developer" + }, + new + { + ExperienceId = 4, + Company = "Agility E Services", + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2165), + Description = "", + EndDate = new DateTime(2024, 4, 12, 0, 0, 0, 0, DateTimeKind.Unspecified), + Location = "Hyderabad", + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2166), + ResumeId = 1, + StartDate = new DateTime(2022, 11, 4, 0, 0, 0, 0, DateTimeKind.Unspecified), + Title = "Technology Specialist" + }); + }); + + modelBuilder.Entity("PortBlog.API.Entities.ExperienceDetails", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("Details") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("varchar(500)"); + + b.Property("ExperienceId") + .HasColumnType("int"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("Order") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ExperienceId"); + + b.ToTable("ExperienceDetails"); + + b.HasData( + new + { + Id = 1, + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2184), + 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, + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2184), + Order = 1 + }, + new + { + Id = 2, + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2187), + 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, + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2188), + Order = 2 + }, + new + { + Id = 3, + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2189), + 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, + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2189), + Order = 1 + }, + new + { + Id = 4, + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2190), + 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, + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2191), + Order = 2 + }, + new + { + Id = 5, + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2192), + 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, + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2192), + Order = 1 + }, + new + { + Id = 6, + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2194), + 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, + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2194), + Order = 2 + }, + new + { + Id = 7, + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2195), + 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, + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2195), + Order = 1 + }, + new + { + Id = 8, + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2196), + 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, + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2197), + Order = 2 + }); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Hobby", b => + { + b.Property("HobbyId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("HobbyId")); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("varchar(500)"); + + b.Property("Icon") + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("Order") + .HasColumnType("int"); + + b.Property("ResumeId") + .HasColumnType("int"); + + b.HasKey("HobbyId"); + + b.HasIndex("ResumeId"); + + b.ToTable("Hobbies"); + + b.HasData( + new + { + HobbyId = 1, + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(1959), + Description = "Crafting Professional-Quality Websites with Precision", + Icon = "fa-square-terminal", + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(1960), + Name = "Web Development", + Order = 1, + ResumeId = 1 + }, + new + { + HobbyId = 2, + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(1964), + Description = "Streamlining and Simplifying Complex Tasks through Automation", + Icon = "fa-robot", + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(1965), + Name = "Automation", + Order = 2, + ResumeId = 1 + }, + new + { + HobbyId = 3, + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(1967), + Description = "Sharing the knowledge and insights I’ve gathered along my journey", + Icon = "fa-typewriter", + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(1967), + Name = "Blogging", + Order = 3, + ResumeId = 1 + }, + new + { + HobbyId = 4, + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(1969), + Description = "Cultivating Nature's Beauty and Bounty", + Icon = "fa-seedling", + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(1969), + Name = "Gardening", + Order = 4, + ResumeId = 1 + }); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Message", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Content") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("varchar(500)"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.Property("Subject") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.HasKey("Id"); + + b.ToTable("Messages"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.MessageStatusLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("MessageId") + .HasColumnType("int"); + + b.Property("Status") + .IsRequired() + .HasMaxLength(10) + .HasColumnType("varchar(10)"); + + b.HasKey("Id"); + + b.HasIndex("MessageId"); + + b.ToTable("MessageStatusLogs"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Post", b => + { + b.Property("PostId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("PostId")); + + b.Property("Author") + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("BlogUrl") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("Category") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("Comments") + .HasColumnType("int"); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("Image") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("Likes") + .HasColumnType("int"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("PostUrl") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("Slug") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("Views") + .HasColumnType("int"); + + b.HasKey("PostId"); + + b.HasIndex("BlogUrl"); + + b.ToTable("Posts"); + + b.HasData( + new + { + PostId = 1, + BlogUrl = "https://bangararaju.kottedi.in/blog", + Category = "Welcome", + Comments = 0, + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2123), + Description = "Hello World", + Likes = 0, + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2120), + PostUrl = "https://bangararaju.kottedi.in/blog/hello-world", + Slug = "hello-world", + Title = "Hello World", + Views = 0 + }, + new + { + PostId = 2, + BlogUrl = "https://bangararaju.kottedi.in/blog", + Category = "Welcome", + Comments = 0, + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2129), + Description = "Hello World", + Likes = 0, + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2128), + PostUrl = "https://bangararaju.kottedi.in/blog/hello-world", + Slug = "hello-world", + Title = "Hello World", + Views = 0 + }, + new + { + PostId = 3, + BlogUrl = "https://bangararaju.kottedi.in/blog", + Category = "Welcome", + Comments = 0, + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2132), + Description = "Hello World", + Likes = 0, + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2131), + PostUrl = "https://bangararaju.kottedi.in/blog/hello-world", + Slug = "hello-world", + Title = "Hello World", + Views = 0 + }); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Project", b => + { + b.Property("ProjectId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("ProjectId")); + + b.Property("Category") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("Challenges") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("varchar(500)"); + + b.Property("EndDate") + .HasColumnType("datetime(6)"); + + b.Property("ImagePath") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("Impact") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("LessonsLearned") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("Responsibilities") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("ResumeId") + .HasColumnType("int"); + + b.Property("Roles") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("StartDate") + .HasColumnType("datetime(6)"); + + b.Property("Status") + .HasMaxLength(20) + .HasColumnType("varchar(20)"); + + b.Property("TechnologiesUsed") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.HasKey("ProjectId"); + + b.HasIndex("ResumeId"); + + b.ToTable("Projects"); + + b.HasData( + new + { + ProjectId = 1, + Category = "Web Development", + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2039), + Description = "Business Process Management", + ImagePath = "", + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2040), + Name = "Transfora (Business Process Management)", + Responsibilities = "Developing, Testing, Support", + ResumeId = 1, + Roles = "Coding, Reviewing, Testing", + TechnologiesUsed = ".NET, Angular" + }, + new + { + ProjectId = 2, + Category = "Web Development", + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2076), + Description = "Business Process Management", + ImagePath = "", + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2076), + Name = "Transfora (Business Process Management)", + Responsibilities = "Developing, Testing, Support", + ResumeId = 1, + Roles = "Coding, Reviewing, Testing", + TechnologiesUsed = ".NET, Angular" + }, + new + { + ProjectId = 3, + Category = "Web Development", + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2078), + Description = "Business Process Management", + ImagePath = "", + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2079), + Name = "Transfora (Business Process Management)", + Responsibilities = "Developing, Testing, Support", + ResumeId = 1, + Roles = "Coding, Reviewing, Testing", + TechnologiesUsed = ".NET, Angular" + }); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Resume", b => + { + b.Property("ResumeId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("ResumeId")); + + b.Property("About") + .IsRequired() + .HasMaxLength(1000) + .HasColumnType("varchar(1000)"); + + b.Property("CandidateId") + .HasColumnType("int"); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("Order") + .HasColumnType("int"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.HasKey("ResumeId"); + + b.HasIndex("CandidateId"); + + b.ToTable("Resumes"); + + b.HasData( + new + { + 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.", + CandidateId = 1, + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(1920), + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(1920), + Order = 1, + Title = "Full Stack Developer" + }); + }); + + modelBuilder.Entity("PortBlog.API.Entities.ResumeFile", b => + { + b.Property("FileId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("FileId")); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("FileFormat") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.Property("FileName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("FilePath") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("ResumeId") + .HasColumnType("int"); + + b.Property("Version") + .HasMaxLength(10) + .HasColumnType("varchar(10)"); + + b.HasKey("FileId"); + + b.HasIndex("ResumeId") + .IsUnique(); + + b.ToTable("Files"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Skill", b => + { + b.Property("SkillId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("SkillId")); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("Description") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.Property("ProficiencyLevel") + .HasColumnType("int"); + + b.Property("ResumeId") + .HasColumnType("int"); + + b.HasKey("SkillId"); + + b.HasIndex("ResumeId"); + + b.ToTable("Skills"); + + b.HasData( + new + { + SkillId = 1, + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2012), + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2013), + Name = "Web Development", + ProficiencyLevel = 80, + ResumeId = 1 + }, + new + { + SkillId = 2, + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2016), + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2017), + Name = "Web Development", + ProficiencyLevel = 80, + ResumeId = 1 + }, + new + { + SkillId = 3, + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2018), + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2018), + Name = "Web Development", + ProficiencyLevel = 80, + ResumeId = 1 + }, + new + { + SkillId = 4, + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2020), + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2020), + Name = "Web Development", + ProficiencyLevel = 80, + ResumeId = 1 + }, + new + { + SkillId = 5, + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2021), + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(2021), + Name = "Web Development", + ProficiencyLevel = 80, + ResumeId = 1 + }); + }); + + modelBuilder.Entity("PortBlog.API.Entities.SocialLinks", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("BlogUrl") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("CreatedBy") + .HasColumnType("longtext"); + + b.Property("CreatedDate") + .HasColumnType("datetime(6)"); + + b.Property("Facebook") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("GitHub") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("Instagram") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("Linkedin") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("ModifiedBy") + .HasColumnType("longtext"); + + b.Property("ModifiedDate") + .HasColumnType("datetime(6)"); + + b.Property("PersonalWebsite") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("ResumeId") + .HasColumnType("int"); + + b.Property("Twitter") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.HasKey("Id"); + + b.HasIndex("BlogUrl"); + + b.HasIndex("ResumeId") + .IsUnique(); + + b.ToTable("SocialLinks"); + + b.HasData( + new + { + Id = 1, + BlogUrl = "https://bangararaju.kottedi.in/blog", + CreatedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(1939), + GitHub = "https://github.com/rajukottedi", + Linkedin = "https://in.linkedin.com/in/bangara-raju-kottedi-299072109", + ModifiedDate = new DateTime(2024, 4, 26, 0, 48, 21, 412, DateTimeKind.Local).AddTicks(1940), + ResumeId = 1 + }); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Academic", b => + { + b.HasOne("PortBlog.API.Entities.Resume", "Resume") + .WithMany("Academics") + .HasForeignKey("ResumeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Resume"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Certification", b => + { + b.HasOne("PortBlog.API.Entities.Resume", "Resume") + .WithMany("Certifications") + .HasForeignKey("ResumeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Resume"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Experience", b => + { + b.HasOne("PortBlog.API.Entities.Resume", "Resume") + .WithMany("Experiences") + .HasForeignKey("ResumeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Resume"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.ExperienceDetails", b => + { + b.HasOne("PortBlog.API.Entities.Experience", "Experience") + .WithMany("Details") + .HasForeignKey("ExperienceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Experience"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Hobby", b => + { + b.HasOne("PortBlog.API.Entities.Resume", "Resume") + .WithMany("Hobbies") + .HasForeignKey("ResumeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Resume"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.MessageStatusLog", b => + { + b.HasOne("PortBlog.API.Entities.Message", "Message") + .WithMany() + .HasForeignKey("MessageId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Message"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Post", b => + { + b.HasOne("PortBlog.API.Entities.Blog", "Blog") + .WithMany("Posts") + .HasForeignKey("BlogUrl") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Blog"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Project", b => + { + b.HasOne("PortBlog.API.Entities.Resume", "Resume") + .WithMany("Projects") + .HasForeignKey("ResumeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Resume"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Resume", b => + { + b.HasOne("PortBlog.API.Entities.Candidate", "Candidate") + .WithMany("Resumes") + .HasForeignKey("CandidateId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Candidate"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.ResumeFile", b => + { + b.HasOne("PortBlog.API.Entities.Resume", "Resume") + .WithOne("ResumeFile") + .HasForeignKey("PortBlog.API.Entities.ResumeFile", "ResumeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Resume"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Skill", b => + { + b.HasOne("PortBlog.API.Entities.Resume", "Resume") + .WithMany("Skills") + .HasForeignKey("ResumeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Resume"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.SocialLinks", b => + { + b.HasOne("PortBlog.API.Entities.Blog", "Blog") + .WithMany() + .HasForeignKey("BlogUrl"); + + b.HasOne("PortBlog.API.Entities.Resume", "Resume") + .WithOne("SocialLinks") + .HasForeignKey("PortBlog.API.Entities.SocialLinks", "ResumeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Blog"); + + b.Navigation("Resume"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Blog", b => + { + b.Navigation("Posts"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Candidate", b => + { + b.Navigation("Resumes"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Experience", b => + { + b.Navigation("Details"); + }); + + modelBuilder.Entity("PortBlog.API.Entities.Resume", b => + { + b.Navigation("Academics"); + + b.Navigation("Certifications"); + + b.Navigation("Experiences"); + + b.Navigation("Hobbies"); + + b.Navigation("Projects"); + + b.Navigation("ResumeFile"); + + b.Navigation("Skills"); + + b.Navigation("SocialLinks"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/PortBlog.API/Models/AcademicDto.cs b/PortBlog.API/Models/AcademicDto.cs new file mode 100644 index 0000000..f2386fd --- /dev/null +++ b/PortBlog.API/Models/AcademicDto.cs @@ -0,0 +1,19 @@ +namespace PortBlog.API.Models +{ + public class AcademicDto + { + public int AcademicId { get; set; } + + public string Institution { get; set; } = string.Empty; + + public int StartYear { get; set; } + + public int EndYear { get; set; } + + public string Period { get; set; } = string.Empty; + + public string Degree { get; set; } = string.Empty; + + public string? DegreeSpecialization { get; set; } + } +} diff --git a/PortBlog.API/Models/BlogDto.cs b/PortBlog.API/Models/BlogDto.cs new file mode 100644 index 0000000..61abf7e --- /dev/null +++ b/PortBlog.API/Models/BlogDto.cs @@ -0,0 +1,17 @@ +using PortBlog.API.Entities; + +namespace PortBlog.API.Models +{ + public class BlogDto + { + public int BlogId { get; set; } + + public string Name { get; set; } = string.Empty; + + public string? Description { get; set; } = string.Empty; + + public string BlogUrl { get; set; } = string.Empty; + + public ICollection Posts { get; set; } = new List(); + } +} diff --git a/PortBlog.API/Models/CandidateDto.cs b/PortBlog.API/Models/CandidateDto.cs new file mode 100644 index 0000000..4a3687d --- /dev/null +++ b/PortBlog.API/Models/CandidateDto.cs @@ -0,0 +1,26 @@ +namespace PortBlog.API.Models +{ + public class CandidateDto + { + public int CandidateId { get; set; } + + public string FirstName { get; set; } = string.Empty; + + public string LastName { get; set; } = string.Empty; + + public string DisplayName { + get + { + return FirstName + " " + LastName; + } + } + + public string Dob { get; set; } = string.Empty; + + public string Email { get; set; } = string.Empty; + + public string Phone { get; set; } = string.Empty; + + public string? Address { get; set; } + } +} diff --git a/PortBlog.API/Models/CertificationDto.cs b/PortBlog.API/Models/CertificationDto.cs new file mode 100644 index 0000000..8447ca0 --- /dev/null +++ b/PortBlog.API/Models/CertificationDto.cs @@ -0,0 +1,17 @@ +namespace PortBlog.API.Models +{ + public class CertificationDto + { + public int CertificationId { get; set; } + + public string CertificationName { get; set; } = string.Empty; + + public string IssuingOrganization { get; set; } = string.Empty; + + public string? CertificationLink { get; set; } + + public DateTime IssueDate { get; set; } + + public DateTime? ExpiryDate { get; set; } + } +} diff --git a/PortBlog.API/Models/ExperienceDetailsDto.cs b/PortBlog.API/Models/ExperienceDetailsDto.cs new file mode 100644 index 0000000..034a67d --- /dev/null +++ b/PortBlog.API/Models/ExperienceDetailsDto.cs @@ -0,0 +1,11 @@ +namespace PortBlog.API.Models +{ + public class ExperienceDetailsDto + { + public int Id { get; set; } + + public string Details { get; set; } = string.Empty; + + public int Order { get; set; } = 0; + } +} diff --git a/PortBlog.API/Models/ExperienceDto.cs b/PortBlog.API/Models/ExperienceDto.cs new file mode 100644 index 0000000..cb9dc9f --- /dev/null +++ b/PortBlog.API/Models/ExperienceDto.cs @@ -0,0 +1,23 @@ +using PortBlog.API.Entities; + +namespace PortBlog.API.Models +{ + public class ExperienceDto + { + public int ExperienceId { get; set; } + + public string Title { get; set; } = string.Empty; + + public string? Description { get; set; } + + public string Company { get; set; } = string.Empty; + + public string StartYear { get; set; } = string.Empty; + + public string EndYear { get; set; } = string.Empty; + + public string Period { get; set; } = string.Empty; + + public ICollection Details { get; set; } = new List(); + } +} diff --git a/PortBlog.API/Models/HobbyDto.cs b/PortBlog.API/Models/HobbyDto.cs new file mode 100644 index 0000000..22d91ea --- /dev/null +++ b/PortBlog.API/Models/HobbyDto.cs @@ -0,0 +1,13 @@ +namespace PortBlog.API.Models +{ + public class HobbyDto + { + public int HobbyId { get; set; } + + public string Name { get; set; } = string.Empty; + + public string Description { get; set; } = string.Empty; + + public string? Icon { get; set; } + } +} \ No newline at end of file diff --git a/PortBlog.API/Models/PostDto.cs b/PortBlog.API/Models/PostDto.cs new file mode 100644 index 0000000..f07e809 --- /dev/null +++ b/PortBlog.API/Models/PostDto.cs @@ -0,0 +1,23 @@ +namespace PortBlog.API.Models +{ + public class PostDto + { + public int PostId { get; set; } + + public string Slug { get; set; } = string.Empty; + + public string Title { get; set; } = string.Empty; + + public string Description { get; set; } = string.Empty; + + public string Category { get; set; } = string.Empty; + + public string PostUrl { get; set; } = string.Empty; + + public int Likes { get; set; } = 0; + + public int Views { get; set; } = 0; + + public int Comments { get; set; } = 0; + } +} diff --git a/PortBlog.API/Models/ProjectDto.cs b/PortBlog.API/Models/ProjectDto.cs new file mode 100644 index 0000000..8d3c023 --- /dev/null +++ b/PortBlog.API/Models/ProjectDto.cs @@ -0,0 +1,37 @@ +using System.ComponentModel.DataAnnotations; + +namespace PortBlog.API.Models +{ + public class ProjectDto + { + public int ProjectId { get; set; } + + public string Name { get; set; } = string.Empty; + + public string Description { get; set; } = string.Empty; + + public string Category { get; set; } = string.Empty; + + public ICollection Roles { get; set; } = new List(); + + public string? Challenges { get; set; } = string.Empty; + + public string? LessonsLearned { get; set; } = string.Empty; + + public string? Impact { get; set; } = string.Empty; + + public ICollection Responsibilities { get; set; } = new List(); + + public ICollection TechnologiesUsed { get; set; } = new List(); + + public DateTime StartDate { get; set; } + + public DateTime EndDate { get; set; } + + public string? ImagePath { get; set; } + + public string? Status { get; set; } = string.Empty; + + public int ResumeId { get; set; } + } +} diff --git a/PortBlog.API/Models/ResumeDto.cs b/PortBlog.API/Models/ResumeDto.cs new file mode 100644 index 0000000..cc5e82d --- /dev/null +++ b/PortBlog.API/Models/ResumeDto.cs @@ -0,0 +1,35 @@ +namespace PortBlog.API.Models +{ + public class ResumeDto + { + public int ResumeId { get; set; } + + public string Title { get; set; } = string.Empty; + + public string About { get; set; } = string.Empty; + + public CandidateDto? Candidate { get; set; } + + public SocialLinksDto? SocialLinks { get; set; } + + public ICollection Posts + { + get + { + return SocialLinks?.Posts ?? new List(); + } + } + + public ICollection Academics { get; set; } = new List(); + + public ICollection Skills { get; set; } = new List(); + + public ICollection Experiences { get; set; } = new List(); + + public ICollection Certifications { get; set; } = new List(); + + public ICollection Hobbies { get; set; } = new List(); + + public ICollection Projects { get; set; } = new List(); + } +} diff --git a/PortBlog.API/Models/SkillDto.cs b/PortBlog.API/Models/SkillDto.cs new file mode 100644 index 0000000..eb5581a --- /dev/null +++ b/PortBlog.API/Models/SkillDto.cs @@ -0,0 +1,13 @@ +namespace PortBlog.API.Models +{ + public class SkillDto + { + public int SkillId { get; set; } + + public string Name { get; set; } = string.Empty; + + public string? Description { get; set; } + + public int ProficiencyLevel { get; set; } + } +} diff --git a/PortBlog.API/Models/SocialLinksDto.cs b/PortBlog.API/Models/SocialLinksDto.cs new file mode 100644 index 0000000..86b4083 --- /dev/null +++ b/PortBlog.API/Models/SocialLinksDto.cs @@ -0,0 +1,23 @@ +namespace PortBlog.API.Models +{ + public class SocialLinksDto + { + public int Id { get; set; } + + public string? GitHub { get; set; } + + public string Linkedin { get; set; } = string.Empty; + + public string? Instagram { get; set; } + + public string? Facebook { get; set; } + + public string? Twitter { get; set; } + + public string? PersonalWebsite { get; set; } + + public string? BlogUrl { get; set; } + + public ICollection Posts { get; set; } = new List(); + } +} diff --git a/PortBlog.API/PortBlog.API.csproj b/PortBlog.API/PortBlog.API.csproj index e3acc73..7633d15 100644 --- a/PortBlog.API/PortBlog.API.csproj +++ b/PortBlog.API/PortBlog.API.csproj @@ -7,19 +7,18 @@ + - + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + - - - - - - diff --git a/PortBlog.API/Profiles/BlogProfile.cs b/PortBlog.API/Profiles/BlogProfile.cs new file mode 100644 index 0000000..23e9afe --- /dev/null +++ b/PortBlog.API/Profiles/BlogProfile.cs @@ -0,0 +1,15 @@ +using AutoMapper; +using PortBlog.API.Entities; +using PortBlog.API.Models; + +namespace PortBlog.API.Profiles +{ + public class BlogProfile : Profile + { + public BlogProfile() + { + CreateMap(); + CreateMap(); + } + } +} diff --git a/PortBlog.API/Profiles/ResumeProfile.cs b/PortBlog.API/Profiles/ResumeProfile.cs new file mode 100644 index 0000000..06d7ef4 --- /dev/null +++ b/PortBlog.API/Profiles/ResumeProfile.cs @@ -0,0 +1,66 @@ +using AutoMapper; +using PortBlog.API.Entities; +using PortBlog.API.Models; + +namespace PortBlog.API.Profiles +{ + public class ResumeProfile : Profile + { + public ResumeProfile() + { + CreateMap() + .ForMember + ( + dest => dest.Dob, + src => src.MapFrom(src => src.Dob != null ? src.Dob.Value.ToString("MMM dd, yyyy") : string.Empty) + ); + CreateMap() + .ForMember( + dest => dest.Period, + src => src.MapFrom(src => src.StartYear + " - " + src.EndYear) + ); + CreateMap(); + CreateMap(); + CreateMap() + .ForMember( + dest => dest.Period, + src => src.MapFrom(src => src.StartDate.Year + " - " + (src.EndDate != null ? src.EndDate.Value.Year : "Present")) + ) + .ForMember + ( + dest => dest.StartYear, + opts => opts.MapFrom(src => src.StartDate.Year.ToString()) + ) + .ForMember + ( + dest => dest.EndYear, + opts => opts.MapFrom(src => src.EndDate != null ? src.EndDate.Value.Year.ToString() : "Present") + ); + CreateMap(); + CreateMap() + .ForMember + ( + dest => dest.Roles, + src => src.MapFrom(src => !string.IsNullOrEmpty(src.Roles) ? src.Roles.Split(",", StringSplitOptions.RemoveEmptyEntries).ToList() : new List()) + ) + .ForMember + ( + dest => dest.Responsibilities, + src => src.MapFrom(src => !string.IsNullOrEmpty(src.Responsibilities) ? src.Responsibilities.Split(",", StringSplitOptions.RemoveEmptyEntries).ToList() : new List()) + ) + .ForMember + ( + dest => dest.TechnologiesUsed, + src => src.MapFrom(src => !string.IsNullOrEmpty(src.TechnologiesUsed) ? src.TechnologiesUsed.Split(",", StringSplitOptions.RemoveEmptyEntries).ToList() : new List()) + ); + CreateMap(); + CreateMap() + .ForMember + ( + dest => dest.Posts, + src => src.MapFrom(src => src.Blog != null ? src.Blog.Posts : new List()) + ); + CreateMap(); + } + } +} diff --git a/PortBlog.API/Program.cs b/PortBlog.API/Program.cs index c5985b9..8471706 100644 --- a/PortBlog.API/Program.cs +++ b/PortBlog.API/Program.cs @@ -1,5 +1,7 @@ using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.FileProviders; using PortBlog.API.DbContexts; +using PortBlog.API.Extensions; using Serilog; Log.Logger = new LoggerConfiguration() @@ -25,13 +27,20 @@ builder.Services.AddProblemDetails(); builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(); -builder.Services - .AddDbContext(dbContextOptions - => dbContextOptions.UseSqlite(builder.Configuration["ConnectionStrings:PortBlogDBConnectionString"])); +var connectionString = builder.Configuration.GetConnectionString("PortBlogDBConnectionString"); + +if (string.IsNullOrEmpty(connectionString)) +{ + throw new Exception("Connection string cannot be empty"); +} builder.Services - .AddDbContext(dbContextOptions - => dbContextOptions.UseSqlite(builder.Configuration["ConnectionStrings:PortBlogDBConnectionString"])); +.AddDbContext(dbContextOptions +=> dbContextOptions.UseMySql(connectionString, ServerVersion.AutoDetect(connectionString))); + +builder.Services.AddRepositories(); + +builder.Services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies()); var app = builder.Build(); @@ -49,6 +58,12 @@ if (app.Environment.IsDevelopment()) app.UseHttpsRedirection(); +app.UseStaticFiles(new StaticFileOptions() +{ + FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), @"Images")), + RequestPath = new PathString("/images") +}); + app.UseAuthorization(); app.MapControllers(); diff --git a/PortBlog.API/Repositories/AcademicRepository.cs b/PortBlog.API/Repositories/AcademicRepository.cs new file mode 100644 index 0000000..6665b10 --- /dev/null +++ b/PortBlog.API/Repositories/AcademicRepository.cs @@ -0,0 +1,21 @@ +using Microsoft.EntityFrameworkCore; +using PortBlog.API.DbContexts; +using PortBlog.API.Entities; +using PortBlog.API.Repositories.Contracts; + +namespace PortBlog.API.Repositories +{ + public class AcademicRepository : IAcademicRepository + { + private readonly CvBlogContext _cvBlogContext; + + public AcademicRepository(CvBlogContext cvBlogContext) + { + _cvBlogContext = cvBlogContext; + } + public async Task> GetAcademicsForResumeAsync(int resumeId) + { + return await _cvBlogContext.Academics.Where(a => a.ResumeId == resumeId).OrderByDescending(a => a.StartYear).ToListAsync(); + } + } +} diff --git a/PortBlog.API/Repositories/BlogRepository.cs b/PortBlog.API/Repositories/BlogRepository.cs new file mode 100644 index 0000000..f3a7b1e --- /dev/null +++ b/PortBlog.API/Repositories/BlogRepository.cs @@ -0,0 +1,27 @@ +using Microsoft.EntityFrameworkCore; +using PortBlog.API.DbContexts; +using PortBlog.API.Entities; +using PortBlog.API.Repositories.Contracts; + +namespace PortBlog.API.Repositories +{ + public class BlogRepository : IBlogRepository + { + private readonly CvBlogContext _cvBlogContext; + + public BlogRepository(CvBlogContext cvBlogContext) + { + _cvBlogContext = cvBlogContext; + } + + public async Task GetBlogAsync(string blogUrl, bool includePosts) + { + if (includePosts) + { + return await _cvBlogContext.Blogs.Include(b => b.Posts) + .Where(b => b.BlogUrl == blogUrl).FirstOrDefaultAsync(); + } + return await _cvBlogContext.Blogs.Where(b => b.BlogUrl == blogUrl).FirstOrDefaultAsync(); + } + } +} diff --git a/PortBlog.API/Repositories/CandidateRepository.cs b/PortBlog.API/Repositories/CandidateRepository.cs new file mode 100644 index 0000000..e070435 --- /dev/null +++ b/PortBlog.API/Repositories/CandidateRepository.cs @@ -0,0 +1,27 @@ +using Microsoft.EntityFrameworkCore; +using PortBlog.API.DbContexts; +using PortBlog.API.Entities; +using PortBlog.API.Repositories.Contracts; + +namespace PortBlog.API.Repositories +{ + public class CandidateRepository : ICandidateRepository + { + private readonly CvBlogContext _cvBlogContext; + + public CandidateRepository(CvBlogContext cvBlogContext) + { + _cvBlogContext = cvBlogContext ?? throw new ArgumentNullException(nameof(cvBlogContext)); + } + + public async Task CandidateExistAsync(int candidateId) + { + return await _cvBlogContext.Candidates.AnyAsync(c => c.CandidateId == candidateId); + } + + public async Task GetCandidateAsync(int id) + { + return await _cvBlogContext.Candidates.FirstOrDefaultAsync(c => c.CandidateId == id); + } + } +} diff --git a/PortBlog.API/Repositories/Contracts/IAcademicRepository.cs b/PortBlog.API/Repositories/Contracts/IAcademicRepository.cs new file mode 100644 index 0000000..0b51ec9 --- /dev/null +++ b/PortBlog.API/Repositories/Contracts/IAcademicRepository.cs @@ -0,0 +1,9 @@ +using PortBlog.API.Entities; + +namespace PortBlog.API.Repositories.Contracts +{ + public interface IAcademicRepository + { + Task> GetAcademicsForResumeAsync(int resumeId); + } +} diff --git a/PortBlog.API/Repositories/Contracts/IBlogRepository.cs b/PortBlog.API/Repositories/Contracts/IBlogRepository.cs new file mode 100644 index 0000000..ebc68ff --- /dev/null +++ b/PortBlog.API/Repositories/Contracts/IBlogRepository.cs @@ -0,0 +1,9 @@ +using PortBlog.API.Entities; + +namespace PortBlog.API.Repositories.Contracts +{ + public interface IBlogRepository + { + Task GetBlogAsync(string blogUrl, bool includePosts); + } +} diff --git a/PortBlog.API/Repositories/Contracts/ICandidateRepository.cs b/PortBlog.API/Repositories/Contracts/ICandidateRepository.cs new file mode 100644 index 0000000..6761126 --- /dev/null +++ b/PortBlog.API/Repositories/Contracts/ICandidateRepository.cs @@ -0,0 +1,11 @@ +using PortBlog.API.Entities; + +namespace PortBlog.API.Repositories.Contracts +{ + public interface ICandidateRepository + { + Task GetCandidateAsync(int id); + + Task CandidateExistAsync(int candidateId); + } +} diff --git a/PortBlog.API/Repositories/Contracts/IExperienceRepository.cs b/PortBlog.API/Repositories/Contracts/IExperienceRepository.cs new file mode 100644 index 0000000..04acd35 --- /dev/null +++ b/PortBlog.API/Repositories/Contracts/IExperienceRepository.cs @@ -0,0 +1,9 @@ +using PortBlog.API.Entities; + +namespace PortBlog.API.Repositories.Contracts +{ + public interface IExperienceRepository + { + Task> GetExperiencesForResumeAsync(int resumeId); + } +} diff --git a/PortBlog.API/Repositories/Contracts/IHobbyRepository.cs b/PortBlog.API/Repositories/Contracts/IHobbyRepository.cs new file mode 100644 index 0000000..115da37 --- /dev/null +++ b/PortBlog.API/Repositories/Contracts/IHobbyRepository.cs @@ -0,0 +1,10 @@ +using PortBlog.API.Entities; +using System.Collections.Generic; + +namespace PortBlog.API.Repositories.Contracts +{ + public interface IHobbyRepository + { + Task> GetHobbiesForResumeAsync(int resumeId); + } +} diff --git a/PortBlog.API/Repositories/Contracts/IResumeRepository.cs b/PortBlog.API/Repositories/Contracts/IResumeRepository.cs new file mode 100644 index 0000000..4c0622b --- /dev/null +++ b/PortBlog.API/Repositories/Contracts/IResumeRepository.cs @@ -0,0 +1,9 @@ +using PortBlog.API.Entities; + +namespace PortBlog.API.Repositories.Contracts +{ + public interface IResumeRepository + { + Task GetLatestResumeForCandidateAsync(int candidateId, bool includeOtherData = false); + } +} diff --git a/PortBlog.API/Repositories/ExperienceRepository.cs b/PortBlog.API/Repositories/ExperienceRepository.cs new file mode 100644 index 0000000..bb930b6 --- /dev/null +++ b/PortBlog.API/Repositories/ExperienceRepository.cs @@ -0,0 +1,22 @@ +using Microsoft.EntityFrameworkCore; +using PortBlog.API.DbContexts; +using PortBlog.API.Entities; +using PortBlog.API.Repositories.Contracts; + +namespace PortBlog.API.Repositories +{ + public class ExperienceRepository : IExperienceRepository + { + private readonly CvBlogContext _cvBlogContext; + + public ExperienceRepository(CvBlogContext cvBlogContext) + { + _cvBlogContext = cvBlogContext; + } + + public async Task> GetExperiencesForResumeAsync(int resumeId) + { + return await _cvBlogContext.Experiences.Where(e => e.ResumeId == resumeId).OrderByDescending(e => e.StartDate).ToListAsync(); + } + } +} diff --git a/PortBlog.API/Repositories/HobbyRepository.cs b/PortBlog.API/Repositories/HobbyRepository.cs new file mode 100644 index 0000000..b02b0f2 --- /dev/null +++ b/PortBlog.API/Repositories/HobbyRepository.cs @@ -0,0 +1,22 @@ +using Microsoft.EntityFrameworkCore; +using PortBlog.API.DbContexts; +using PortBlog.API.Entities; +using PortBlog.API.Repositories.Contracts; + +namespace PortBlog.API.Repositories +{ + public class HobbyRepository : IHobbyRepository + { + private readonly CvBlogContext _cvBlogContext; + + public HobbyRepository(CvBlogContext cvBlogContext) + { + _cvBlogContext = cvBlogContext; + } + + public async Task> GetHobbiesForResumeAsync(int resumeId) + { + return await _cvBlogContext.Hobbies.Where(h => h.ResumeId == resumeId).OrderBy(h => h.Order).ToListAsync(); + } + } +} diff --git a/PortBlog.API/Repositories/ResumeRepository.cs b/PortBlog.API/Repositories/ResumeRepository.cs new file mode 100644 index 0000000..4162797 --- /dev/null +++ b/PortBlog.API/Repositories/ResumeRepository.cs @@ -0,0 +1,39 @@ +using Microsoft.EntityFrameworkCore; +using PortBlog.API.DbContexts; +using PortBlog.API.Entities; +using PortBlog.API.Repositories.Contracts; + +namespace PortBlog.API.Repositories +{ + public class ResumeRepository : IResumeRepository + { + private readonly CvBlogContext _cvBlogContext; + + public ResumeRepository(CvBlogContext cvBlogContext) + { + _cvBlogContext = cvBlogContext; + } + public async Task GetLatestResumeForCandidateAsync(int candidateId, bool includeOtherData) + { + if(includeOtherData) + { + return await _cvBlogContext.Resumes + .Include(r => r.Candidate) + .Include(r => r.Academics.OrderByDescending(a => a.StartYear)) + .Include(r => r.Experiences.OrderByDescending(e => e.StartDate)) + .ThenInclude(e => e.Details) + .Include(r => r.SocialLinks) + .ThenInclude(s => s.Blog) + .ThenInclude(b => b.Posts.Take(5)) + .Include(r => r.Hobbies) + .Include(r => r.Certifications) + .Include(r => r.Skills) + .Include(r => r.Projects) + .Where(r => r.CandidateId == candidateId) + .OrderByDescending(r => r.Order).FirstOrDefaultAsync(); + } + + return await _cvBlogContext.Resumes.Where(r => r.CandidateId == candidateId).OrderByDescending(r => r.Order).FirstOrDefaultAsync(); + } + } +} diff --git a/PortBlog.API/appsettings.Development.json b/PortBlog.API/appsettings.Development.json index 0c208ae..84b1da8 100644 --- a/PortBlog.API/appsettings.Development.json +++ b/PortBlog.API/appsettings.Development.json @@ -1,4 +1,7 @@ { + "ConnectionStrings": { + "PortBlogDBConnectionString": "SERVER=192.168.0.197; DATABASE=cv_blog; UID=PortBlogDevUser; PWD=p@$$w0rd1234" + }, "Logging": { "LogLevel": { "Default": "Information", diff --git a/PortBlog.API/appsettings.Production.json b/PortBlog.API/appsettings.Production.json index ec04bc1..a683bd2 100644 --- a/PortBlog.API/appsettings.Production.json +++ b/PortBlog.API/appsettings.Production.json @@ -1,4 +1,7 @@ { + "ConnectionStrings": { + "PortBlogDBConnectionString": "SERVER=10.1.0.10;DATABASE=cv_blog;UID=PortBlogProdUser;PWD=pr0dp@$$w0rd6534" + }, "Logging": { "LogLevel": { "Default": "Information", diff --git a/PortBlog.API/appsettings.json b/PortBlog.API/appsettings.json index bdf1af0..e170727 100644 --- a/PortBlog.API/appsettings.json +++ b/PortBlog.API/appsettings.json @@ -1,12 +1,12 @@ { - "ConnectionString": { - "PortBlogDBConnectionString": "Data Source=Database\\PortBlogDB.db" - }, "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, - "AllowedHosts": "*" + "AllowedHosts": "*", + "GeoLocationSettings": { + "apiUrl": "https://ipwho.is/" + } }