feyris-tan ef86554f9a Import
2025-05-12 22:09:16 +02:00

57 lines
2.1 KiB
C#

using Minio;
using Minio.DataModel.Args;
using MySqlConnector;
using skyscraper5.Data;
using skyscraper5.Data.MySql;
using skyscraper5.Skyscraper.Scraper.Storage;
using skyscraper5.Skyscraper.Scraper.Storage.Split;
namespace skyscraper5.Storage.MariaDbMinio
{
[ScrapeStorageFactoryId(2,"MariaDB & MinIO",false)]
public class MariaDbMinioStorageFactory : IScraperStorageFactory
{
public IScraperStroage CreateScraperStroage()
{
MySqlConnectionStringBuilder mcsb = new MySqlConnectionStringBuilder();
mcsb.Database = MariaDbDatabase;
mcsb.Password = MariaDbPassword;
mcsb.Port = MariaDbPort;
mcsb.Server = MariaDbHost;
mcsb.UserID = MariaDbUsername;
mcsb.ApplicationName = "skyscraper5";
mcsb.Pooling = true;
IMinioClient mc = new MinioClient()
.WithEndpoint(MinioEndpoint)
.WithCredentials(MinioAccessKey, MinioSecretKey)
.WithSSL(MinioSecure).Build();
BucketExistsArgs bucketExistsArgs = new BucketExistsArgs().WithBucket(MinioBucket);
bool bucketExists = mc.BucketExistsAsync(bucketExistsArgs).Result;
if (!bucketExists)
{
MakeBucketArgs makeBucketArgs = new MakeBucketArgs().WithBucket(MinioBucket);
mc.MakeBucketAsync(makeBucketArgs).Wait();
}
MySqlDataStorage myds = new MySqlDataStorage(mcsb);
MinioObjectStorage mos = new MinioObjectStorage(mc, MinioBucket);
return new SplitScraperStorage(myds, mos);
}
public string MariaDbHost { get; set; }
public ushort MariaDbPort { get; set; }
public string MariaDbUsername { get; set; }
public string MariaDbPassword { get; set; }
public string MariaDbDatabase { get; set; }
public string MinioEndpoint { get; set; }
public string MinioAccessKey { get; set; }
public string MinioSecretKey { get; set; }
public bool MinioSecure { get; set; }
public string MinioBucket { get; set; }
}
}