import os.path
from typing import TYPE_CHECKING

from . import db
if TYPE_CHECKING:
    from .Workflow import Workflow


class VideoClip(db.Model):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    base_path = db.Column(db.String(255))
    file = db.Column(db.String(255))
    duration = db.Column(db.Float, nullable=False, default=0)
    offset = db.Column(db.Float, nullable=False, default=0)
    workflow_id = db.Column(db.Integer, db.ForeignKey('workflow.id'))
    workflow: "Workflow" = db.relationship("Workflow", uselist=False, backref=db.backref("video_clips"))

    @property
    def full_path(self):
        return os.path.abspath(os.path.join(self.base_path, self.file))

    def to_json(self):
        return {
            "id": self.id,
            "base_path": self.base_path,
            "file": self.file,
            "duration": self.duration,
            "offset": self.offset,
        }