Skip to content

Commit f658f13

Browse files
committed
Copied from main project
1 parent 97bb48e commit f658f13

14 files changed

+471
-31
lines changed

src/Sample/Program.cs

+73
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
using System;
2+
using System.Diagnostics;
3+
using System.Reflection;
4+
using DbUp;
5+
using DbUp.Engine;
6+
using DbUp.SQLite.Helpers;
7+
8+
namespace SQLiteSampleApplication
9+
{
10+
class Program
11+
{
12+
static void Main()
13+
{
14+
using (var database = new TemporarySQLiteDatabase("test"))
15+
{
16+
database.Create();
17+
18+
var upgrader =
19+
DeployChanges.To
20+
.SQLiteDatabase(database.SharedConnection)
21+
.WithScriptsEmbeddedInAssembly(Assembly.GetExecutingAssembly())
22+
.LogToConsole()
23+
.Build();
24+
25+
var watch = new Stopwatch();
26+
watch.Start();
27+
28+
var result = upgrader.PerformUpgrade();
29+
30+
watch.Stop();
31+
Display("File", result, watch.Elapsed);
32+
} // Database will be deleted at this point
33+
34+
using (var database = new InMemorySQLiteDatabase())
35+
{
36+
var upgrader =
37+
DeployChanges.To
38+
.SQLiteDatabase(database.ConnectionString)
39+
.WithScriptsEmbeddedInAssembly(Assembly.GetExecutingAssembly())
40+
.LogToConsole()
41+
.Build();
42+
43+
var watch = new Stopwatch();
44+
watch.Start();
45+
46+
var result = upgrader.PerformUpgrade();
47+
48+
watch.Stop();
49+
Display("InMemory", result, watch.Elapsed);
50+
} // Database will disappear from memory at this point
51+
}
52+
53+
static void Display(string dbType, DatabaseUpgradeResult result, TimeSpan ts)
54+
{
55+
// Display the result
56+
if (result.Successful)
57+
{
58+
Console.ForegroundColor = ConsoleColor.Green;
59+
Console.WriteLine("Success!");
60+
Console.WriteLine("{0} Database Upgrade Runtime: {1}", dbType,
61+
string.Format("{0:00}:{1:00}:{2:00}.{3:00}", ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds / 10));
62+
Console.ReadKey();
63+
}
64+
else
65+
{
66+
Console.ForegroundColor = ConsoleColor.Red;
67+
Console.WriteLine(result.Error);
68+
Console.ReadKey();
69+
Console.WriteLine("Failed!");
70+
}
71+
}
72+
}
73+
}

src/Sample/Sample.csproj

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
<PropertyGroup>
3+
<TargetFramework>net8.0</TargetFramework>
4+
<OutputType>Exe</OutputType>
5+
<IsPackable>false</IsPackable>
6+
</PropertyGroup>
7+
8+
<ItemGroup>
9+
<ProjectReference Include="..\dbup-sqlite\dbup-sqlite.csproj"/>
10+
</ItemGroup>
11+
12+
<ItemGroup>
13+
<EmbeddedResource Include="Scripts\*.sql"/>
14+
</ItemGroup>
15+
</Project>
+141
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
---------------------------------------
2+
-- Script 0001
3+
-- Creates following tables:
4+
-- * Entry
5+
-- * Revision
6+
-- * Comment
7+
-- * Setting
8+
-- * Redirect
9+
-- * Pingback
10+
-- * Tag
11+
-- * TagItem
12+
-- * TaskState
13+
---------------------------------------
14+
15+
-- Entry Table
16+
CREATE TABLE [Entry]
17+
(
18+
[Id] INTEGER CONSTRAINT 'PK_Entry_ID' PRIMARY KEY AUTOINCREMENT,
19+
[Name] NVARCHAR(50) NOT NULL,
20+
[Title] NVARCHAR(200) NOT NULL,
21+
[Summary] TEXT NOT NULL,
22+
[Published] DATETIME NOT NULL,
23+
[LatestRevisionId] INT NULL,
24+
[IsDiscussionEnabled] BIT NOT NULL CONSTRAINT[DF_Entry_IsDiscussionEnabled] DEFAULT(1),
25+
[MetaDescription] NVARCHAR(500) NOT NULL CONSTRAINT[DF_Entry_MetaDescription] DEFAULT(''),
26+
[MetaTitle] NVARCHAR(255) NOT NULL CONSTRAINT[DF_Entry_MetaTitle] DEFAULT(''),
27+
[HideChrome] BIT NOT NULL CONSTRAINT[DF_Entry_HideChrome] DEFAULT(0),
28+
[Status] NVARCHAR(20) NOT NULL CONSTRAINT [DF_Entry_Status] DEFAULT('Public-Page'),
29+
[PageTemplate] NVARCHAR(20) NULL,
30+
[Author] NVARCHAR(100) NOT NULL,
31+
[RevisionAuthor] NVARCHAR(100) NOT NULL,
32+
[LastRevised] DATETIME NOT NULL,
33+
[LatestRevisionFormat] NVARCHAR(20) NOT NULL,
34+
[TagsCommaSeparated] NVARCHAR(255) NOT NULL CONSTRAINT [DF_Entry_TagsCommaSeparated] DEFAULT(''),
35+
[CommentCount] INT NOT NULL CONSTRAINT [DF_Entry_CommentCount] DEFAULT(0)
36+
);
37+
38+
-- Entry Revision Table
39+
CREATE TABLE [Revision]
40+
(
41+
[Id] INTEGER CONSTRAINT 'PK_Revision_ID' PRIMARY KEY AUTOINCREMENT,
42+
[EntryId] INT NOT NULL,
43+
[Body] TEXT NOT NULL,
44+
[Reason] NVARCHAR(1000) NOT NULL,
45+
[Revised] DATETIME NOT NULL,
46+
[Status] INT NOT NULL,
47+
[RevisionNumber] INT NOT NULL CONSTRAINT[DF_Revision_RevisionNumber] DEFAULT 0,
48+
[Format] NVARCHAR(20) NOT NULL CONSTRAINT[DF_Revision_Format] DEFAULT('Markdown'),
49+
[Author] NVARCHAR(100) NOT NULL,
50+
CONSTRAINT 'FK_Revision_EntryId' FOREIGN KEY (EntryId) REFERENCES Entry(Id)
51+
ON UPDATE NO ACTION
52+
ON DELETE NO ACTION
53+
);
54+
55+
-- Comment Table
56+
CREATE TABLE [Comment]
57+
(
58+
[Id] INTEGER CONSTRAINT 'PK_Comment_ID' PRIMARY KEY AUTOINCREMENT,
59+
[Body] TEXT NOT NULL,
60+
[AuthorName] NVARCHAR(100) NOT NULL,
61+
[AuthorEmail] NVARCHAR(100) NOT NULL,
62+
[AuthorUrl] NVARCHAR(100) NOT NULL,
63+
[Posted] DATETIME NOT NULL,
64+
[EntryId] INT NOT NULL,
65+
[Status] INT NOT NULL,
66+
CONSTRAINT 'FK_Comment_EntryId' FOREIGN KEY (EntryId) REFERENCES Entry(Id)
67+
ON UPDATE NO ACTION
68+
ON DELETE NO ACTION
69+
);
70+
71+
-- Settings and Statistics Table
72+
CREATE TABLE [Setting]
73+
(
74+
[Id] INTEGER CONSTRAINT 'PK_Setting_ID' PRIMARY KEY AUTOINCREMENT,
75+
[Name] NVARCHAR(50) NOT NULL,
76+
[Description] TEXT NOT NULL,
77+
[DisplayName] NVARCHAR(200) NOT NULL,
78+
[Value] TEXT NOT NULL
79+
)
80+
;
81+
82+
-- Redirect Table
83+
CREATE TABLE [Redirect]
84+
(
85+
[Id] INTEGER CONSTRAINT 'PK_Redirect_ID' PRIMARY KEY AUTOINCREMENT,
86+
[From] NVARCHAR(255) NOT NULL,
87+
[To] NVARCHAR(255) NOT NULL
88+
)
89+
;
90+
91+
-- Pingback Table
92+
CREATE TABLE [Pingback]
93+
(
94+
[Id] INTEGER CONSTRAINT 'PK_Pingback_ID' PRIMARY KEY AUTOINCREMENT,
95+
[EntryId] INT NOT NULL,
96+
[TargetUri] NVARCHAR(255) NOT NULL,
97+
[TargetTitle] NVARCHAR(255) NOT NULL,
98+
[IsSpam] BIT NOT NULL,
99+
[Received] DATETIME NOT NULL,
100+
CONSTRAINT 'FK_Pingback_EntryId' FOREIGN KEY (EntryId) REFERENCES Entry(Id)
101+
ON UPDATE NO ACTION
102+
ON DELETE NO ACTION
103+
)
104+
;
105+
106+
-- Tag Table
107+
CREATE TABLE [Tag]
108+
(
109+
[Id] INTEGER CONSTRAINT 'PK_Tag_ID' PRIMARY KEY AUTOINCREMENT,
110+
[Name] NVARCHAR(50) NOT NULL
111+
)
112+
;
113+
114+
-- TagItem Table
115+
CREATE TABLE [TagItem]
116+
(
117+
[Id] INTEGER CONSTRAINT 'PK_TagItem_ID' PRIMARY KEY AUTOINCREMENT,
118+
[EntryId] INT NOT NULL,
119+
[TagId] INT NOT NULL,
120+
CONSTRAINT 'FK_TagItem_EntryId' FOREIGN KEY (EntryId) REFERENCES Entry(Id)
121+
ON UPDATE NO ACTION
122+
ON DELETE NO ACTION,
123+
CONSTRAINT 'FK_TagItem_TagId' FOREIGN KEY (TagId) REFERENCES Tag(Id)
124+
ON UPDATE NO ACTION
125+
ON DELETE NO ACTION
126+
)
127+
;
128+
129+
-- TaskState Table (records the status of a long-running task)
130+
CREATE TABLE [TaskState]
131+
(
132+
[Id] INTEGER CONSTRAINT 'PK_TaskState_ID' PRIMARY KEY AUTOINCREMENT,
133+
[TaskName] NVARCHAR(50) NOT NULL,
134+
[Arguments] TEXT NOT NULL,
135+
[ProgressEstimate] INT,
136+
[Status] NVARCHAR(30),
137+
[OutputLog] TEXT NOT NULL,
138+
[Started] DATETIME NOT NULL,
139+
[Updated] DATETIME NOT NULL
140+
)
141+
;

0 commit comments

Comments
 (0)