package models

import (
	"html/template"
	"main/mvc/models/models_pages"
	"time"
)

type App struct {
	Cfg        *Config            // Сонфиг
	Posts      models_pages.Posts // Посты
	Templates  *template.Template // Шаблоны страниц
	PagesCache *Cache             // Кэш (отрендеренные странички)
	Version    int64              // Время запуска
}

// Инициализирует приложение
func InitApp() (*App, error) {
	var err error

	app := &App{}

	// Версия чтобы статика не кэшировалась
	app.Version = time.Now().Unix()
	// Загрузка конфига
	if app.Cfg, err = loadConfig(ConfigPath); err != nil {
		return nil, err
	}
	// Загрузка постов
	if app.Posts, err = models_pages.LoadPosts(app.Cfg.PostsDir); err != nil {
		return nil, err
	}
	// Загрузка шаблонов
	if app.Templates, err = loadTemplates(app.Cfg.TemplatesDir, app.Cfg.TemplatesExt); err != nil {
		return nil, err
	}
	// Инициализация кэша
	app.PagesCache = initCache()
	return app, nil
}
