Skip to content

Commit b0b968b

Browse files
committed
Update Query Generation to templates
0 parents  commit b0b968b

1 file changed

Lines changed: 76 additions & 0 deletions

File tree

QueryTemplates.cs

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
using DbSyncKit.Templates.Interface;
2+
using HandlebarsDotNet;
3+
4+
namespace DbSyncKit.Templates.MySql
5+
{
6+
public class QueryTemplates : IQueryTemplates
7+
{
8+
#region Public Properties
9+
public HandlebarsTemplate<object, object> SELECT_QUERY => _selectQueryTemplate.Value;
10+
public HandlebarsTemplate<object, object> INSERT_QUERY => _insertQueryTemplate.Value;
11+
public HandlebarsTemplate<object, object> UPDATE_QUERY => _updateQueryTemplate.Value;
12+
public HandlebarsTemplate<object, object> DELETE_QUERY => _deleteQueryTemplate.Value;
13+
public HandlebarsTemplate<object, object> COMMENT_QUERY => _commentQueryTemplate.Value;
14+
15+
#endregion
16+
17+
#region Private Properties
18+
19+
private static Lazy<HandlebarsTemplate<object, object>> _selectQueryTemplate = new Lazy<HandlebarsTemplate<object, object>>(CreateSelectQueryTemplate);
20+
private static Lazy<HandlebarsTemplate<object, object>> _insertQueryTemplate = new Lazy<HandlebarsTemplate<object, object>>(CreateInsertQueryTemplate);
21+
private readonly Lazy<HandlebarsTemplate<object, object>> _updateQueryTemplate = new Lazy<HandlebarsTemplate<object, object>>(CreateUpdateQueryTemplate);
22+
private readonly Lazy<HandlebarsTemplate<object, object>> _deleteQueryTemplate = new Lazy<HandlebarsTemplate<object, object>>(CreateDeleteQueryTemplate);
23+
private readonly Lazy<HandlebarsTemplate<object, object>> _commentQueryTemplate = new Lazy<HandlebarsTemplate<object, object>>(CreateCommentQueryTemplate);
24+
#endregion
25+
26+
#region Templates
27+
28+
private static HandlebarsTemplate<object, object> CreateSelectQueryTemplate()
29+
{
30+
var str = @" SELECT {{Join Columns}} FROM {{TableName}}; ";
31+
32+
return Handlebars.Compile(str);
33+
}
34+
35+
private static HandlebarsTemplate<object, object> CreateInsertQueryTemplate()
36+
{
37+
var str = @"
38+
INSERT INTO `{{TableName}}` ({{Join Columns}}) SELECT {{Join Values}} FROM DUAL WHERE NOT EXISTS ( SELECT 1 FROM `{{TableName}}` WHERE {{And Where}} )
39+
";
40+
41+
return Handlebars.Compile(str);
42+
}
43+
44+
private static HandlebarsTemplate<object, object> CreateUpdateQueryTemplate()
45+
{
46+
var str = @"
47+
UPDATE `{{TableName}}` SET {{Join Set}} WHERE {{And Where}} LIMIT 1;
48+
";
49+
return Handlebars.Compile(str);
50+
}
51+
52+
private static HandlebarsTemplate<object, object> CreateDeleteQueryTemplate()
53+
{
54+
var str = @"
55+
DELETE FROM {{TableName}} WHERE {{And Where}} LIMIT 1; ";
56+
57+
return Handlebars.Compile(str);
58+
}
59+
60+
private static HandlebarsTemplate<object, object> CreateCommentQueryTemplate()
61+
{
62+
var str = @"{{#if !isMultiLine}} -- {{comment}}
63+
{{else}}
64+
/*
65+
{{comment}}
66+
*/
67+
{{/if}}";
68+
69+
return Handlebars.Compile(str);
70+
}
71+
#endregion
72+
73+
74+
75+
}
76+
}

0 commit comments

Comments
 (0)