50 lines
1.3 KiB
C#
50 lines
1.3 KiB
C#
using Npgsql;
|
|
using skyscraper5.Skyscraper.Plugins;
|
|
using skyscraper8.Skyscraper.Plugins;
|
|
using skyscraper8.Skyscraper.Scraper.Storage;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Diagnostics;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace skyscraper5.Data.PostgreSql
|
|
{
|
|
[SkyscraperPlugin]
|
|
[StorageId(3)]
|
|
[StorageName("PostgreSQL")]
|
|
public class PostgresqlDataStoreFactory : DataStorageFactory
|
|
{
|
|
private static PluginLogger logger = PluginLogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
|
|
|
|
public string Username { get; set; }
|
|
|
|
public ushort Port { get; set; }
|
|
|
|
public string Password { get; set; }
|
|
|
|
public string Host { get; set; }
|
|
|
|
public string Database { get; set; }
|
|
|
|
public DataStorage CreateDataStorage()
|
|
{
|
|
logger.Log(PluginLogLevel.Info, "Connecting to postgres://{3}@{0}:{1}/{2}",Host,Port,Database,Username);
|
|
NpgsqlConnectionStringBuilder ncsb = new NpgsqlConnectionStringBuilder();
|
|
ncsb.Database = Database;
|
|
ncsb.ApplicationName = "skyscraper5";
|
|
ncsb.Host = Host;
|
|
ncsb.Password = Password;
|
|
ncsb.Pooling = true;
|
|
ncsb.Port = Port;
|
|
ncsb.Username = Username;
|
|
|
|
if (Debugger.IsAttached)
|
|
ncsb.Timeout = 1024;
|
|
|
|
return new PostgresqlDataStore(ncsb);
|
|
}
|
|
}
|
|
}
|