-
-
Notifications
You must be signed in to change notification settings - Fork 524
Expand file tree
/
Copy pathPostgresCompiler.cs
More file actions
69 lines (55 loc) · 1.96 KB
/
PostgresCompiler.cs
File metadata and controls
69 lines (55 loc) · 1.96 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
using System.Collections.Generic;
namespace SqlKata.Compilers
{
public class PostgresCompiler : Compiler
{
public PostgresCompiler()
{
LastId = "SELECT lastval() AS id";
}
public override string EngineCode { get; } = EngineCodes.PostgreSql;
protected override string CompileBasicDateCondition(SqlResult ctx, BasicDateCondition condition)
{
var column = Wrap(condition.Column);
string left;
if (condition.Part == "time")
{
left = $"{column}::time";
}
else if (condition.Part == "date")
{
left = $"{column}::date";
}
else
{
left = $"DATE_PART('{condition.Part.ToUpperInvariant()}', {column})";
}
var sql = $"{left} {condition.Operator} {Parameter(ctx, condition.Value)}";
if (condition.IsNot)
{
return $"NOT ({sql})";
}
return sql;
}
protected override string CompileInsertQueryString(string table, List<string> columns, string rawValues, List<string> returnColumns)
{
var rawSql = base.CompileInsertQueryString(table, columns, rawValues, returnColumns);
if (returnColumns.Count > 0)
{
var returning = string.Join(", ", WrapArray(returnColumns));
rawSql += $" RETURNING {returning}";
}
return rawSql;
}
protected override string CompileUpdateQueryString(string table, string sets, string where, List<string> returnColumns)
{
var rawSql = $"UPDATE {table} SET {sets}{where}";
if (returnColumns.Count > 0)
{
var returning = string.Join(", ", WrapArray(returnColumns));
rawSql += $" RETURNING {returning}";
}
return rawSql;
}
}
}