summaryrefslogtreecommitdiffstats
path: root/src/Db.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Db.cs')
-rw-r--r--src/Db.cs52
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