diff options
Diffstat (limited to 'src/Db.cs')
| -rw-r--r-- | src/Db.cs | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/src/Db.cs b/src/Db.cs new file mode 100644 index 0000000..39deefa --- /dev/null +++ b/src/Db.cs @@ -0,0 +1,52 @@ +using Microsoft.EntityFrameworkCore; + +namespace BlobBin; + +public sealed class Db : DbContext +{ + private readonly bool migrated; + + public Db(DbContextOptions<Db> options) : base(options) { + if (!migrated) { + Database.Migrate(); + migrated = true; + } + } + + public DbSet<File> Files { get; set; } + public DbSet<Paste> Pastes { get; set; } + + protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { + optionsBuilder.UseSqlite("data source = AppData/main.db"); + base.OnConfiguring(optionsBuilder); + } +} + +public class UploadEntityBase +{ + public UploadEntityBase() { + Id = Guid.NewGuid(); + CreatedAt = DateTime.UtcNow; + } + + public Guid Id { get; set; } + public string PublicId { get; set; } + public DateTime CreatedAt { get; set; } + public string CreatedBy { get; set; } + public DateTime? DeletedAt { get; set; } + public string? PasswordHash { get; set; } + public bool Singleton { get; set; } + public string? AutoDeleteAfter { get; set; } + public string? MimeType { get; set; } + public string DeletionKey { get; set; } + public string? Name { get; set; } + public long Length { get; set; } +} + +public class Paste : UploadEntityBase +{ + public string? Content { get; set; } +} + +public class File : UploadEntityBase +{ }
\ No newline at end of file |
