From 6cb7da37824d02a1898d08d0f9495c77fde4dd1d Mon Sep 17 00:00:00 2001 From: vnugent Date: Sat, 20 Jan 2024 23:49:29 -0500 Subject: inital commit --- back-end/src/Model/SimpleBookmarkContext.cs | 78 +++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 back-end/src/Model/SimpleBookmarkContext.cs (limited to 'back-end/src/Model/SimpleBookmarkContext.cs') diff --git a/back-end/src/Model/SimpleBookmarkContext.cs b/back-end/src/Model/SimpleBookmarkContext.cs new file mode 100644 index 0000000..ed734b3 --- /dev/null +++ b/back-end/src/Model/SimpleBookmarkContext.cs @@ -0,0 +1,78 @@ +// Copyright (C) 2024 Vaughn Nugent +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as +// published by the Free Software Foundation, either version 3 of the +// License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . + +using Microsoft.EntityFrameworkCore; + +using VNLib.Plugins.Extensions.Data; +using VNLib.Plugins.Extensions.Loading.Sql; + + +namespace SimpleBookmark.Model +{ + + internal sealed class SimpleBookmarkContext : TransactionalDbContext, IDbTableDefinition + { + + public DbSet Bookmarks { get; set; } + + public DbSet BmSettings { get; set; } + + public SimpleBookmarkContext(DbContextOptions options) : base(options) + { } + + public SimpleBookmarkContext() : base() + { } + + public void OnDatabaseCreating(IDbContextBuilder builder, object? userState) + { + builder.DefineTable(nameof(Bookmarks)) + .WithColumn(p => p.Id) + .SetIsKey() + .Next() + + .WithColumn(p => p.Created) + .AllowNull(false) + .Next() + + .WithColumn(p => p.LastModified) + .AllowNull(false) + .Next() + + .WithColumn(p => p.UserId) + .AllowNull(false) + .Next() + + .WithColumn(p => p.Name) + .AllowNull(true) + .MaxLength(100) + .Next() + + .WithColumn(p => p.Url) + .AllowNull(true) + .Next() + + .WithColumn(p => p.Description) + .AllowNull(true) + .MaxLength(500) + .Next() + + .WithColumn(p => p.Tags) + .AllowNull(true) + .MaxLength(100) + .Next(); + } + + } +} -- cgit