mirror of
https://gitlab.com/nullmax17/RestySqlite.git
synced 2025-03-14 16:01:13 +03:00
121 lines
3.7 KiB
C#
121 lines
3.7 KiB
C#
using Microsoft.AspNetCore.Http.HttpResults;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
|
|
namespace RestySqlite
|
|
{
|
|
public class DatabaseRepository
|
|
{
|
|
private DatabaseWrapper _db;
|
|
|
|
public DatabaseRepository(DatabaseWrapper db)
|
|
{
|
|
_db = db;
|
|
}
|
|
|
|
public async Task<Dictionary<string, List<string>>?> ListTables()
|
|
{
|
|
return await Task.Run(() => {
|
|
try
|
|
{
|
|
return _db.MapColumns();
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
Console.WriteLine(e);
|
|
return null;
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
public async Task<Dictionary<string, List<string>>?> ListColumns(string table)
|
|
{
|
|
return await Task.Run(() => {
|
|
try
|
|
{
|
|
var scheme = _db.MapColumns();
|
|
var filtered = from tbl in scheme.Keys where tbl == table select scheme[tbl];
|
|
|
|
Dictionary<string, List<string>> result = new();
|
|
foreach (var column in filtered.Single())
|
|
{
|
|
result.Add(column, _db.MapColumn(column, table));
|
|
}
|
|
|
|
return result;
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
Console.WriteLine(e);
|
|
return null;
|
|
}
|
|
});
|
|
|
|
|
|
}
|
|
|
|
public async Task<List<string>?> ListColumnValues(string table, string column)
|
|
{
|
|
return await Task.Run(() => {
|
|
var values = _db.MapColumn(column, table);
|
|
return values;
|
|
});
|
|
|
|
}
|
|
|
|
public async Task<Dictionary<string, string>?> FetchValue(string table, int id)
|
|
{
|
|
return await Task.Run(() => {
|
|
try
|
|
{
|
|
var reader = _db.GetReader($"SELECT * FROM {table} WHERE id = {id}");
|
|
/* var sqlCommand = "SELECT * FROM $table WHERE id = $id";
|
|
var reader = _db.GetReader(sqlCommand,
|
|
new Parameter("$table", table),
|
|
new Parameter("$id", id)
|
|
); */
|
|
Dictionary<string, string> result = new();
|
|
using (reader)
|
|
{
|
|
while (reader.Read())
|
|
{
|
|
foreach (var column in _db.MapColumns()[table])
|
|
{
|
|
if (!result.ContainsKey(column))
|
|
{
|
|
result.Add(column, reader[column].ToString());
|
|
continue;
|
|
}
|
|
result[column] = reader[column].ToString();
|
|
|
|
}
|
|
}
|
|
}
|
|
return result;
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
Console.WriteLine(e);
|
|
return null;
|
|
}
|
|
});
|
|
}
|
|
|
|
public async Task<string> ProcessCommand(string sqlCommand)
|
|
{
|
|
return await Task.Run(() => {
|
|
try
|
|
{
|
|
_db.ExecuteCommand(sqlCommand);
|
|
return "succses";
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
return e.Message;
|
|
}
|
|
|
|
});
|
|
}
|
|
}
|
|
} |