-
-
Notifications
You must be signed in to change notification settings - Fork 111
/
MySQLDatabase.cs
31 lines (21 loc) · 1.18 KB
/
MySQLDatabase.cs
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
using System;
using EvolveDb.Connection;
using EvolveDb.Metadata;
namespace EvolveDb.Dialect.MySQL
{
internal class MySQLDatabase : DatabaseHelper
{
private const string LOCK_ID = "Evolve";
public MySQLDatabase(WrappedConnection wrappedConnection) : base(wrappedConnection)
{
}
public override string DatabaseName => "MySQL";
public override string CurrentUser => "SUBSTRING_INDEX(USER(),'@',1)";
public override SqlStatementBuilderBase SqlStatementBuilder => new SimpleSqlStatementBuilder();
public override string GetCurrentSchemaName() => WrappedConnection.QueryForString("SELECT DATABASE();");
public override IEvolveMetadata GetMetadataTable(string schema, string tableName) => new MySQLMetadataTable(schema, tableName, this);
public override Schema GetSchema(string schemaName) => new MySQLSchema(schemaName, WrappedConnection);
public override bool TryAcquireApplicationLock() => WrappedConnection.QueryForLong($"SELECT GET_LOCK('{LOCK_ID}', 0);") == 1;
public override bool ReleaseApplicationLock() => WrappedConnection.QueryForLong($"SELECT RELEASE_LOCK('{LOCK_ID}');") == 1;
}
}