| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- # coding=utf-8
- """
- 插件版本模型
- 存储插件的版本历史
- """
- import uuid_utils.compat as uuid
- from django.db import models
- from common.mixins.app_model_mixin import AppModelMixin
- class PluginVersionStatus(models.TextChoices):
- """版本状态"""
- PENDING = 'PENDING', '待发布'
- ACTIVE = 'ACTIVE', '已发布'
- DEPRECATED = 'DEPRECATED', '已废弃'
- class PluginVersion(AppModelMixin):
- """插件版本"""
- id = models.UUIDField(primary_key=True, max_length=128, default=uuid.uuid7, editable=False, verbose_name="主键id")
- plugin = models.ForeignKey(
- 'plugin.Plugin',
- on_delete=models.CASCADE,
- db_constraint=False,
- verbose_name="插件",
- db_index=True
- )
- version = models.CharField(max_length=32, verbose_name="版本号")
- status = models.CharField(
- max_length=20,
- choices=PluginVersionStatus.choices,
- default=PluginVersionStatus.PENDING,
- verbose_name="版本状态"
- )
- changelog = models.TextField(verbose_name="更新日志", default="")
- schema = models.JSONField(verbose_name="版本 Schema", default=dict)
- config = models.JSONField(verbose_name="版本配置", default=dict)
- file_path = models.CharField(max_length=512, verbose_name="版本文件路径", default="")
- file_hash = models.CharField(max_length=64, verbose_name="文件哈希", default="")
- is_rollback = models.BooleanField(verbose_name="是否回滚版本", default=False)
- class Meta:
- db_table = "plugin_version"
- ordering = ['-create_time']
- def __str__(self):
- return f"{self.plugin_id} v{self.version}"
|