mirror of
https://github.com/zoriya/Kyoo.git
synced 2026-05-27 09:32:35 -04:00
Now using the genre table inside the database. Adding menus inside the show details component of the webapp.
This commit is contained in:
@@ -9,10 +9,13 @@ namespace Kyoo.InternalAPI
|
||||
string GetShowExternalIDs(long showID);
|
||||
IEnumerable<Show> QueryShows(string selection);
|
||||
List<People> GetPeople(long showID);
|
||||
List<Genre> GetGenreForShow(long showID);
|
||||
|
||||
//Public read
|
||||
IEnumerable<Library> GetLibraries();
|
||||
Show GetShowBySlug(string slug);
|
||||
People GetPeopleBySlug(string slug);
|
||||
Genre GetGenreBySlug(string slug);
|
||||
|
||||
//Check if value exists
|
||||
bool IsShowRegistered(string showPath);
|
||||
@@ -26,6 +29,8 @@ namespace Kyoo.InternalAPI
|
||||
long RegisterSeason(Season season);
|
||||
long RegisterEpisode(Episode episode);
|
||||
|
||||
long GetOrCreateGenre(Genre genre);
|
||||
|
||||
void RegisterShowPeople(long showID, List<People> actors);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,7 +32,6 @@ namespace Kyoo.InternalAPI
|
||||
aliases TEXT,
|
||||
path TEXT UNIQUE,
|
||||
overview TEXT,
|
||||
genres TEXT,
|
||||
status TEXT,
|
||||
startYear INTEGER,
|
||||
endYear INTEGER,
|
||||
@@ -224,7 +223,7 @@ namespace Kyoo.InternalAPI
|
||||
SQLiteDataReader reader = cmd.ExecuteReader();
|
||||
|
||||
if (reader.Read())
|
||||
return Show.FromReader(reader).SetPeople(this);
|
||||
return Show.FromReader(reader).SetGenres(this).SetPeople(this);
|
||||
else
|
||||
return null;
|
||||
}
|
||||
@@ -242,11 +241,61 @@ namespace Kyoo.InternalAPI
|
||||
List<People> people = new List<People>();
|
||||
|
||||
while (reader.Read())
|
||||
people.Add(People.FromReader(reader));
|
||||
people.Add(People.FromFullReader(reader));
|
||||
|
||||
return people;
|
||||
}
|
||||
}
|
||||
|
||||
public People GetPeopleBySlug(string slug)
|
||||
{
|
||||
string query = "SELECT * FROM people WHERE slug = $slug;";
|
||||
|
||||
using (SQLiteCommand cmd = new SQLiteCommand(query, sqlConnection))
|
||||
{
|
||||
cmd.Parameters.AddWithValue("$slug", slug);
|
||||
SQLiteDataReader reader = cmd.ExecuteReader();
|
||||
|
||||
if (reader.Read())
|
||||
return People.FromReader(reader);
|
||||
else
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public List<Genre> GetGenreForShow(long showID)
|
||||
{
|
||||
string query = "SELECT genres.id, genres.slug, genres.name FROM genres JOIN genresLinks l ON l.genreID = genres.id WHERE l.showID = $showID;";
|
||||
|
||||
using (SQLiteCommand cmd = new SQLiteCommand(query, sqlConnection))
|
||||
{
|
||||
cmd.Parameters.AddWithValue("$showID", showID);
|
||||
SQLiteDataReader reader = cmd.ExecuteReader();
|
||||
|
||||
List<Genre> genres = new List<Genre>();
|
||||
|
||||
while (reader.Read())
|
||||
genres.Add(Genre.FromReader(reader));
|
||||
|
||||
return genres;
|
||||
}
|
||||
}
|
||||
|
||||
public Genre GetGenreBySlug(string slug)
|
||||
{
|
||||
string query = "SELECT * FROM genres WHERE slug = $slug;";
|
||||
|
||||
using (SQLiteCommand cmd = new SQLiteCommand(query, sqlConnection))
|
||||
{
|
||||
cmd.Parameters.AddWithValue("$slug", slug);
|
||||
SQLiteDataReader reader = cmd.ExecuteReader();
|
||||
|
||||
if (reader.Read())
|
||||
return Genre.FromReader(reader);
|
||||
else
|
||||
return null;
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Check if items exists
|
||||
@@ -308,12 +357,31 @@ namespace Kyoo.InternalAPI
|
||||
return cmd.ExecuteScalar() != null;
|
||||
}
|
||||
}
|
||||
|
||||
public long GetOrCreateGenre(Genre genre)
|
||||
{
|
||||
Genre existingGenre = GetGenreBySlug(genre.Slug);
|
||||
|
||||
if (existingGenre != null)
|
||||
return existingGenre.id;
|
||||
|
||||
string query = "INSERT INTO genres (slug, name) VALUES($slug, $name);";
|
||||
using (SQLiteCommand cmd = new SQLiteCommand(query, sqlConnection))
|
||||
{
|
||||
cmd.Parameters.AddWithValue("$slug", genre.Slug);
|
||||
cmd.Parameters.AddWithValue("$name", genre.Name);
|
||||
cmd.ExecuteNonQuery();
|
||||
|
||||
cmd.CommandText = "SELECT LAST_INSERT_ROWID()";
|
||||
return (long)cmd.ExecuteScalar();
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Write Into The Database
|
||||
public long RegisterShow(Show show)
|
||||
{
|
||||
string query = "INSERT INTO shows (slug, title, aliases, path, overview, genres, startYear, endYear, imgPrimary, imgThumb, imgLogo, imgBackdrop, externalIDs) VALUES($slug, $title, $aliases, $path, $overview, $genres, $startYear, $endYear, $imgPrimary, $imgThumb, $imgLogo, $imgBackdrop, $externalIDs);";
|
||||
string query = "INSERT INTO shows (slug, title, aliases, path, overview, startYear, endYear, imgPrimary, imgThumb, imgLogo, imgBackdrop, externalIDs) VALUES($slug, $title, $aliases, $path, $overview, $startYear, $endYear, $imgPrimary, $imgThumb, $imgLogo, $imgBackdrop, $externalIDs);";
|
||||
using (SQLiteCommand cmd = new SQLiteCommand(query, sqlConnection))
|
||||
{
|
||||
cmd.Parameters.AddWithValue("$slug", show.Slug);
|
||||
@@ -321,7 +389,6 @@ namespace Kyoo.InternalAPI
|
||||
cmd.Parameters.AddWithValue("$aliases", show.GetAliases());
|
||||
cmd.Parameters.AddWithValue("$path", show.Path);
|
||||
cmd.Parameters.AddWithValue("$overview", show.Overview);
|
||||
cmd.Parameters.AddWithValue("$genres", show.GetGenres());
|
||||
cmd.Parameters.AddWithValue("$status", show.Status);
|
||||
cmd.Parameters.AddWithValue("$startYear", show.StartYear);
|
||||
cmd.Parameters.AddWithValue("$endYear", show.EndYear);
|
||||
@@ -333,7 +400,18 @@ namespace Kyoo.InternalAPI
|
||||
cmd.ExecuteNonQuery();
|
||||
|
||||
cmd.CommandText = "SELECT LAST_INSERT_ROWID()";
|
||||
return (long)cmd.ExecuteScalar();
|
||||
long showID = (long)cmd.ExecuteScalar();
|
||||
|
||||
cmd.CommandText = "INSERT INTO genresLinks (genreID, showID) VALUES($genreID, $showID);";
|
||||
foreach (Genre genre in show.Genres)
|
||||
{
|
||||
long genreID = GetOrCreateGenre(genre);
|
||||
cmd.Parameters.AddWithValue("$genreID", genreID);
|
||||
cmd.Parameters.AddWithValue("$showID", showID);
|
||||
cmd.ExecuteNonQuery();
|
||||
}
|
||||
|
||||
return showID;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -176,7 +176,7 @@ namespace Kyoo.InternalAPI.MetadataProvider
|
||||
data.aliases,
|
||||
null, //Path
|
||||
data.overview,
|
||||
data.genre,
|
||||
GetGenres(data.genre),
|
||||
GetStatus(data.status),
|
||||
GetYear(data.firstAired),
|
||||
null, //endYear
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using Kyoo.Models;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
@@ -68,5 +69,15 @@ namespace Kyoo.InternalAPI.MetadataProvider
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public IEnumerable<Genre> GetGenres(string[] input)
|
||||
{
|
||||
List<Genre> genres = new List<Genre>();
|
||||
|
||||
foreach (string genre in input)
|
||||
genres.Add(new Genre(ToSlug(genre), genre));
|
||||
|
||||
return genres;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user