modules/frontend/Write-Frontend.ps1

param(
    [string]$ProjectName,
    [string]$OrmMode,
    [string]$OutputPath,
    [string]$FrontendMode,
    [string[]]$Entities,
    [bool]$I18n = $false
)

$ModulesDir = Split-Path -Parent $MyInvocation.MyCommand.Path

switch ($FrontendMode) {
    { $_ -in "ReactTS","ReactJS" } {
        $reactParams = @{
            ProjectName  = $ProjectName
            OrmMode      = $OrmMode
            OutputPath   = $OutputPath
            FrontendMode = $FrontendMode
            Entities     = $Entities
            I18n         = $I18n
        }
        & "$ModulesDir\Write-Frontend-React-Config.ps1" @reactParams
        & "$ModulesDir\Write-Frontend-React-Components.ps1" @reactParams
        & "$ModulesDir\Write-Frontend-React-Pages.ps1" @reactParams
        & "$ModulesDir\Write-Frontend-EntityPages.ps1" @reactParams
        & "$ModulesDir\Write-Frontend-I18n.ps1" @reactParams
    }
    "NextJS" {
        $nextParams = @{
            ProjectName  = $ProjectName
            OrmMode      = $OrmMode
            OutputPath   = $OutputPath
            FrontendMode = $FrontendMode
            Entities     = $Entities
            I18n         = $I18n
        }
        & "$ModulesDir\Write-Frontend-NextJs-Config.ps1" @nextParams
        & "$ModulesDir\Write-Frontend-NextJs-Components.ps1" @nextParams
        & "$ModulesDir\Write-Frontend-NextJs-Pages.ps1" @nextParams
    }
    default {
        throw "Bilinmeyen FrontendMode: $FrontendMode"
    }
}