-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMamiDatabase.cs
More file actions
81 lines (68 loc) · 3.39 KB
/
Copy pathMamiDatabase.cs
File metadata and controls
81 lines (68 loc) · 3.39 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
using ManamiAnimeOfflineRepository.Configurations;
using ManamiAnimeOfflineRepository.Models;
using ManamiAnimeOfflineRepository.Repositories;
namespace ManamiAnimeOfflineRepository
{
public class MamiDatabase
{
private ConfigurationRepository configurationRepository;
private RemoteDatabaseRepository remoteDatabaseRepository;
private LocalDatabaseRepository localDatabaseRepository;
private List<ManamiAnime> manamiAnimes;
public MamiDatabase(string pathToManamiFolder, bool autoUpdateLocalDatabase = false)
{
ManamiConfig defaultConfigFile = new ManamiConfig(pathToManamiFolder, "database.json", "https://api.github.com/repos/manami-project/anime-offline-database/commits", "https://raw.githubusercontent.com/manami-project/anime-offline-database/master/anime-offline-database.json");
configurationRepository = new ConfigurationRepository(pathToManamiFolder + "\\setting.json", defaultConfigFile);
ManamiConfig config = configurationRepository.GetConfiguration();
remoteDatabaseRepository = new RemoteDatabaseRepository(config.manamiRemoteRepositoryLink, config.manamiGetCommitsLink);
localDatabaseRepository = new LocalDatabaseRepository(config.GetPathToOfflineDatabase());
manamiAnimes = new List<ManamiAnime>();
if (autoUpdateLocalDatabase)
{
UpdateDatabaseFromRemoteDatabase();
}
Root manamiDatabaseObj = localDatabaseRepository.GetAll();
if (manamiDatabaseObj != null)
{
manamiAnimes = manamiDatabaseObj.data;
}
}
public void UpdateDatabaseFromRemoteDatabase()
{
if (AvaibleNewVersion())
{
Root remoteData = remoteDatabaseRepository.getAllData();
localDatabaseRepository.UpdateDatabase(remoteData);
ManamiConfig manamiConfig = configurationRepository.GetConfiguration();
manamiConfig.shaOfDownloadedDataBase = remoteDatabaseRepository.getLastVersionDatabase();
configurationRepository.UpdateConfiguration(manamiConfig);
}
}
private bool AvaibleNewVersion()
{
string remoteRepositoryLastVerion = remoteDatabaseRepository.getLastVersionDatabase();
ManamiConfig manamiConfig = configurationRepository.GetConfiguration();
return remoteRepositoryLastVerion != manamiConfig.shaOfDownloadedDataBase;
}
public List<ManamiAnime> GetAllAnime()
{
return manamiAnimes;
}
public List<ManamiAnime> GetAnimeById(string id)
{
var query = from manamiAnime in manamiAnimes
from sourceLink in manamiAnime.sourceLinks
where sourceLink.Id == id
select manamiAnime;
return query.ToList();
}
public List<ManamiAnime> GetAnimeSearch(string q)
{
var query = from manamiAnime in manamiAnimes
from titleSynonyms in manamiAnime.synonyms
where manamiAnime.title == q || manamiAnime.title == titleSynonyms
select manamiAnime;
return query.ToList();
}
}
}