2020-05-28 14:14:36 +00:00
|
|
|
using System;
|
|
|
|
using System.Collections.Generic;
|
|
|
|
using BuecherwurmAPI.Models;
|
|
|
|
using Microsoft.Data.Sqlite;
|
2020-05-29 09:18:23 +00:00
|
|
|
using Microsoft.VisualBasic.CompilerServices;
|
2020-05-28 14:14:36 +00:00
|
|
|
|
|
|
|
namespace BuecherwurmAPI.Data
|
|
|
|
{
|
|
|
|
internal class Repository : IRepository
|
|
|
|
{
|
|
|
|
private SqliteConnection _dbConnection;
|
2020-05-29 09:18:23 +00:00
|
|
|
|
2020-05-28 14:14:36 +00:00
|
|
|
public Repository()
|
|
|
|
{
|
|
|
|
var connectionBuilder = new SqliteConnectionStringBuilder {DataSource = "LongWormMemory.db"};
|
|
|
|
_dbConnection = new SqliteConnection(connectionBuilder.ConnectionString);
|
|
|
|
_dbConnection.Open();
|
|
|
|
}
|
|
|
|
|
2020-05-29 09:18:23 +00:00
|
|
|
public bool IdExits(string table, long id)
|
|
|
|
{
|
|
|
|
using (var command = _dbConnection.CreateCommand())
|
|
|
|
{
|
2020-05-29 09:30:38 +00:00
|
|
|
command.Parameters.Add(new SqliteParameter("@Id", SqliteType.Integer)).Value = id;
|
2020-05-29 09:18:23 +00:00
|
|
|
|
|
|
|
// Certain parts of the query can't be filled with variables for security reasons.
|
|
|
|
switch (table)
|
|
|
|
{
|
|
|
|
case Tables.Table.Lends:
|
2020-05-29 09:30:38 +00:00
|
|
|
command.CommandText = @"SELECT EXISTS(SELECT 0 FROM Lends WHERE Id = @Id)";
|
2020-05-29 09:18:23 +00:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
2020-05-29 09:30:38 +00:00
|
|
|
var dr = command.ExecuteReader();
|
2020-05-29 09:18:23 +00:00
|
|
|
|
|
|
|
long result = 0;
|
|
|
|
while (dr.Read())
|
|
|
|
{
|
|
|
|
result = (long) dr[0];
|
|
|
|
}
|
|
|
|
return result != 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-05-28 14:14:36 +00:00
|
|
|
public IEnumerable<Lend> GetAllLends()
|
|
|
|
{
|
|
|
|
var lends = new List<Lend>();
|
|
|
|
|
|
|
|
// using automatically disposes the command after completion
|
|
|
|
using (var command = _dbConnection.CreateCommand())
|
|
|
|
{
|
|
|
|
command.CommandText = @"SELECT * FROM Lends";
|
|
|
|
var dataReader = command.ExecuteReader();
|
|
|
|
|
|
|
|
while (dataReader.Read())
|
|
|
|
{
|
2020-05-29 09:18:23 +00:00
|
|
|
var returned = (long) dataReader["Returned"] == 1;
|
2020-05-28 14:14:36 +00:00
|
|
|
|
|
|
|
lends.Add(new Lend
|
|
|
|
{
|
|
|
|
Id = (long) dataReader["Id"],
|
|
|
|
Customer = (string) dataReader["Customer"],
|
|
|
|
ItemId = (long) dataReader["ItemId"],
|
2020-05-29 09:18:23 +00:00
|
|
|
Returned = returned,
|
2020-05-28 14:14:36 +00:00
|
|
|
ReturnDate = DateTime.Parse((string)dataReader["ReturnDate"])
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return lends;
|
|
|
|
}
|
|
|
|
|
2020-05-29 09:18:23 +00:00
|
|
|
public Lend GetLendById(long id)
|
2020-05-28 14:14:36 +00:00
|
|
|
{
|
2020-05-29 09:18:23 +00:00
|
|
|
using (var command = _dbConnection.CreateCommand())
|
|
|
|
{
|
|
|
|
command.Parameters.Add(new SqliteParameter("@id", SqliteType.Integer)).Value = id;
|
|
|
|
command.CommandText = @"SELECT * FROM Lends WHERE Id = @id";
|
|
|
|
var dataReader = command.ExecuteReader();
|
|
|
|
|
|
|
|
while (dataReader.Read())
|
|
|
|
{
|
|
|
|
var returned = (long) dataReader["Returned"] == 1;
|
|
|
|
|
|
|
|
var lend = new Lend
|
|
|
|
{
|
|
|
|
Id = (long) dataReader["Id"],
|
|
|
|
Customer = (string) dataReader["Customer"],
|
|
|
|
ItemId = (long) dataReader["ItemId"],
|
|
|
|
Returned = returned,
|
|
|
|
ReturnDate = DateTime.Parse((string) dataReader["ReturnDate"])
|
|
|
|
};
|
|
|
|
return lend;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return null;
|
2020-05-28 14:14:36 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|