mirror of
				https://github.com/zoriya/Kyoo.git
				synced 2025-11-04 03:27:14 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			291 lines
		
	
	
		
			7.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			291 lines
		
	
	
		
			7.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
// Kyoo - A portable and vast media library solution.
 | 
						|
// Copyright (c) Kyoo.
 | 
						|
//
 | 
						|
// See AUTHORS.md and LICENSE file in the project root for full license information.
 | 
						|
//
 | 
						|
// Kyoo is free software: you can redistribute it and/or modify
 | 
						|
// it under the terms of the GNU General Public License as published by
 | 
						|
// the Free Software Foundation, either version 3 of the License, or
 | 
						|
// any later version.
 | 
						|
//
 | 
						|
// Kyoo is distributed in the hope that it will be useful,
 | 
						|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
						|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 | 
						|
// GNU General Public License for more details.
 | 
						|
//
 | 
						|
// You should have received a copy of the GNU General Public License
 | 
						|
// along with Kyoo. If not, see <https://www.gnu.org/licenses/>.
 | 
						|
 | 
						|
using System;
 | 
						|
using System.Collections.Generic;
 | 
						|
using Kyoo.Abstractions.Models;
 | 
						|
using Kyoo.Postgresql;
 | 
						|
 | 
						|
namespace Kyoo.Tests
 | 
						|
{
 | 
						|
	public static class TestSample
 | 
						|
	{
 | 
						|
		private static readonly Dictionary<Type, Func<object>> NewSamples =
 | 
						|
			new()
 | 
						|
			{
 | 
						|
				{
 | 
						|
					typeof(Collection),
 | 
						|
					() =>
 | 
						|
						new Collection
 | 
						|
						{
 | 
						|
							Id = 2.AsGuid(),
 | 
						|
							Slug = "new-collection",
 | 
						|
							Name = "New Collection",
 | 
						|
							Overview = "A collection created by new sample",
 | 
						|
							Thumbnail = new Image("thumbnail")
 | 
						|
						}
 | 
						|
				},
 | 
						|
				{
 | 
						|
					typeof(Show),
 | 
						|
					() =>
 | 
						|
						new Show
 | 
						|
						{
 | 
						|
							Id = 2.AsGuid(),
 | 
						|
							Slug = "new-show",
 | 
						|
							Name = "New Show",
 | 
						|
							Overview = "overview",
 | 
						|
							Status = Status.Planned,
 | 
						|
							StartAir = new DateTime(2011, 1, 1).ToUniversalTime(),
 | 
						|
							EndAir = new DateTime(2011, 1, 1).ToUniversalTime(),
 | 
						|
							Poster = new Image("Poster"),
 | 
						|
							Logo = new Image("Logo"),
 | 
						|
							Thumbnail = new Image("Thumbnail"),
 | 
						|
							Studio = null
 | 
						|
						}
 | 
						|
				},
 | 
						|
				{
 | 
						|
					typeof(Season),
 | 
						|
					() =>
 | 
						|
						new Season
 | 
						|
						{
 | 
						|
							Id = 2.AsGuid(),
 | 
						|
							ShowId = 1.AsGuid(),
 | 
						|
							ShowSlug = Get<Show>().Slug,
 | 
						|
							Name = "New season",
 | 
						|
							Overview = "New overview",
 | 
						|
							EndDate = new DateTime(2000, 10, 10).ToUniversalTime(),
 | 
						|
							SeasonNumber = 2,
 | 
						|
							StartDate = new DateTime(2010, 10, 10).ToUniversalTime(),
 | 
						|
							Logo = new Image("logo")
 | 
						|
						}
 | 
						|
				},
 | 
						|
				{
 | 
						|
					typeof(Episode),
 | 
						|
					() =>
 | 
						|
						new Episode
 | 
						|
						{
 | 
						|
							Id = 2.AsGuid(),
 | 
						|
							ShowId = 1.AsGuid(),
 | 
						|
							ShowSlug = Get<Show>().Slug,
 | 
						|
							SeasonId = 1.AsGuid(),
 | 
						|
							SeasonNumber = Get<Season>().SeasonNumber,
 | 
						|
							EpisodeNumber = 3,
 | 
						|
							AbsoluteNumber = 4,
 | 
						|
							Path = "/episode-path",
 | 
						|
							Name = "New Episode Title",
 | 
						|
							ReleaseDate = new DateTime(2000, 10, 10).ToUniversalTime(),
 | 
						|
							Overview = "new episode overview",
 | 
						|
							Logo = new Image("new episode logo")
 | 
						|
						}
 | 
						|
				},
 | 
						|
				{
 | 
						|
					typeof(People),
 | 
						|
					() =>
 | 
						|
						new People
 | 
						|
						{
 | 
						|
							Id = 2.AsGuid(),
 | 
						|
							Slug = "new-person-name",
 | 
						|
							Name = "New person name",
 | 
						|
							Logo = new Image("Old Logo"),
 | 
						|
							Poster = new Image("Old poster")
 | 
						|
						}
 | 
						|
				}
 | 
						|
			};
 | 
						|
 | 
						|
		private static readonly Dictionary<Type, Func<object>> Samples =
 | 
						|
			new()
 | 
						|
			{
 | 
						|
				{
 | 
						|
					typeof(Collection),
 | 
						|
					() =>
 | 
						|
						new Collection
 | 
						|
						{
 | 
						|
							Id = 1.AsGuid(),
 | 
						|
							Slug = "collection",
 | 
						|
							Name = "Collection",
 | 
						|
							Overview = "A nice collection for tests",
 | 
						|
							Poster = new Image("Poster")
 | 
						|
						}
 | 
						|
				},
 | 
						|
				{
 | 
						|
					typeof(Show),
 | 
						|
					() =>
 | 
						|
						new Show
 | 
						|
						{
 | 
						|
							Id = 1.AsGuid(),
 | 
						|
							Slug = "anohana",
 | 
						|
							Name = "Anohana: The Flower We Saw That Day",
 | 
						|
							Aliases = new List<string>
 | 
						|
							{
 | 
						|
								"Ano Hi Mita Hana no Namae o Bokutachi wa Mada Shiranai.",
 | 
						|
								"AnoHana",
 | 
						|
								"We Still Don't Know the Name of the Flower We Saw That Day."
 | 
						|
							},
 | 
						|
							Overview =
 | 
						|
								"When Yadomi Jinta was a child, he was a central piece in a group of close friends. "
 | 
						|
								+ "In time, however, these childhood friends drifted apart, and when they became high "
 | 
						|
								+ "school students, they had long ceased to think of each other as friends.",
 | 
						|
							Status = Status.Finished,
 | 
						|
							StudioId = 1.AsGuid(),
 | 
						|
							StartAir = new DateTime(2011, 1, 1).ToUniversalTime(),
 | 
						|
							EndAir = new DateTime(2011, 1, 1).ToUniversalTime(),
 | 
						|
							Poster = new Image("Poster"),
 | 
						|
							Logo = new Image("Logo"),
 | 
						|
							Thumbnail = new Image("Thumbnail"),
 | 
						|
							Studio = null
 | 
						|
						}
 | 
						|
				},
 | 
						|
				{
 | 
						|
					typeof(Season),
 | 
						|
					() =>
 | 
						|
						new Season
 | 
						|
						{
 | 
						|
							Id = 1.AsGuid(),
 | 
						|
							ShowSlug = "anohana",
 | 
						|
							ShowId = 1.AsGuid(),
 | 
						|
							SeasonNumber = 1,
 | 
						|
							Name = "Season 1",
 | 
						|
							Overview = "The first season",
 | 
						|
							StartDate = new DateTime(2020, 06, 05).ToUniversalTime(),
 | 
						|
							EndDate = new DateTime(2020, 07, 05).ToUniversalTime(),
 | 
						|
							Poster = new Image("Poster"),
 | 
						|
							Logo = new Image("Logo"),
 | 
						|
							Thumbnail = new Image("Thumbnail")
 | 
						|
						}
 | 
						|
				},
 | 
						|
				{
 | 
						|
					typeof(Episode),
 | 
						|
					() =>
 | 
						|
						new Episode
 | 
						|
						{
 | 
						|
							Id = 1.AsGuid(),
 | 
						|
							ShowSlug = "anohana",
 | 
						|
							ShowId = 1.AsGuid(),
 | 
						|
							SeasonId = 1.AsGuid(),
 | 
						|
							SeasonNumber = 1,
 | 
						|
							EpisodeNumber = 1,
 | 
						|
							AbsoluteNumber = 1,
 | 
						|
							Path = "/home/kyoo/anohana-s1e1",
 | 
						|
							Poster = new Image("Poster"),
 | 
						|
							Logo = new Image("Logo"),
 | 
						|
							Thumbnail = new Image("Thumbnail"),
 | 
						|
							Name = "Episode 1",
 | 
						|
							Overview = "Summary of the first episode",
 | 
						|
							ReleaseDate = new DateTime(2020, 06, 05).ToUniversalTime()
 | 
						|
						}
 | 
						|
				},
 | 
						|
				{
 | 
						|
					typeof(People),
 | 
						|
					() =>
 | 
						|
						new People
 | 
						|
						{
 | 
						|
							Id = 1.AsGuid(),
 | 
						|
							Slug = "the-actor",
 | 
						|
							Name = "The Actor",
 | 
						|
							Poster = new Image("Poster"),
 | 
						|
							Logo = new Image("Logo"),
 | 
						|
							Thumbnail = new Image("Thumbnail")
 | 
						|
						}
 | 
						|
				},
 | 
						|
				{
 | 
						|
					typeof(Studio),
 | 
						|
					() =>
 | 
						|
						new Studio
 | 
						|
						{
 | 
						|
							Id = 1.AsGuid(),
 | 
						|
							Slug = "hyper-studio",
 | 
						|
							Name = "Hyper studio",
 | 
						|
						}
 | 
						|
				},
 | 
						|
				{
 | 
						|
					typeof(User),
 | 
						|
					() =>
 | 
						|
						new User
 | 
						|
						{
 | 
						|
							Id = 1.AsGuid(),
 | 
						|
							Slug = "user",
 | 
						|
							Username = "User",
 | 
						|
							Email = "user@im-a-user.com",
 | 
						|
							Password = "MD5-encoded",
 | 
						|
							Permissions = new[] { "overall.read" }
 | 
						|
						}
 | 
						|
				}
 | 
						|
			};
 | 
						|
 | 
						|
		public static T Get<T>()
 | 
						|
		{
 | 
						|
			return (T)Samples[typeof(T)]();
 | 
						|
		}
 | 
						|
 | 
						|
		public static T GetNew<T>()
 | 
						|
		{
 | 
						|
			return (T)NewSamples[typeof(T)]();
 | 
						|
		}
 | 
						|
 | 
						|
		public static void FillDatabase(DatabaseContext context)
 | 
						|
		{
 | 
						|
			Collection collection = Get<Collection>();
 | 
						|
			context.Collections.Add(collection);
 | 
						|
 | 
						|
			Show show = Get<Show>();
 | 
						|
			context.Shows.Add(show);
 | 
						|
 | 
						|
			Season season = Get<Season>();
 | 
						|
			season.Show = show;
 | 
						|
			context.Seasons.Add(season);
 | 
						|
 | 
						|
			Episode episode = Get<Episode>();
 | 
						|
			episode.Show = show;
 | 
						|
			episode.Season = season;
 | 
						|
			context.Episodes.Add(episode);
 | 
						|
 | 
						|
			Studio studio = Get<Studio>();
 | 
						|
			studio.Shows = new List<Show> { show };
 | 
						|
			context.Studios.Add(studio);
 | 
						|
 | 
						|
			People people = Get<People>();
 | 
						|
			// context.People.Add(people);
 | 
						|
 | 
						|
			User user = Get<User>();
 | 
						|
			context.Users.Add(user);
 | 
						|
 | 
						|
			context.SaveChanges();
 | 
						|
		}
 | 
						|
 | 
						|
		public static Episode GetAbsoluteEpisode()
 | 
						|
		{
 | 
						|
			return new()
 | 
						|
			{
 | 
						|
				Id = 2.AsGuid(),
 | 
						|
				ShowSlug = "anohana",
 | 
						|
				ShowId = 1.AsGuid(),
 | 
						|
				SeasonNumber = null,
 | 
						|
				EpisodeNumber = null,
 | 
						|
				AbsoluteNumber = 3,
 | 
						|
				Path = "/home/kyoo/anohana-3",
 | 
						|
				Poster = new Image("Poster"),
 | 
						|
				Logo = new Image("Logo"),
 | 
						|
				Thumbnail = new Image("Thumbnail"),
 | 
						|
				Name = "Episode 3",
 | 
						|
				Overview = "Summary of the third absolute episode",
 | 
						|
				ReleaseDate = new DateTime(2020, 06, 05).ToUniversalTime()
 | 
						|
			};
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 |