diff options
author | vnugent <public@vaughnnugent.com> | 2024-01-20 23:49:29 -0500 |
---|---|---|
committer | vnugent <public@vaughnnugent.com> | 2024-01-20 23:49:29 -0500 |
commit | 6cb7da37824d02a1898d08d0f9495c77fde4dd1d (patch) | |
tree | 95e37ea3c20f416d6a205ee4ab050c307b18eafe /back-end/src/Model/SimpleBookmarkContext.cs |
inital commit
Diffstat (limited to 'back-end/src/Model/SimpleBookmarkContext.cs')
-rw-r--r-- | back-end/src/Model/SimpleBookmarkContext.cs | 78 |
1 files changed, 78 insertions, 0 deletions
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 <https://www.gnu.org/licenses/>. + +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<BookmarkEntry> Bookmarks { get; set; } + + public DbSet<UserSettingsEntry> BmSettings { get; set; } + + public SimpleBookmarkContext(DbContextOptions options) : base(options) + { } + + public SimpleBookmarkContext() : base() + { } + + public void OnDatabaseCreating(IDbContextBuilder builder, object? userState) + { + builder.DefineTable<BookmarkEntry>(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(); + } + + } +} |