mirror of
https://github.com/johndoe6345789/metabuilder.git
synced 2026-04-28 07:44:56 +00:00
206 lines
3.9 KiB
YAML
206 lines
3.9 KiB
YAML
entity: MediaAsset
|
|
version: "1.0"
|
|
description: "Media file asset (images, videos, audio, documents)"
|
|
package: media_center
|
|
|
|
fields:
|
|
id:
|
|
type: cuid
|
|
primary: true
|
|
generated: true
|
|
description: "Unique media asset identifier"
|
|
|
|
tenantId:
|
|
type: uuid
|
|
required: true
|
|
index: true
|
|
description: "Tenant this asset belongs to"
|
|
|
|
userId:
|
|
type: uuid
|
|
required: true
|
|
index: true
|
|
description: "User who uploaded the asset"
|
|
|
|
filename:
|
|
type: string
|
|
required: true
|
|
description: "Stored filename"
|
|
|
|
originalName:
|
|
type: string
|
|
required: true
|
|
description: "Original upload filename"
|
|
|
|
mimeType:
|
|
type: string
|
|
required: true
|
|
index: true
|
|
description: "MIME type (image/png, video/mp4, etc.)"
|
|
|
|
size:
|
|
type: bigint
|
|
required: true
|
|
description: "File size in bytes"
|
|
|
|
path:
|
|
type: string
|
|
required: true
|
|
description: "Storage path"
|
|
|
|
thumbnailPath:
|
|
type: string
|
|
nullable: true
|
|
description: "Thumbnail image path"
|
|
|
|
width:
|
|
type: integer
|
|
nullable: true
|
|
description: "Image/video width"
|
|
|
|
height:
|
|
type: integer
|
|
nullable: true
|
|
description: "Image/video height"
|
|
|
|
duration:
|
|
type: integer
|
|
nullable: true
|
|
description: "Audio/video duration in seconds"
|
|
|
|
metadata:
|
|
type: json
|
|
nullable: true
|
|
description: "Additional metadata (EXIF, tags, etc.)"
|
|
|
|
createdAt:
|
|
type: bigint
|
|
required: true
|
|
description: "Upload timestamp"
|
|
|
|
indexes:
|
|
- fields: [tenantId, userId]
|
|
name: tenant_user
|
|
- fields: [tenantId, mimeType]
|
|
name: tenant_type
|
|
|
|
acl:
|
|
create:
|
|
user: true
|
|
read:
|
|
self: true
|
|
row_level: "userId = $user.id"
|
|
admin: true
|
|
update:
|
|
self: true
|
|
row_level: "userId = $user.id"
|
|
delete:
|
|
self: true
|
|
row_level: "userId = $user.id"
|
|
admin: true
|
|
|
|
---
|
|
|
|
entity: MediaJob
|
|
version: "1.0"
|
|
description: "Background media processing job"
|
|
package: media_center
|
|
|
|
fields:
|
|
id:
|
|
type: cuid
|
|
primary: true
|
|
generated: true
|
|
description: "Unique job identifier"
|
|
|
|
tenantId:
|
|
type: uuid
|
|
required: true
|
|
index: true
|
|
description: "Tenant this job belongs to"
|
|
|
|
userId:
|
|
type: uuid
|
|
required: true
|
|
index: true
|
|
description: "User who initiated the job"
|
|
|
|
type:
|
|
type: enum
|
|
required: true
|
|
values: [transcode, thumbnail, convert, compress, analyze]
|
|
description: "Job type"
|
|
|
|
status:
|
|
type: enum
|
|
required: true
|
|
values: [pending, processing, completed, failed, cancelled]
|
|
default: pending
|
|
index: true
|
|
description: "Job status"
|
|
|
|
priority:
|
|
type: integer
|
|
default: 0
|
|
description: "Job priority (higher = more urgent)"
|
|
|
|
inputPath:
|
|
type: string
|
|
required: true
|
|
description: "Input file path"
|
|
|
|
outputPath:
|
|
type: string
|
|
nullable: true
|
|
description: "Output file path"
|
|
|
|
params:
|
|
type: json
|
|
required: true
|
|
description: "Job-specific parameters"
|
|
|
|
progress:
|
|
type: integer
|
|
default: 0
|
|
description: "Progress percentage 0-100"
|
|
|
|
error:
|
|
type: string
|
|
nullable: true
|
|
description: "Error message if failed"
|
|
|
|
startedAt:
|
|
type: bigint
|
|
nullable: true
|
|
description: "Processing start timestamp"
|
|
|
|
completedAt:
|
|
type: bigint
|
|
nullable: true
|
|
description: "Completion timestamp"
|
|
|
|
createdAt:
|
|
type: bigint
|
|
required: true
|
|
description: "Creation timestamp"
|
|
|
|
indexes:
|
|
- fields: [status, priority]
|
|
name: queue_order
|
|
- fields: [tenantId, userId]
|
|
name: tenant_user
|
|
|
|
acl:
|
|
create:
|
|
user: true
|
|
system: true
|
|
read:
|
|
self: true
|
|
row_level: "userId = $user.id"
|
|
admin: true
|
|
update:
|
|
system: true
|
|
admin: true
|
|
delete:
|
|
admin: true
|