using LinqToDB;
using LinqToDB.Configuration;
using LinqToDB.Data;
using MediaManager.database.Tables;

namespace MediaManager.database;

public class Database {
	public class ConnectionStringSettings : IConnectionStringSettings {
		public string ConnectionString { get; set; }
		public string Name             { get; set; }
		public string ProviderName     { get; set; }
		public bool   IsGlobal         => false;
	}

	public class Settings : ILinqToDBSettings {
		public IEnumerable<IDataProviderSettings> DataProviders => Enumerable.Empty<IDataProviderSettings>();

		public string DefaultConfiguration => "SQLite";
		public string DefaultDataProvider  => "SQLite";

		public IEnumerable<IConnectionStringSettings> ConnectionStrings {
			get { yield return new ConnectionStringSettings { Name = "db", ProviderName = "SQLite", ConnectionString = @"Data Source=database.db;" }; }
		}
	}

	public class DbConn : DataConnection {
		public DbConn() : base("db") { }
		public ITable<DbInfo> DbInfo => this.GetTable<DbInfo>();
		public ITable<User>   Users  => this.GetTable<User>();
		public ITable<Movie>   Movies => this.GetTable<Movie>();
		public ITable<Show>   Shows  => this.GetTable<Show>();
	}
}
