using System.Collections.Generic;
using System.Linq;
using LinqToDB;
using LinqToDB.Configuration;
using LinqToDB.Data;
using trainav.web.database.Tables;

namespace trainav.web.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 => GetTable<DbInfo>();

		public ITable<User>      Users      => GetTable<User>();
		public ITable<Leg>       Legs       => GetTable<Leg>();
		public ITable<Trip>      Trips      => GetTable<Trip>();
	}
}
