Skip to content

Commit eaca33e

Browse files
committed
support PostgreSql
1 parent dfa42db commit eaca33e

File tree

9 files changed

+392
-96
lines changed

9 files changed

+392
-96
lines changed

src/SmartCode.CLI/RazorTemplates/SqlMap-MySql.cshtml

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,26 @@
1717
var autoIncrement = table.AutoIncrement;
1818
var prefix = dbSource.DbProvider.ParameterPrefix;
1919
var colIndex = 0;
20+
var notEqCols = table.Columns.Where(m => m.ConvertedName != m.Name);
21+
var resultMapName = $"{table.ConvertedName}ResultMap";
22+
var queryStatementResultMap = table.HasColNameNotEqConvertedName ? "" : $"ResultMap=\"{resultMapName}\"";
2023
}
2124
<?xml version="1.0" encoding="utf-8" ?>
2225
<!--
2326
@{await IncludeAsync("Copyright.cshtml", Model);}
2427
-->
2528
<SmartSqlMap Scope="@table.ConvertedName" xmlns="http://SmartSql.net/schemas/SmartSqlMap.xsd">
29+
@if (table.HasColNameNotEqConvertedName)
30+
{
31+
<ResultMaps>
32+
<ResultMap Id="@resultMapName">
33+
@foreach (var col in notEqCols)
34+
{
35+
<Result Column="@col.Name" Property="@col.ConvertedName" />
36+
}
37+
</ResultMap>
38+
</ResultMaps>
39+
}
2640
<Statements>
2741
<Statement Id="QueryParams">
2842
<Where>
@@ -90,7 +104,7 @@
90104
Where @pkCol.Name=@[email protected]
91105
</Statement>
92106
<!--获取数据列-->
93-
<Statement Id="Query">
107+
<Statement Id="Query" @(queryStatementResultMap)>
94108
SELECT T.* From @table.Name T With(NoLock)
95109
<Include RefId="QueryParams" />
96110
Order By T.@pkCol.Name Desc
@@ -102,7 +116,7 @@
102116
<IsNotEmpty Prepend="Limit" Property="Taken">?Taken</IsNotEmpty>
103117
</Statement>
104118
<!--获取分页数据-->
105-
<Statement Id="QueryByPage">
119+
<Statement Id="QueryByPage" @(queryStatementResultMap)>
106120
Select T.* From @table.Name As T
107121
<Include RefId="QueryParams" />
108122
<Switch Prepend="Order By" Property="OrderBy">
@@ -118,7 +132,7 @@
118132
<Include RefId="QueryParams" />
119133
</Statement>
120134
<!--获取表映射实体-->
121-
<Statement Id="GetEntity">
135+
<Statement Id="GetEntity" @(queryStatementResultMap)>
122136
Select T.* From @table.Name As T
123137
<Where>
124138
<IsNotEmpty Prepend="And" Property="@pkCol.ConvertedName">
Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
@using RazorLight
2+
@using SmartCode
3+
@using SmartCode.Db
4+
@using SmartCode.CLI
5+
@inherits TemplatePage<BuildContext>
6+
@{
7+
DisableEncoding = true;
8+
var project = Model.Project;
9+
var dbSource = Model.GetDataSource<DbSource>();
10+
var buildTask = Model.Build;
11+
var table = Model.GetCurrentTable();
12+
var pkCol = table.PKColumn;
13+
if (pkCol == null)
14+
{
15+
throw new SmartCodeException($"{table.Name} can not find PKColumn!");
16+
}
17+
var primaryKeyType = pkCol?.LanguageType ?? "int";
18+
var autoIncrement = table.AutoIncrement;
19+
var prefix = dbSource.DbProvider.ParameterPrefix;
20+
var notEqCols = table.Columns.Where(m => m.ConvertedName != m.Name);
21+
var resultMapName = $"{table.ConvertedName}ResultMap";
22+
var queryStatementResultMap = table.HasColNameNotEqConvertedName ? "" : $"ResultMap=\"{resultMapName}\"";
23+
}
24+
<?xml version="1.0" encoding="utf-8" ?>
25+
<!--
26+
@{await IncludeAsync("Copyright.cshtml", Model);}
27+
-->
28+
<SmartSqlMap Scope="@table.ConvertedName" xmlns="http://SmartSql.net/schemas/SmartSqlMap.xsd">
29+
@if (table.HasColNameNotEqConvertedName)
30+
{
31+
<ResultMaps>
32+
<ResultMap Id="@resultMapName">
33+
@foreach (var col in notEqCols)
34+
{
35+
<Result Column="@col.Name" Property="@col.ConvertedName" />
36+
}
37+
</ResultMap>
38+
</ResultMaps>
39+
}
40+
<Statements>
41+
<Statement Id="QueryParams">
42+
<Where>
43+
</Where>
44+
</Statement>
45+
<!--新增-->
46+
<Statement Id="Insert">
47+
INSERT INTO @table.Name
48+
(
49+
@for (var i = 0; i < table.Columns.Count(); i++)
50+
{
51+
var col = table.Columns.ElementAt(i);
52+
@if (!col.AutoIncrement)
53+
{
54+
@this.PadLeft(i > 1 ? 0 : 6)@col.Name@(i == table.Columns.Count() - 1 ? "\r\n" : "\r\n" + this.PadLeft(6) + ",")
55+
}
56+
}
57+
)
58+
VALUES
59+
(
60+
@for (var i = 0; i < table.Columns.Count(); i++)
61+
{
62+
var col = table.Columns.ElementAt(i);
63+
@if (!col.AutoIncrement)
64+
{
65+
@this.PadLeft(i > 1 ? 0 : 6)@[email protected]@(i == table.Columns.Count() - 1 ? "\r\n" : "\r\n" + this.PadLeft(6) + ",")
66+
}
67+
}
68+
);
69+
</Statement>
70+
71+
<!--删除-->
72+
<Statement Id="Delete">
73+
Delete @table.Name
74+
Where @pkCol.Name=@pkCol.ConvertedName
75+
</Statement>
76+
77+
78+
<!--更新-->
79+
<Statement Id="Update">
80+
UPDATE @table.Name
81+
SET
82+
<Dynamic>
83+
@foreach (var col in table.Columns)
84+
{
85+
if (col.IsPrimaryKey) { continue; }
86+
<IsProperty Prepend="," Property="@col.ConvertedName">
87+
@col.Name = @(prefix)@col.ConvertedName
88+
</IsProperty>
89+
}
90+
</Dynamic>
91+
Where @pkCol.Name=@[email protected]
92+
</Statement>
93+
94+
<!--获取数据列-->
95+
<Statement Id="Query" @queryStatementResultMap>
96+
SELECT T.* From @table.Name T
97+
<Include RefId="QueryParams" />
98+
Order By T.@pkCol.Name Desc
99+
</Statement>
100+
101+
<!--获取分页数据-->
102+
<Statement Id="QueryByPage" @queryStatementResultMap>
103+
Select T.* From @table.Name As T
104+
<Include RefId="QueryParams" />
105+
<Switch Prepend="Order By" Property="OrderBy">
106+
<Default>
107+
T.@pkCol.Name Desc
108+
</Default>
109+
</Switch>
110+
Limit @("@PageSize") Offset @("@Offset")
111+
</Statement>
112+
113+
<!--获取记录数-->
114+
<Statement Id="GetRecord">
115+
Select Count(1) From @table.Name T
116+
<Include RefId="QueryParams" />
117+
</Statement>
118+
119+
<!--获取表映射实体-->
120+
<Statement Id="GetEntity" @queryStatementResultMap>
121+
Select Top 1 T.* From @table.Name T
122+
<Where>
123+
<IsNotEmpty Prepend="And" Property="@pkCol.ConvertedName">
124+
T.@pkCol.Name=@[email protected]
125+
</IsNotEmpty>
126+
</Where>
127+
</Statement>
128+
129+
<!--是否存在该记录-->
130+
<Statement Id="IsExist">
131+
Select Count(1) From @table.Name T
132+
<Include RefId="QueryParams" />
133+
</Statement>
134+
</Statements>
135+
</SmartSqlMap>
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
@using RazorLight
2+
@using SmartCode
3+
@using SmartCode.Db
4+
@using SmartCode.CLI
5+
@inherits TemplatePage<BuildContext>
6+
@{
7+
DisableEncoding = true;
8+
var project = Model.Project;
9+
var dbSource = Model.GetDataSource<DbSource>();
10+
var table = Model.GetCurrentTable();
11+
var notEqCols = table.Columns.Where(m => m.ConvertedName != m.Name);
12+
var resultMapName = $"{table.ConvertedName}ResultMap";
13+
}
14+
15+
@if (table.HasColNameNotEqConvertedName)
16+
{
17+
<ResultMaps>
18+
<ResultMap Id="@resultMapName">
19+
@foreach (var col in notEqCols)
20+
{
21+
<Result Column="@col.Name" Property="@col.ConvertedName" />
22+
}
23+
</ResultMap>
24+
</ResultMaps>
25+
}

0 commit comments

Comments
 (0)