package fr.dcproject import fr.postgresjson.connexion.Connection import fr.postgresjson.connexion.Requester import fr.postgresjson.migration.Migrations import io.ktor.util.KtorExperimentalAPI import org.koin.dsl.module import fr.dcproject.repository.Article as ArticleRepository import fr.dcproject.repository.Citizen as CitizenRepository import fr.dcproject.repository.Constitution as ConstitutionRepository import fr.dcproject.repository.FollowArticle as FollowArticleRepository import fr.dcproject.repository.FollowConstitution as FollowConstitutionRepository import fr.dcproject.repository.User as UserRepository val config = Config() @KtorExperimentalAPI val Module = module { single { config } single { Connection(host = config.host, port = config.port, database = config.database, username = config.username, password = config.password) } single { Requester.RequesterFactory( connection = get(), functionsDirectory = config.sqlFiles.resolve("functions") ).createRequester() } // TODO: create generic declaration single { UserRepository(get()) } single { ArticleRepository(get()) } single { CitizenRepository(get()) } single { ConstitutionRepository(get()) } single { FollowArticleRepository(get()) } single { FollowConstitutionRepository(get()) } single { Migrations(connection = get(), directory = config.sqlFiles) } }