You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
123 lines
5.3 KiB
123 lines
5.3 KiB
using System; |
|
using System.Collections.Generic; |
|
using BuecherwurmAPI.Models; |
|
using Microsoft.Data.Sqlite; |
|
using Microsoft.VisualBasic.CompilerServices; |
|
|
|
namespace BuecherwurmAPI.Models |
|
{ |
|
internal class Katalog : IBookRepo |
|
{ |
|
private SqliteConnection _dbConnection; |
|
|
|
public Katalog() |
|
{ |
|
var connectionBuilder = new SqliteConnectionStringBuilder {DataSource = "LongWormMemory.db"}; |
|
_dbConnection = new SqliteConnection(connectionBuilder.ConnectionString); |
|
_dbConnection.Open(); |
|
} |
|
|
|
public IEnumerable<Book> GetAllBooks() |
|
{ |
|
var books= new List<Book>(); |
|
|
|
using (var command = _dbConnection.CreateCommand()) |
|
{ |
|
command.CommandText = @"SELECT * FROM Books"; |
|
var dataReader = command.ExecuteReader(); |
|
|
|
while (dataReader.Read()) |
|
{ |
|
books.Add(new Book |
|
{ |
|
Name = (string) dataReader["Books"], |
|
Author = (string) dataReader["Author"], |
|
Country = (string) dataReader["Country"], |
|
Link = (string) dataReader["Link"], |
|
Language = (string) dataReader["Language"], |
|
Pages = (long) dataReader["Pages"], |
|
Year = (long) dataReader["Year"], |
|
ProductId = (long) dataReader["ProductId"], |
|
Category = (CategoryEnum) dataReader["Category"], |
|
ImageLink = (string) dataReader["ImageLink"], |
|
LendTime = (long) dataReader["LendTime"], |
|
LendType = (LendTypeEnum) dataReader["LendType"] |
|
}); |
|
} |
|
} |
|
return books; |
|
} |
|
|
|
public Book GetBookById(long id) |
|
{ |
|
using (var command = _dbConnection.CreateCommand()) |
|
{ |
|
command.Parameters.Add(new SqliteParameter("@id", SqliteType.Integer)).Value = id; |
|
command.CommandText = @"SELECT * FROM Books WHERE ProductId = @id"; |
|
var dataReader = command.ExecuteReader(); |
|
|
|
var book = new Book |
|
{ |
|
Name = (string) dataReader["Books"], |
|
Author = (string) dataReader["Author"], |
|
Country = (string) dataReader["Country"], |
|
Link = (string) dataReader["Link"], |
|
Language = (string) dataReader["Language"], |
|
Pages = (long) dataReader["Pages"], |
|
Year = (long) dataReader["Year"], |
|
ProductId = (long) dataReader["ProductId"], |
|
Category = (CategoryEnum) dataReader["Category"], |
|
ImageLink = (string) dataReader["ImageLink"], |
|
LendTime = (long) dataReader["LendTime"], |
|
LendType = (LendTypeEnum) dataReader["LendType"] |
|
}; |
|
return book; |
|
} |
|
} |
|
public void DeleteBook(long id) |
|
{ |
|
using (var command = _dbConnection.CreateCommand()) |
|
{ |
|
// funktioniert das so? |
|
command.Parameters.Add(new SqliteParameter("@id", SqliteType.Integer)).Value = id; |
|
command.CommandText = @"DELETE * FROM Books WHERE ProductId= @id"; |
|
var dataReader = command.ExecuteReader(); |
|
} |
|
} |
|
|
|
public void AddBook (Book book) |
|
{ |
|
using (var command = _dbConnection.CreateCommand()) |
|
{ |
|
// funktioniert das so? |
|
command.CommandText = @"INSERT INTO Books (Name, Author, Country, Link, Language, Pages, Year, ProductId, Category, ImageLink, LendTime, LendType) VALUES (book.Name, book.Author, book.Contry, book.Link, book.Language, book.Pages, book.Year, book.ProductId, book.Category, book.ImageLink, book.LendTime, book.LendType)"; |
|
|
|
command.Parameters.Add(new SqliteParameter("@itemId", lend.ItemId)); |
|
command.Parameters.Add(new SqliteParameter("@returnDate", lend.ReturnDate)); |
|
command.Parameters.Add(new SqliteParameter("@customer", lend.Customer)); |
|
|
|
var success = command.ExecuteNonQuery(); |
|
|
|
if (success == 1) |
|
{ |
|
command.CommandText = @"SELECT last_insert_rowid()"; |
|
return (long)command.ExecuteScalar(); |
|
} |
|
|
|
return -1; |
|
} |
|
} |
|
|
|
public void EditBook (long id, Book book) |
|
{ |
|
using (var command = _dbConnection.CreateCommand()) |
|
{ |
|
// funktioniert das so? |
|
command.Parameters.Add(new SqliteParameter("@id", SqliteType.Integer)).Value = id; |
|
command.CommandText = @"INSERT INTO Books (Name, Author, Country, Link, Language, Pages, Year, ProductId, Category, ImageLink, LendTime, LendType)VALUES (book.Name, book.Author, book.Contry, book.Link, book.Language, book.Pages, book.Year, book.ProductId, book.Category, book.ImageLink, book.LendTime, book.LendType) WHERE ProductId = @id"; |
|
var dataReader = command.ExecuteReader(); |
|
} |
|
} |
|
|
|
} |
|
} |