# -*- coding: utf-8 -*-
import time

from services.v2.base_stage import BaseStage
from services.v2.pipeline_result import PipelineResult
from services.v2.session_adapter import SessionAdapter


class SessionStage(BaseStage):
    name = "session"

    def __init__(self, adapter=None):
        self.adapter = adapter or SessionAdapter()

    def run(self, context) -> PipelineResult:
        started = time.time()
        context.current_stage = self.name
        context.log("[SESSION] start")

        result = self.adapter.check(context)

        context.put("session_status", result["status"])
        context.put("session_data", result.get("data", {}))
        context.log(f"[SESSION] {result['status']}")

        return PipelineResult(
            success=result["success"],
            stage=self.name,
            message=result["message"],
            elapsed=time.time() - started,
        )
