forked from optimajet/WorkflowEngine.NET
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCreateObjects.sql
More file actions
152 lines (129 loc) · 5.29 KB
/
CreateObjects.sql
File metadata and controls
152 lines (129 loc) · 5.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
/*
Company: OptimaJet
Project: WF.Sample WorkflowEngine.NET
File: CreateObjects.sql
*/
BEGIN TRANSACTION
IF NOT EXISTS (SELECT 1 FROM [INFORMATION_SCHEMA].[TABLES] WHERE [TABLE_NAME] = N'StructDivision')
BEGIN
CREATE TABLE dbo.StructDivision (
Id uniqueidentifier NOT NULL,
Name nvarchar(256) NOT NULL,
ParentId uniqueidentifier NULL,
CONSTRAINT PK_StructDivision PRIMARY KEY (Id),
CONSTRAINT FK_StructDivision_StructDivision FOREIGN KEY (ParentId) REFERENCES dbo.StructDivision (Id)
)
PRINT 'StructDivision CREATE TABLE'
END
IF NOT EXISTS (SELECT 1 FROM [INFORMATION_SCHEMA].[VIEWS] WHERE [TABLE_NAME] = N'vStructDivisionParents')
BEGIN
EXEC('CREATE VIEW dbo.vStructDivisionParents
AS
with cteRecursive as (
select sd.Id FirstId, sd.ParentId ParentId, sd.Id Id
from [dbo].[StructDivision] sd WHERE sd.ParentId IS NOT NULL
union all
select r.FirstId FirstId, sdr.ParentId ParentId, sdr.Id Id
from [dbo].[StructDivision] sdr
inner join cteRecursive r ON r.ParentId = sdr.Id)
select DISTINCT FirstId Id, ParentId ParentId FROM cteRecursive ')
PRINT 'vStructDivisionParents CREATE VIEW'
END
IF NOT EXISTS (SELECT 1 FROM [INFORMATION_SCHEMA].[VIEWS] WHERE [TABLE_NAME] = N'vStructDivisionParentsAndThis')
BEGIN
EXEC('CREATE VIEW dbo.vStructDivisionParentsAndThis
AS
select Id Id, Id ParentId FROM [dbo].[StructDivision]
UNION
select Id Id, ParentId ParentId FROM [dbo].[vStructDivisionParents]')
PRINT 'vStructDivisionParentsAndThis CREATE VIEW'
END
IF NOT EXISTS (SELECT 1 FROM [INFORMATION_SCHEMA].[TABLES] WHERE [TABLE_NAME] = N'Employee')
BEGIN
CREATE TABLE dbo.Employee (
Id uniqueidentifier NOT NULL,
Name nvarchar(256) NOT NULL,
StructDivisionId uniqueidentifier NOT NULL,
IsHead bit NOT NULL CONSTRAINT DF_Employee_IsHead DEFAULT (0),
CONSTRAINT PK_Employee PRIMARY KEY (Id),
CONSTRAINT FK_Employee_StructDivision FOREIGN KEY (StructDivisionId) REFERENCES dbo.StructDivision (Id)
)
PRINT 'Employee CREATE TABLE'
END
IF NOT EXISTS (SELECT 1 FROM [INFORMATION_SCHEMA].[VIEWS] WHERE [TABLE_NAME] = N'vHeads')
BEGIN
EXEC('CREATE VIEW dbo.vHeads
AS
select e.Id Id, e.Name Name, eh.Id HeadId, eh.Name HeadName FROM Employee e
INNER JOIN [vStructDivisionParentsAndThis] vsp ON e.StructDivisionId = vsp.Id
INNER JOIN Employee eh ON eh.StructDivisionId = vsp.ParentId AND eh.IsHead = 1')
PRINT 'vHeads CREATE VIEW'
END
IF NOT EXISTS (SELECT 1 FROM [INFORMATION_SCHEMA].[TABLES] WHERE [TABLE_NAME] = N'Document')
BEGIN
CREATE TABLE dbo.Document (
Id uniqueidentifier NOT NULL,
Number int IDENTITY,
Name nvarchar(256) NOT NULL,
Comment nvarchar(max) NULL,
AuthorId uniqueidentifier NOT NULL,
EmloyeeControlerId uniqueidentifier NULL,
[Sum] money NOT NULL CONSTRAINT DF_Document_Sum DEFAULT (0),
[State] nvarchar(1024) NOT NULL DEFAULT ('Draft'),
StateName nvarchar(1024) ,
CONSTRAINT PK_Document PRIMARY KEY (Id),
CONSTRAINT FK_Document_Employee FOREIGN KEY (EmloyeeControlerId) REFERENCES dbo.Employee (Id),
CONSTRAINT FK_Document_Employee1 FOREIGN KEY (AuthorId) REFERENCES dbo.Employee (Id) ON DELETE CASCADE ON UPDATE CASCADE
)
PRINT 'Document CREATE TABLE'
END
IF NOT EXISTS (SELECT 1 FROM [INFORMATION_SCHEMA].[TABLES] WHERE [TABLE_NAME] = N'DocumentTransitionHistory')
BEGIN
CREATE TABLE dbo.DocumentTransitionHistory (
Id uniqueidentifier NOT NULL,
DocumentId uniqueidentifier NOT NULL,
EmployeeId uniqueidentifier NULL,
AllowedToEmployeeNames nvarchar(max) NOT NULL,
TransitionTime datetime NULL,
[Order] bigint IDENTITY,
TransitionTimeForSort AS (coalesce([TransitionTime],CONVERT([datetime],'9999-12-31',(20)))),
InitialState nvarchar(1024) NOT NULL,
DestinationState nvarchar(1024) NOT NULL,
Command nvarchar(1024) NOT NULL,
CONSTRAINT PK_DocumentTransitionHistory PRIMARY KEY (Id),
CONSTRAINT FK_DocumentTransitionHistory_Document FOREIGN KEY (DocumentId) REFERENCES dbo.Document (Id) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT FK_DocumentTransitionHistory_Employee FOREIGN KEY (EmployeeId) REFERENCES dbo.Employee (Id)
)
PRINT 'DocumentTransitionHistory CREATE TABLE'
END
IF NOT EXISTS (SELECT 1 FROM [INFORMATION_SCHEMA].[TABLES] WHERE [TABLE_NAME] = N'Roles')
BEGIN
CREATE TABLE dbo.Roles (
Id uniqueidentifier NOT NULL,
Name nvarchar(256) NOT NULL,
CONSTRAINT PK_Roles PRIMARY KEY (Id)
)
PRINT 'Roles CREATE TABLE'
END
IF NOT EXISTS (SELECT 1 FROM [INFORMATION_SCHEMA].[TABLES] WHERE [TABLE_NAME] = N'EmployeeRole')
BEGIN
CREATE TABLE dbo.EmployeeRole (
EmloyeeId uniqueidentifier NOT NULL,
RoleId uniqueidentifier NOT NULL,
CONSTRAINT PK_EmployeeRoles PRIMARY KEY (EmloyeeId, RoleId),
CONSTRAINT FK_EmployeeRole_Employee FOREIGN KEY (EmloyeeId) REFERENCES dbo.Employee (Id) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT FK_EmployeeRole_Roles FOREIGN KEY (RoleId) REFERENCES dbo.Roles (Id) ON DELETE CASCADE ON UPDATE CASCADE
)
PRINT 'EmployeeRole CREATE TABLE'
END
IF NOT EXISTS (SELECT 1 FROM [INFORMATION_SCHEMA].[TABLES] WHERE [TABLE_NAME] = N'LoadTestingOperation')
BEGIN
CREATE TABLE [dbo].[LoadTestingOperation](
[Id] [uniqueidentifier] NOT NULL,
[Date] [datetime] NOT NULL,
[Type] [nvarchar](256) NOT NULL,
[DurationMilliseconds] [float] NOT NULL,
CONSTRAINT [PK_LoadTestingOperation] PRIMARY KEY ([Id]))
PRINT 'LoadTestingOperation CREATE TABLE'
END
COMMIT TRANSACTION