From bb2aad9f5d142eb1b0fa6caf73e34cd256d7bfe1 Mon Sep 17 00:00:00 2001 From: Rene Bentes Pinto Date: Mon, 7 Nov 2022 21:57:41 -0300 Subject: [PATCH] feat(data): Cria script a partir da Migration Utiliza-se o comando 'dotnet ef migrations script -p -o ' para exportar a migration em um script SQL --- Blog/Data/Scripts/database-create.sql | 117 ++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 Blog/Data/Scripts/database-create.sql diff --git a/Blog/Data/Scripts/database-create.sql b/Blog/Data/Scripts/database-create.sql new file mode 100644 index 0000000..7587dfb --- /dev/null +++ b/Blog/Data/Scripts/database-create.sql @@ -0,0 +1,117 @@ +IF OBJECT_ID(N'[__EFMigrationsHistory]') IS NULL +BEGIN + CREATE TABLE [__EFMigrationsHistory] ( + [MigrationId] nvarchar(150) NOT NULL, + [ProductVersion] nvarchar(32) NOT NULL, + CONSTRAINT [PK___EFMigrationsHistory] PRIMARY KEY ([MigrationId]) + ); +END; +GO + +BEGIN TRANSACTION; +GO + +CREATE TABLE [Category] ( + [Id] int NOT NULL IDENTITY, + [Slug] VARCHAR(80) NOT NULL, + [Title] NVARCHAR(80) NOT NULL, + CONSTRAINT [PK_Category] PRIMARY KEY ([Id]) +); +GO + +CREATE TABLE [Role] ( + [Id] int NOT NULL IDENTITY, + [Name] VARCHAR(80) NOT NULL, + [Slug] VARCHAR(80) NOT NULL, + CONSTRAINT [PK_Role] PRIMARY KEY ([Id]) +); +GO + +CREATE TABLE [Tag] ( + [Id] int NOT NULL IDENTITY, + [Name] VARCHAR(80) NOT NULL, + [Slug] VARCHAR(80) NOT NULL, + CONSTRAINT [PK_Tag] PRIMARY KEY ([Id]) +); +GO + +CREATE TABLE [User] ( + [Id] int NOT NULL IDENTITY, + [Bio] TEXT NOT NULL, + [Email] VARCHAR(200) NOT NULL, + [Image] VARCHAR(2000) NOT NULL, + [Name] NVARCHAR(80) NOT NULL, + [PasswordHash] VARCHAR(255) NOT NULL, + [Slug] VARCHAR(80) NOT NULL, + CONSTRAINT [PK_User] PRIMARY KEY ([Id]) +); +GO + +CREATE TABLE [Post] ( + [Id] int NOT NULL IDENTITY, + [AuthorId] int NOT NULL, + [Body] TEXT NOT NULL, + [CategoryId] int NOT NULL, + [CreateDate] SMALLDATETIME NOT NULL DEFAULT (GETDATE()), + [LastUpdateDate] SMALLDATETIME NOT NULL DEFAULT (GETDATE()), + [Slug] VARCHAR(80) NOT NULL, + [Summary] VARCHAR(255) NOT NULL, + [Title] VARCHAR(160) NOT NULL, + CONSTRAINT [PK_Post] PRIMARY KEY ([Id]), + CONSTRAINT [FK_Post_Author] FOREIGN KEY ([AuthorId]) REFERENCES [User] ([Id]) ON DELETE CASCADE, + CONSTRAINT [FK_Post_Category] FOREIGN KEY ([CategoryId]) REFERENCES [Category] ([Id]) ON DELETE CASCADE +); +GO + +CREATE TABLE [UserRole] ( + [RoleId] int NOT NULL, + [UserId] int NOT NULL, + CONSTRAINT [PK_UserRole] PRIMARY KEY ([RoleId], [UserId]), + CONSTRAINT [FK_UserRole_RoleId] FOREIGN KEY ([RoleId]) REFERENCES [Role] ([Id]) ON DELETE CASCADE, + CONSTRAINT [FK_UserRole_UserId] FOREIGN KEY ([UserId]) REFERENCES [User] ([Id]) ON DELETE CASCADE +); +GO + +CREATE TABLE [PostTag] ( + [PostId] int NOT NULL, + [TagId] int NOT NULL, + CONSTRAINT [PK_PostTag] PRIMARY KEY ([PostId], [TagId]), + CONSTRAINT [FK_PostTag_PostId] FOREIGN KEY ([PostId]) REFERENCES [Post] ([Id]) ON DELETE CASCADE, + CONSTRAINT [FK_PostTag_TagId] FOREIGN KEY ([TagId]) REFERENCES [Tag] ([Id]) ON DELETE CASCADE +); +GO + +CREATE UNIQUE INDEX [IX_Category_Slug] ON [Category] ([Slug]); +GO + +CREATE INDEX [IX_Post_AuthorId] ON [Post] ([AuthorId]); +GO + +CREATE INDEX [IX_Post_CategoryId] ON [Post] ([CategoryId]); +GO + +CREATE UNIQUE INDEX [IX_Post_Slug] ON [Post] ([Slug]); +GO + +CREATE INDEX [IX_PostTag_TagId] ON [PostTag] ([TagId]); +GO + +CREATE UNIQUE INDEX [IX_Role_Slug] ON [Role] ([Slug]); +GO + +CREATE UNIQUE INDEX [IX_Tag_Slug] ON [Tag] ([Slug]); +GO + +CREATE UNIQUE INDEX [IX_User_Slug] ON [User] ([Slug]); +GO + +CREATE INDEX [IX_UserRole_UserId] ON [UserRole] ([UserId]); +GO + +INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) +VALUES (N'20221108003635_InitialCreate', N'7.0.0'); +GO + +COMMIT; +GO +