Files
SocialPub/PrivaPub/Data/InitDb.cs
T

105 lines
2.2 KiB
C#
Raw Normal View History

2023-02-18 08:52:17 +01:00
using MongoDB.Entities;
2023-02-19 00:43:43 +01:00
using PrivaPub.Models.Data;
using PrivaPub.StaticServices;
2023-02-18 08:52:17 +01:00
using System.Text;
using System.Text.Json;
2023-02-19 00:43:43 +01:00
namespace PrivaPub.Data
2023-02-18 08:52:17 +01:00
{
public static class InitDb
{
public static async Task Init(this DbEntities dbClient)
2023-02-18 08:52:17 +01:00
{
await SyncLanguages(dbClient);
await UpdateNewLanguages(dbClient);
}
static async Task SyncLanguages(DbEntities dbClient)
{
if (await dbClient.Languages.ExecuteAnyAsync()) return;
var languagesJson = await File.ReadAllTextAsync(Path.Combine(Directory.GetCurrentDirectory(), "Data", "languagesNative.json"), Encoding.UTF8);
var languagesRows = JsonSerializer.Deserialize<IEnumerable<LanguagesRow>>(languagesJson);
var languages = new List<Language>();
foreach (var languageRow in languagesRows ?? new LanguagesRow[]
{
})
languages.Add(new Language
{
EnglishName = languageRow.EnglishName,
NativeName = languageRow.NativeName,
International2Code = languageRow.International2Code
});
await DB.Default.SaveAsync(languages);
2023-02-18 08:52:17 +01:00
}
static async Task UpdateNewLanguages(DbEntities dbClient)
{
var bulgarianLanguage = await dbClient.Languages.Match(l => l.International2Code == "bg").ExecuteFirstAsync();
if (bulgarianLanguage.NativeName == "Български") return;
var languagesToUpdate = new Dictionary<string, string>()
{
{
"bg", "Български"
},
{
"cs", "Česky"
},
{
"da", "Dansk"
},
{
"nl", "Nederlands"
},
{
"et", "Eesti"
},
{
"fi", "Suomalainen"
},
{
"el", "Ελληνική"
},
{
"hu", "Magyar"
},
{
"lv", "Latviešu"
},
{
"lt", "Lietuvių kalba"
},
{
"pl", "Polski"
},
{
"pt", "Português"
},
{
"ro", "Românesc"
},
{
"sk", "Slovenská"
},
{
"sl", "Slovenski"
},
{
"sv", "Svenska"
}
};
foreach (var languageToUpdate in languagesToUpdate)
{
var bgLang = await dbClient.Languages.Match(l => l.International2Code == languageToUpdate.Key).ExecuteFirstAsync();
bgLang.NativeName = languageToUpdate.Value;
await DB.Default.SaveAsync(bgLang);
2023-02-18 08:52:17 +01:00
}
}
}
}