Finishing basic sql management.

This commit is contained in:
Zoe Roux 2019-08-04 15:54:16 +02:00
parent b74fb83a49
commit f5811b9ce4
3 changed files with 149 additions and 141 deletions

View File

@ -17,10 +17,10 @@ namespace Kyoo.Controllers
this.libraryManager = libraryManager; this.libraryManager = libraryManager;
} }
[HttpGet("api/browse")] [HttpGet("api/getall")]
public IEnumerable<Show> GetAll() public IEnumerable<Show> GetAll()
{ {
return libraryManager.QueryShows(null);//new Show[] { new Show(0, "clannad", "Clannad", null, "Best Anime", Status.Finished, 2007, 2008, "", "", "t", "", "", "TvDB=159|Mal=123") }; return libraryManager.QueryShows(null);
} }
} }
} }

View File

@ -2,7 +2,7 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Data.SQLite; using System.Data.SQLite;
using System.Diagnostics; using System.Diagnostics;
using System.Linq; using System.IO;
namespace Kyoo.InternalAPI namespace Kyoo.InternalAPI
{ {
@ -16,129 +16,137 @@ namespace Kyoo.InternalAPI
Debug.WriteLine("&Library Manager init"); Debug.WriteLine("&Library Manager init");
string databasePath = @"C://Projects/database.db"; string databasePath = @"C://Projects/database.db";
SQLiteConnection.CreateFile(databasePath); if (!File.Exists(databasePath))
sqlConnection = new SQLiteConnection(string.Format("Data Source={0};Version=3", databasePath)); {
sqlConnection.Open(); SQLiteConnection.CreateFile(databasePath);
sqlConnection = new SQLiteConnection(string.Format("Data Source={0};Version=3", databasePath));
string createStatement = @"CREATE TABLE shows( sqlConnection.Open();
id INTEGER PRIMARY KEY UNIQUE,
uri TEXT UNIQUE,
title TEXT,
aliases TEXT,
overview TEXT,
status TEXT,
startYear INTEGER,
endYear INTEGER,
imgPrimary TEXT,
imgThumb TEXT,
imgBanner TEXT,
imgLogo TEXT,
imgBackdrop TEXT,
externalIDs TEXT
);
CREATE TABLE seasons(
id INTEGER PRIMARY KEY UNIQUE,
showID INTEGER,
seasonNumber INTEGER,
title TEXT,
overview TEXT,
imgPrimary TEXT,
year INTEGER,
externalIDs TEXT,
FOREIGN KEY(showID) REFERENCES shows(id)
);
CREATE TABLE episodes(
id INTEGER PRIMARY KEY UNIQUE,
showID INTEGER,
seasonID INTEGER,
episodeNumber INTEGER,
title TEXT,
overview TEXT,
imgPrimary TEXT,
releaseDate TEXT,
runtime INTEGER,
externalIDs TEXT,
FOREIGN KEY(showID) REFERENCES shows(id),
FOREIGN KEY(seasonID) REFERENCES seasons(id)
);
CREATE TABLE streams(
id INTEGER PRIMARY KEY UNIQUE,
episodeID INTEGER,
streamIndex INTEGER,
streamType TEXT,
codec TEXT,
language TEXT,
channelLayout TEXT,
profile TEXT,
aspectRatio TEXT,
bitRate INTEGER,
sampleRate INTEGER,
isDefault BOOLEAN,
isForced BOOLEAN,
isExternal BOOLEAN,
height INTEGER,
width INTEGER,
frameRate NUMBER,
level NUMBER,
pixelFormat TEXT,
bitDepth INTEGER,
FOREIGN KEY(episodeID) REFERENCES episodes(id)
);
CREATE TABLE libraries( string createStatement = @"CREATE TABLE shows(
id INTEGER PRIMARY KEY UNIQUE, id INTEGER PRIMARY KEY UNIQUE,
uri TEXT UNIQUE, uri TEXT UNIQUE,
name TEXT title TEXT,
); aliases TEXT,
CREATE TABLE librariesLinks( overview TEXT,
librarieID INTEGER, status TEXT,
showID INTEGER, startYear INTEGER,
FOREIGN KEY(librarieID) REFERENCES libraries(id), endYear INTEGER,
FOREIGN KEY(showID) REFERENCES shows(id) imgPrimary TEXT,
); imgThumb TEXT,
imgBanner TEXT,
imgLogo TEXT,
imgBackdrop TEXT,
externalIDs TEXT
);
CREATE TABLE seasons(
id INTEGER PRIMARY KEY UNIQUE,
showID INTEGER,
seasonNumber INTEGER,
title TEXT,
overview TEXT,
imgPrimary TEXT,
year INTEGER,
externalIDs TEXT,
FOREIGN KEY(showID) REFERENCES shows(id)
);
CREATE TABLE episodes(
id INTEGER PRIMARY KEY UNIQUE,
showID INTEGER,
seasonID INTEGER,
episodeNumber INTEGER,
title TEXT,
overview TEXT,
imgPrimary TEXT,
releaseDate TEXT,
runtime INTEGER,
externalIDs TEXT,
FOREIGN KEY(showID) REFERENCES shows(id),
FOREIGN KEY(seasonID) REFERENCES seasons(id)
);
CREATE TABLE streams(
id INTEGER PRIMARY KEY UNIQUE,
episodeID INTEGER,
streamIndex INTEGER,
streamType TEXT,
codec TEXT,
language TEXT,
channelLayout TEXT,
profile TEXT,
aspectRatio TEXT,
bitRate INTEGER,
sampleRate INTEGER,
isDefault BOOLEAN,
isForced BOOLEAN,
isExternal BOOLEAN,
height INTEGER,
width INTEGER,
frameRate NUMBER,
level NUMBER,
pixelFormat TEXT,
bitDepth INTEGER,
FOREIGN KEY(episodeID) REFERENCES episodes(id)
);
CREATE TABLE studios( CREATE TABLE libraries(
id INTEGER PRIMARY KEY UNIQUE, id INTEGER PRIMARY KEY UNIQUE,
uri TEXT UNIQUE, uri TEXT UNIQUE,
name TEXT name TEXT
); );
CREATE TABLE studiosLinks( CREATE TABLE librariesLinks(
studioID INTEGER, librarieID INTEGER,
showID INTEGER, showID INTEGER,
FOREIGN KEY(studioID) REFERENCES studios(id), FOREIGN KEY(librarieID) REFERENCES libraries(id),
FOREIGN KEY(showID) REFERENCES shows(id) FOREIGN KEY(showID) REFERENCES shows(id)
); );
CREATE TABLE people( CREATE TABLE studios(
id INTEGER PRIMARY KEY UNIQUE, id INTEGER PRIMARY KEY UNIQUE,
uri TEXT UNIQUE, uri TEXT UNIQUE,
name TEXT, name TEXT
imgPrimary TEXT, );
externalIDs TEXT CREATE TABLE studiosLinks(
); studioID INTEGER,
CREATE TABLE peopleLinks( showID INTEGER,
peopleID INTEGER, FOREIGN KEY(studioID) REFERENCES studios(id),
showID INTEGER, FOREIGN KEY(showID) REFERENCES shows(id)
role TEXT, );
type TEXT,
FOREIGN KEY(peopleID) REFERENCES people(id),
FOREIGN KEY(showID) REFERENCES shows(id)
);
CREATE TABLE genres( CREATE TABLE people(
id INTEGER PRIMARY KEY UNIQUE, id INTEGER PRIMARY KEY UNIQUE,
uri TEXT UNIQUE, uri TEXT UNIQUE,
name TEXT name TEXT,
); imgPrimary TEXT,
CREATE TABLE genresLinks( externalIDs TEXT
genreID INTEGER, );
showID INTEGER, CREATE TABLE peopleLinks(
FOREIGN KEY(genreID) REFERENCES genres(id), peopleID INTEGER,
FOREIGN KEY(showID) REFERENCES shows(id) showID INTEGER,
);"; role TEXT,
type TEXT,
FOREIGN KEY(peopleID) REFERENCES people(id),
FOREIGN KEY(showID) REFERENCES shows(id)
);
SQLiteCommand createCmd = new SQLiteCommand(createStatement, sqlConnection); CREATE TABLE genres(
createCmd.ExecuteNonQuery(); id INTEGER PRIMARY KEY UNIQUE,
uri TEXT UNIQUE,
name TEXT
);
CREATE TABLE genresLinks(
genreID INTEGER,
showID INTEGER,
FOREIGN KEY(genreID) REFERENCES genres(id),
FOREIGN KEY(showID) REFERENCES shows(id)
);";
SQLiteCommand createCmd = new SQLiteCommand(createStatement, sqlConnection);
createCmd.ExecuteNonQuery();
}
else
{
sqlConnection = new SQLiteConnection(string.Format("Data Source={0};Version=3", databasePath));
sqlConnection.Open();
}
Debug.WriteLine("&Sql Database initated."); Debug.WriteLine("&Sql Database initated.");
} }

View File

@ -1,19 +1,20 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
namespace Kyoo.Models namespace Kyoo.Models
{ {
public class Show public class Show
{ {
public readonly int id; public readonly long id;
public string Uri; public string Uri;
public string Title; public string Title;
public List<string> Aliases; public List<string> Aliases;
public string Overview; public string Overview;
public Status Status; public Status? Status;
public int StartYear; public long? StartYear;
public int EndYear; public long? EndYear;
public string ImgPrimary; public string ImgPrimary;
public string ImgThumb; public string ImgThumb;
@ -24,7 +25,7 @@ namespace Kyoo.Models
public string ExternalIDs; public string ExternalIDs;
public Show(int id, string uri, string title, List<string> aliases, string overview, Status status, int startYear, int endYear, string imgPrimary, string imgThumb, string imgBanner, string imgLogo, string imgBackdrop, string externalIDs) public Show(long id, string uri, string title, List<string> aliases, string overview, Status? status, long? startYear, long? endYear, string imgPrimary, string imgThumb, string imgBanner, string imgLogo, string imgBackdrop, string externalIDs)
{ {
this.id = id; this.id = id;
Uri = uri; Uri = uri;
@ -42,23 +43,22 @@ namespace Kyoo.Models
ExternalIDs = externalIDs; ExternalIDs = externalIDs;
} }
//Cast error here (Unable to cast object of type 'System.Int64' to type 'System.Int32'.)
public static Show FromReader(System.Data.SQLite.SQLiteDataReader reader) public static Show FromReader(System.Data.SQLite.SQLiteDataReader reader)
{ {
return new Show((int)reader["id"], return new Show((long)reader["id"],
(string)reader["uri"], reader["uri"] as string,
(string)reader["title"], reader["title"] as string,
null, (reader["aliases"] as string)?.Split('|').ToList() ?? null,
(string)reader["overview"], reader["overview"] as string,
Status.Finished, reader["status"] as Status?,
(int)reader["startYear"], reader["startYear"] as long?,
(int)reader["endYear"], reader["endYear"] as long?,
(string)reader["imgPrimary"], reader["imgPrimary"] as string,
(string)reader["imgThumb"], reader["imgThumb"] as string,
(string)reader["imgBanner"], reader["imgBanner"] as string,
(string)reader["imgLogo"], reader["imgLogo"] as string,
(string)reader["imgBackdrop"], reader["imgBackdrop"] as string,
(string)reader["externalIDs"]); reader["externalIDs"] as string);
} }
} }