import dotenv from 'dotenv';

dotenv.config();

const config =
{
    port: process.env.PORT
        || "3000",
    redisHostUrl: process.env.REDIS_HOSTNAME
        || "localhost",
    env: process.env.NODE_ENV
        || "prod",
    scaffoldPages: ['basic', 'cya', 'question'],
    postCodeCheckUrl: process.env.POSTCODE_CHECK_URL || "https://webapi.northumberland.gov.uk/api/NCCADDRESS/POSTCODE/",
    webapi_username: process.env.WEBAPI_U,
    webapi_password: process.env.WEBAPI_P,
    redisPassword: process.env.REDIS_PASSWORD
}

export function getConfig(): AppConfig {
    
    for (const prop in config) {
        if (Object.prototype.hasOwnProperty.call(config, prop)) {
            if (prop === null || prop === undefined)
            {
                throw(`property ${prop} not found`);
            }
        }
    }

    return config as AppConfig;
}

export interface AppConfig  {
    port: string;
    redisHostUrl: string;
    env: string;
    scaffoldPages: string[];
    postCodeCheckUrl: string;
    webapi_username: string;
    webapi_password: string;
    redisPassword: string;
}


export default getConfig;