Added database models

This commit is contained in:
2025-01-20 17:43:05 +01:00
parent 00504ad485
commit 49b5339bb3
11 changed files with 242 additions and 2 deletions

View File

@@ -0,0 +1,16 @@
using System.ComponentModel.DataAnnotations;
namespace Portfolio.Shared.Models;
public class About {
[Key]
public int Id { get; private set; } = 0;
[MaxLength(5000)]
public required string AboutMe { get; set; }
[MaxLength(5000)]
public required string Future { get; set; }
}

View File

@@ -0,0 +1,20 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Portfolio.Shared.Models;
public sealed class Language {
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; init; }
[MaxLength(255)]
public required string Label { get; set; }
[MaxLength(255)]
public required string Identifier { get; set; }
[MaxLength(255)]
public string? Suffix { get; set; }
}

View File

@@ -0,0 +1,41 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Portfolio.Shared.Models;
public sealed class Project {
[Key]
public Guid Id { get; init; } = Guid.CreateVersion7();
[MaxLength(255)]
public required string Cover { get; set; }
[MaxLength(255)]
public required string Name { get; set; }
[MaxLength(1000)]
public string? Description { get; set; }
[MaxLength(255)]
public required string SourceCode { get; set; }
public bool Featured { get; set; }
public int OrderIndex { get; set; }
public ProjectStatus Status { get; set; } = ProjectStatus.Finished;
[ForeignKey("languages")]
public List<Language> Languages { get; init; } = new();
public DateTime Created { get; init; } = DateTime.Now;
}
public enum ProjectStatus : byte {
Finished = 0,
Canceled = 1,
Paused = 2,
Development = 3
}

View File

@@ -0,0 +1,22 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Portfolio.Shared.Models;
public sealed class Technology {
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; init; }
[MaxLength(255)]
public required string Name { get; set; }
public TechnologyLevel Level { get; set; } = TechnologyLevel.Beginner;
}
public enum TechnologyLevel : byte {
Beginner = 0,
Intermediate = 1,
Professional = 2
}

View File

@@ -0,0 +1,25 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Portfolio.Shared.Models;
public class TimelineEntry {
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; init; }
public DateOnly Date { get; init; }
[MaxLength(1000)]
public required string Description { get; set; }
public bool Featured { get; set; }
public TimelineEntryType Type { get; init; }
}
public enum TimelineEntryType : byte {
Experience = 0,
Carrier = 1
}