|
1 | 1 | using DbSyncKit.Templates.Interface; |
2 | | -using DotLiquid; |
| 2 | +using Fluid; |
3 | 3 |
|
4 | 4 | namespace DbSyncKit.Templates.MySql |
5 | 5 | { |
6 | 6 | public class QueryTemplates : IQueryTemplates |
7 | 7 | { |
8 | 8 | #region Public Properties |
9 | | - public Template SELECT_QUERY => _selectQueryTemplate.Value; |
10 | | - public Template INSERT_QUERY => _insertQueryTemplate.Value; |
11 | | - public Template UPDATE_QUERY => _updateQueryTemplate.Value; |
12 | | - public Template DELETE_QUERY => _deleteQueryTemplate.Value; |
13 | | - public Template COMMENT_QUERY => _commentQueryTemplate.Value; |
| 9 | + public IFluidTemplate SELECT_QUERY => _selectQueryTemplate.Value; |
| 10 | + public IFluidTemplate INSERT_QUERY => _insertQueryTemplate.Value; |
| 11 | + public IFluidTemplate UPDATE_QUERY => _updateQueryTemplate.Value; |
| 12 | + public IFluidTemplate DELETE_QUERY => _deleteQueryTemplate.Value; |
| 13 | + public IFluidTemplate COMMENT_QUERY => _commentQueryTemplate.Value; |
14 | 14 |
|
15 | 15 | #endregion |
16 | 16 |
|
17 | 17 | #region Private Properties |
18 | 18 |
|
19 | | - private static Lazy<Template> _selectQueryTemplate = new Lazy<Template>(CreateSelectQueryTemplate); |
20 | | - private static Lazy<Template> _insertQueryTemplate = new Lazy<Template>(CreateInsertQueryTemplate); |
21 | | - private readonly Lazy<Template> _updateQueryTemplate = new Lazy<Template>(CreateUpdateQueryTemplate); |
22 | | - private readonly Lazy<Template> _deleteQueryTemplate = new Lazy<Template>(CreateDeleteQueryTemplate); |
23 | | - private readonly Lazy<Template> _commentQueryTemplate = new Lazy<Template>(CreateCommentQueryTemplate); |
| 19 | + private static Lazy<IFluidTemplate> _selectQueryTemplate = new Lazy<IFluidTemplate>(CreateSelectQueryTemplate); |
| 20 | + private static Lazy<IFluidTemplate> _insertQueryTemplate = new Lazy<IFluidTemplate>(CreateInsertQueryTemplate); |
| 21 | + private readonly Lazy<IFluidTemplate> _updateQueryTemplate = new Lazy<IFluidTemplate>(CreateUpdateQueryTemplate); |
| 22 | + private readonly Lazy<IFluidTemplate> _deleteQueryTemplate = new Lazy<IFluidTemplate>(CreateDeleteQueryTemplate); |
| 23 | + private readonly Lazy<IFluidTemplate> _commentQueryTemplate = new Lazy<IFluidTemplate>(CreateCommentQueryTemplate); |
| 24 | + private static readonly FluidParser parser = new FluidParser(); |
24 | 25 | #endregion |
25 | 26 |
|
26 | 27 | #region Templates |
27 | 28 |
|
28 | | - private static Template CreateSelectQueryTemplate() |
| 29 | + private static IFluidTemplate CreateSelectQueryTemplate() |
29 | 30 | { |
30 | 31 | var str = @" SELECT {{ Columns | join: ', ' }} FROM {{ TableName }}; "; |
31 | 32 |
|
32 | | - return Template.Parse(str); |
| 33 | + return parser.Parse(str); |
33 | 34 | } |
34 | 35 |
|
35 | | - private static Template CreateInsertQueryTemplate() |
| 36 | + private static IFluidTemplate CreateInsertQueryTemplate() |
36 | 37 | { |
37 | 38 | var str = @" |
38 | 39 | INSERT INTO `{{ TableName }}` ({{ Columns | join: ', ' }}) SELECT {{ Values | join: ', ' }} FROM DUAL WHERE NOT EXISTS ( SELECT 1 FROM `{{ TableName }}` WHERE {{ Where | join: ' AND ' }} ) |
39 | 40 | "; |
40 | 41 |
|
41 | | - return Template.Parse(str); |
| 42 | + return parser.Parse(str); |
42 | 43 | } |
43 | 44 |
|
44 | | - private static Template CreateUpdateQueryTemplate() |
| 45 | + private static IFluidTemplate CreateUpdateQueryTemplate() |
45 | 46 | { |
46 | 47 | var str = @" |
47 | 48 | UPDATE `{{ TableName }}` SET {{ Set | join: ', ' }} WHERE {{ Where | join: ' AND ' }} LIMIT 1; |
48 | 49 | "; |
49 | | - return Template.Parse(str); |
| 50 | + return parser.Parse(str); |
50 | 51 | } |
51 | 52 |
|
52 | | - private static Template CreateDeleteQueryTemplate() |
| 53 | + private static IFluidTemplate CreateDeleteQueryTemplate() |
53 | 54 | { |
54 | 55 | var str = @" |
55 | 56 | DELETE FROM {{ TableName }} WHERE {{ Where | join: ' AND ' }} LIMIT 1; "; |
56 | 57 |
|
57 | | - return Template.Parse(str); |
| 58 | + return parser.Parse(str); |
58 | 59 | } |
59 | 60 |
|
60 | | - private static Template CreateCommentQueryTemplate() |
| 61 | + private static IFluidTemplate CreateCommentQueryTemplate() |
61 | 62 | { |
62 | 63 | var str = @"{% unless isMultiLine %} -- {{ comment }} {% else %} |
63 | 64 | /* |
64 | 65 | {{ comment }} |
65 | 66 | */ |
66 | 67 | -- {{ comment }} {% endunless %}"; |
67 | 68 |
|
68 | | - return Template.Parse(str); |
| 69 | + return parser.Parse(str); |
69 | 70 | } |
70 | 71 | #endregion |
71 | 72 |
|
|
0 commit comments