From 667e92a20b7de52c51607e367aaa46b7559253e2 Mon Sep 17 00:00:00 2001 From: Richard Ward Date: Tue, 30 Dec 2025 22:09:26 +0000 Subject: [PATCH] config: yaml,packages,entities (11 files) --- .../arcade_lobby/seed/schema/entities.yaml | 166 ++++++++++++++ .../code_editor/seed/schema/entities.yaml | 163 ++++++++++++++ .../codegen_studio/seed/schema/entities.yaml | 191 +++++++++++++++++ .../css_designer/seed/schema/entities.yaml | 138 ++++++++++++ packages/dashboard/seed/schema/entities.yaml | 89 ++++++++ packages/data_table/seed/schema/entities.yaml | 75 +++++++ .../form_builder/seed/schema/entities.yaml | 118 ++++++++++ .../seed/schema/entities.yaml | 141 ++++++++++++ .../schema_editor/seed/schema/entities.yaml | 90 ++++++++ .../seed/schema/entities.yaml | 202 ++++++++++++++++++ packages/social_hub/seed/schema/entities.yaml | 164 ++++++++++++++ 11 files changed, 1537 insertions(+) create mode 100644 packages/arcade_lobby/seed/schema/entities.yaml create mode 100644 packages/code_editor/seed/schema/entities.yaml create mode 100644 packages/codegen_studio/seed/schema/entities.yaml create mode 100644 packages/css_designer/seed/schema/entities.yaml create mode 100644 packages/dashboard/seed/schema/entities.yaml create mode 100644 packages/data_table/seed/schema/entities.yaml create mode 100644 packages/form_builder/seed/schema/entities.yaml create mode 100644 packages/package_validator/seed/schema/entities.yaml create mode 100644 packages/schema_editor/seed/schema/entities.yaml create mode 100644 packages/screenshot_analyzer/seed/schema/entities.yaml create mode 100644 packages/social_hub/seed/schema/entities.yaml diff --git a/packages/arcade_lobby/seed/schema/entities.yaml b/packages/arcade_lobby/seed/schema/entities.yaml new file mode 100644 index 000000000..cd1172b43 --- /dev/null +++ b/packages/arcade_lobby/seed/schema/entities.yaml @@ -0,0 +1,166 @@ +# Arcade Lobby Schema Definitions +# Package: arcade_lobby +# Version: 1.0.0 + +entities: + - name: Game + description: Game definition for the arcade lobby + fields: + - name: id + type: String + required: true + primary: true + - name: tenantId + type: String + required: true + - name: name + type: String + required: true + - name: slug + type: String + required: true + - name: description + type: String + required: false + - name: thumbnail + type: String + required: false + - name: category + type: String + required: true + - name: minPlayers + type: Int + required: true + default: 1 + - name: maxPlayers + type: Int + required: true + default: 1 + - name: config + type: Json + required: false + description: Game-specific configuration + - name: isActive + type: Boolean + required: true + default: true + - name: playCount + type: Int + required: true + default: 0 + - name: createdAt + type: DateTime + required: true + - name: updatedAt + type: DateTime + required: true + indexes: + - name: game_tenant_slug_idx + fields: [tenantId, slug] + unique: true + - name: game_tenant_category_idx + fields: [tenantId, category] + acl: + create: [admin] + read: [public] + update: [admin] + delete: [admin] + + - name: LeaderboardEntry + description: High score entry for a game + fields: + - name: id + type: String + required: true + primary: true + - name: tenantId + type: String + required: true + - name: gameId + type: String + required: true + - name: userId + type: String + required: true + - name: username + type: String + required: true + - name: score + type: Int + required: true + - name: metadata + type: Json + required: false + description: Game-specific score metadata + - name: submittedAt + type: DateTime + required: true + indexes: + - name: leaderboard_game_score_idx + fields: [gameId, score] + - name: leaderboard_game_user_idx + fields: [gameId, userId] + relations: + - name: game + type: belongsTo + target: Game + foreignKey: gameId + acl: + create: [user] + read: [public] + update: [none] + delete: [admin] + + - name: GameSession + description: Multiplayer game session/lobby + fields: + - name: id + type: String + required: true + primary: true + - name: tenantId + type: String + required: true + - name: gameId + type: String + required: true + - name: hostId + type: String + required: true + - name: status + type: String + required: true + description: waiting, playing, finished + - name: maxPlayers + type: Int + required: true + - name: currentPlayers + type: Int + required: true + default: 1 + - name: players + type: Json + required: true + description: Array of player user IDs + - name: createdAt + type: DateTime + required: true + - name: startedAt + type: DateTime + required: false + - name: endedAt + type: DateTime + required: false + indexes: + - name: session_game_status_idx + fields: [gameId, status] + relations: + - name: game + type: belongsTo + target: Game + foreignKey: gameId + acl: + create: [user] + read: [user] + update: [owner, admin] + delete: [owner, admin] diff --git a/packages/code_editor/seed/schema/entities.yaml b/packages/code_editor/seed/schema/entities.yaml new file mode 100644 index 000000000..04cecdf06 --- /dev/null +++ b/packages/code_editor/seed/schema/entities.yaml @@ -0,0 +1,163 @@ +# Code Editor Schema Definitions +# Package: code_editor +# Version: 1.0.0 + +entities: + - name: CodeSnippet + description: Saved code snippet + fields: + - name: id + type: String + required: true + primary: true + - name: tenantId + type: String + required: true + - name: userId + type: String + required: true + - name: title + type: String + required: true + - name: language + type: String + required: true + - name: code + type: String + required: true + - name: description + type: String + required: false + - name: tags + type: Json + required: false + description: Array of tag strings + - name: isPublic + type: Boolean + required: true + default: false + - name: version + type: Int + required: true + default: 1 + - name: createdAt + type: DateTime + required: true + - name: updatedAt + type: DateTime + required: true + indexes: + - name: snippet_tenant_user_idx + fields: [tenantId, userId] + - name: snippet_tenant_public_idx + fields: [tenantId, isPublic] + - name: snippet_language_idx + fields: [language] + acl: + create: [user] + read: [owner, public_if_public, admin] + update: [owner] + delete: [owner, admin] + + - name: EditorSession + description: Saved editor session state + fields: + - name: id + type: String + required: true + primary: true + - name: tenantId + type: String + required: true + - name: userId + type: String + required: true + - name: name + type: String + required: true + - name: files + type: Json + required: true + description: Array of open file states + - name: createdAt + type: DateTime + required: true + - name: updatedAt + type: DateTime + required: true + indexes: + - name: session_tenant_user_name_idx + fields: [tenantId, userId, name] + unique: true + acl: + create: [user] + read: [owner] + update: [owner] + delete: [owner] + + - name: FileRevision + description: File revision history + fields: + - name: id + type: String + required: true + primary: true + - name: tenantId + type: String + required: true + - name: filePath + type: String + required: true + - name: content + type: String + required: true + - name: userId + type: String + required: true + - name: message + type: String + required: false + - name: createdAt + type: DateTime + required: true + indexes: + - name: revision_tenant_file_idx + fields: [tenantId, filePath] + acl: + create: [user] + read: [user, admin] + update: [none] + delete: [admin] + + - name: LanguageConfig + description: Language-specific editor configuration + fields: + - name: id + type: String + required: true + primary: true + - name: tenantId + type: String + required: true + - name: language + type: String + required: true + - name: config + type: Json + required: true + description: Language-specific settings + - name: createdAt + type: DateTime + required: true + - name: updatedAt + type: DateTime + required: true + indexes: + - name: lang_config_tenant_lang_idx + fields: [tenantId, language] + unique: true + acl: + create: [admin] + read: [user, admin] + update: [admin] + delete: [admin] diff --git a/packages/codegen_studio/seed/schema/entities.yaml b/packages/codegen_studio/seed/schema/entities.yaml new file mode 100644 index 000000000..17fea6c4c --- /dev/null +++ b/packages/codegen_studio/seed/schema/entities.yaml @@ -0,0 +1,191 @@ +# Codegen Studio Schema Definitions +# Package: codegen_studio +# Version: 1.0.0 + +entities: + - name: CodegenProject + description: Code generation project + fields: + - name: id + type: String + required: true + primary: true + - name: tenantId + type: String + required: true + - name: name + type: String + required: true + - name: description + type: String + required: false + - name: language + type: String + required: true + description: Target language (typescript, python, lua, etc.) + - name: framework + type: String + required: false + description: Target framework + - name: config + type: Json + required: false + description: Project configuration + - name: createdAt + type: DateTime + required: true + - name: updatedAt + type: DateTime + required: true + indexes: + - name: project_tenant_name_idx + fields: [tenantId, name] + acl: + create: [user] + read: [user, admin] + update: [owner, admin] + delete: [owner, admin] + + - name: CodegenBlueprint + description: Code generation blueprint/template definition + fields: + - name: id + type: String + required: true + primary: true + - name: tenantId + type: String + required: true + - name: projectId + type: String + required: true + - name: name + type: String + required: true + - name: type + type: String + required: true + description: entity, component, service, api, etc. + - name: spec + type: Json + required: true + description: Blueprint specification + - name: createdAt + type: DateTime + required: true + - name: updatedAt + type: DateTime + required: true + indexes: + - name: blueprint_project_idx + fields: [projectId] + - name: blueprint_tenant_type_idx + fields: [tenantId, type] + relations: + - name: project + type: belongsTo + target: CodegenProject + foreignKey: projectId + acl: + create: [user] + read: [user, admin] + update: [owner, admin] + delete: [owner, admin] + + - name: CodegenTemplate + description: Code generation template + fields: + - name: id + type: String + required: true + primary: true + - name: tenantId + type: String + required: true + - name: name + type: String + required: true + - name: language + type: String + required: true + - name: type + type: String + required: true + description: Template type (entity, component, etc.) + - name: template + type: String + required: true + description: Template content with placeholders + - name: variables + type: Json + required: false + description: Available template variables + - name: isBuiltin + type: Boolean + required: true + default: false + - name: createdAt + type: DateTime + required: true + - name: updatedAt + type: DateTime + required: true + indexes: + - name: template_tenant_lang_type_idx + fields: [tenantId, language, type] + acl: + create: [admin] + read: [user, admin] + update: [admin] + delete: [admin] + + - name: CodegenGeneration + description: Code generation execution record + fields: + - name: id + type: String + required: true + primary: true + - name: tenantId + type: String + required: true + - name: projectId + type: String + required: true + - name: blueprintId + type: String + required: false + - name: templateId + type: String + required: false + - name: input + type: Json + required: true + description: Generation input parameters + - name: output + type: String + required: false + description: Generated code + - name: status + type: String + required: true + description: pending, completed, failed + - name: error + type: String + required: false + - name: createdAt + type: DateTime + required: true + indexes: + - name: generation_project_idx + fields: [projectId] + relations: + - name: project + type: belongsTo + target: CodegenProject + foreignKey: projectId + acl: + create: [user] + read: [owner, admin] + update: [none] + delete: [owner, admin] diff --git a/packages/css_designer/seed/schema/entities.yaml b/packages/css_designer/seed/schema/entities.yaml new file mode 100644 index 000000000..4b6f3d0c8 --- /dev/null +++ b/packages/css_designer/seed/schema/entities.yaml @@ -0,0 +1,138 @@ +# CSS Designer Schema Definitions +# Package: css_designer +# Version: 1.0.0 + +entities: + - name: Theme + description: Theme definition with CSS variables + fields: + - name: id + type: String + required: true + primary: true + - name: tenantId + type: String + required: true + - name: name + type: String + required: true + - name: baseTheme + type: String + required: false + description: Parent theme (light, dark, or theme ID) + - name: variables + type: Json + required: true + description: CSS variable definitions + - name: metadata + type: Json + required: false + - name: isActive + type: Boolean + required: true + default: true + - name: version + type: Int + required: true + default: 1 + - name: createdAt + type: DateTime + required: true + - name: updatedAt + type: DateTime + required: true + indexes: + - name: theme_tenant_name_idx + fields: [tenantId, name] + unique: true + acl: + create: [moderator, admin] + read: [user, admin] + update: [moderator, admin] + delete: [admin] + + - name: StyleComponent + description: Reusable style component definition + fields: + - name: id + type: String + required: true + primary: true + - name: tenantId + type: String + required: true + - name: themeId + type: String + required: false + description: Associated theme (null for global) + - name: name + type: String + required: true + - name: selector + type: String + required: true + description: CSS selector + - name: styles + type: Json + required: true + description: CSS property-value pairs + - name: variants + type: Json + required: false + description: Pseudo-class/state variants + - name: createdAt + type: DateTime + required: true + - name: updatedAt + type: DateTime + required: true + indexes: + - name: style_tenant_theme_idx + fields: [tenantId, themeId] + - name: style_tenant_name_idx + fields: [tenantId, name] + relations: + - name: theme + type: belongsTo + target: Theme + foreignKey: themeId + acl: + create: [moderator, admin] + read: [user, admin] + update: [moderator, admin] + delete: [admin] + + - name: ThemePreset + description: Saved theme preset for quick application + fields: + - name: id + type: String + required: true + primary: true + - name: tenantId + type: String + required: true + - name: name + type: String + required: true + - name: description + type: String + required: false + - name: variables + type: Json + required: true + - name: baseTheme + type: String + required: false + - name: createdAt + type: DateTime + required: true + indexes: + - name: preset_tenant_name_idx + fields: [tenantId, name] + unique: true + acl: + create: [moderator, admin] + read: [user, admin] + update: [admin] + delete: [admin] diff --git a/packages/dashboard/seed/schema/entities.yaml b/packages/dashboard/seed/schema/entities.yaml new file mode 100644 index 000000000..a6b862e98 --- /dev/null +++ b/packages/dashboard/seed/schema/entities.yaml @@ -0,0 +1,89 @@ +# Dashboard Schema Definitions +# Package: dashboard +# Version: 1.0.0 + +entities: + - name: DashboardLayout + description: User or tenant dashboard layout configuration + fields: + - name: id + type: String + required: true + primary: true + - name: tenantId + type: String + required: true + - name: userId + type: String + required: false + description: If null, this is a tenant-wide layout + - name: name + type: String + required: true + - name: widgets + type: Json + required: true + description: Array of widget configurations with positions + - name: settings + type: Json + required: false + description: Layout-specific settings + - name: isDefault + type: Boolean + required: true + default: false + - name: createdAt + type: DateTime + required: true + - name: updatedAt + type: DateTime + required: true + indexes: + - name: dashboard_tenant_user_idx + fields: [tenantId, userId] + - name: dashboard_tenant_name_idx + fields: [tenantId, name] + unique: true + acl: + create: [user, admin] + read: [user, admin] + update: [owner, admin] + delete: [owner, admin] + + - name: WidgetCache + description: Cached data for dashboard widgets + fields: + - name: id + type: String + required: true + primary: true + - name: tenantId + type: String + required: true + - name: cacheKey + type: String + required: true + - name: widgetType + type: String + required: true + - name: data + type: Json + required: true + - name: expiresAt + type: DateTime + required: false + - name: createdAt + type: DateTime + required: true + - name: updatedAt + type: DateTime + required: true + indexes: + - name: widget_cache_tenant_key_idx + fields: [tenantId, cacheKey] + unique: true + acl: + create: [system] + read: [user, admin] + update: [system] + delete: [system] diff --git a/packages/data_table/seed/schema/entities.yaml b/packages/data_table/seed/schema/entities.yaml new file mode 100644 index 000000000..376af1e62 --- /dev/null +++ b/packages/data_table/seed/schema/entities.yaml @@ -0,0 +1,75 @@ +# Data Table Schema Definitions +# Package: data_table +# Version: 1.0.0 + +entities: + - name: TableConfig + description: Table display configuration + fields: + - name: id + type: String + required: true + primary: true + - name: tenantId + type: String + required: true + - name: tableKey + type: String + required: true + description: Unique identifier for the table + - name: config + type: Json + required: true + description: Column definitions, filters, default sort + - name: createdAt + type: DateTime + required: true + - name: updatedAt + type: DateTime + required: true + indexes: + - name: table_config_tenant_key_idx + fields: [tenantId, tableKey] + unique: true + acl: + create: [admin] + read: [user, admin] + update: [admin] + delete: [admin] + + - name: UserTablePreference + description: User-specific table preferences + fields: + - name: id + type: String + required: true + primary: true + - name: userId + type: String + required: true + - name: tableKey + type: String + required: true + - name: columns + type: Json + required: false + description: Visible columns in order + - name: columnWidths + type: Json + required: false + description: Column width preferences + - name: createdAt + type: DateTime + required: true + - name: updatedAt + type: DateTime + required: true + indexes: + - name: user_pref_user_table_idx + fields: [userId, tableKey] + unique: true + acl: + create: [user] + read: [owner] + update: [owner] + delete: [owner] diff --git a/packages/form_builder/seed/schema/entities.yaml b/packages/form_builder/seed/schema/entities.yaml new file mode 100644 index 000000000..61eabfd83 --- /dev/null +++ b/packages/form_builder/seed/schema/entities.yaml @@ -0,0 +1,118 @@ +# Form Builder Schema Definitions +# Package: form_builder +# Version: 1.0.0 + +entities: + - name: Form + description: Form definition with fields and validation + fields: + - name: id + type: String + required: true + primary: true + - name: tenantId + type: String + required: true + - name: name + type: String + required: true + - name: description + type: String + required: false + - name: fields + type: Json + required: true + description: Array of field definitions + - name: settings + type: Json + required: false + description: Form-level settings + - name: validationRules + type: Json + required: false + description: Custom validation rules + - name: isActive + type: Boolean + required: true + default: true + - name: version + type: Int + required: true + default: 1 + - name: submissionCount + type: Int + required: true + default: 0 + - name: createdAt + type: DateTime + required: true + - name: updatedAt + type: DateTime + required: true + indexes: + - name: form_tenant_name_idx + fields: [tenantId, name] + - name: form_tenant_active_idx + fields: [tenantId, isActive] + acl: + create: [moderator, admin] + read: [user, admin] + update: [moderator, admin] + delete: [admin] + + - name: FormSubmission + description: Submitted form response + fields: + - name: id + type: String + required: true + primary: true + - name: tenantId + type: String + required: true + - name: formId + type: String + required: true + - name: userId + type: String + required: false + description: Null for anonymous submissions + - name: data + type: Json + required: true + description: Submitted form data + - name: metadata + type: Json + required: false + description: Submission metadata (IP, user agent, etc.) + - name: status + type: String + required: true + default: submitted + description: submitted, reviewed, approved, rejected + - name: reviewNotes + type: String + required: false + - name: reviewedAt + type: DateTime + required: false + - name: submittedAt + type: DateTime + required: true + indexes: + - name: submission_form_idx + fields: [formId] + - name: submission_form_status_idx + fields: [formId, status] + - name: submission_user_idx + fields: [userId] + relations: + - name: form + type: belongsTo + target: Form + foreignKey: formId + acl: + create: [public, user] + read: [owner, moderator, admin] + update: [moderator, admin] + delete: [admin] diff --git a/packages/package_validator/seed/schema/entities.yaml b/packages/package_validator/seed/schema/entities.yaml new file mode 100644 index 000000000..4beee6541 --- /dev/null +++ b/packages/package_validator/seed/schema/entities.yaml @@ -0,0 +1,141 @@ +# Package Validator Schema Definitions +# Package: package_validator +# Version: 1.0.0 + +entities: + - name: ValidationRun + description: Package validation execution record + fields: + - name: id + type: String + required: true + primary: true + - name: tenantId + type: String + required: true + - name: packageName + type: String + required: true + - name: packageVersion + type: String + required: false + - name: status + type: String + required: true + description: pending, running, completed, failed + - name: results + type: Json + required: false + description: Validation results summary + - name: startedAt + type: DateTime + required: true + - name: completedAt + type: DateTime + required: false + indexes: + - name: validation_tenant_package_idx + fields: [tenantId, packageName] + - name: validation_status_idx + fields: [status] + acl: + create: [system, admin] + read: [user, admin] + update: [system] + delete: [admin] + + - name: ValidationIssue + description: Individual validation issue/warning + fields: + - name: id + type: String + required: true + primary: true + - name: runId + type: String + required: true + - name: severity + type: String + required: true + description: error, warning, info + - name: code + type: String + required: true + description: Issue code for categorization + - name: message + type: String + required: true + - name: file + type: String + required: false + - name: line + type: Int + required: false + - name: suggestion + type: String + required: false + - name: createdAt + type: DateTime + required: true + indexes: + - name: issue_run_idx + fields: [runId] + - name: issue_severity_idx + fields: [runId, severity] + relations: + - name: run + type: belongsTo + target: ValidationRun + foreignKey: runId + acl: + create: [system] + read: [user, admin] + update: [none] + delete: [admin] + + - name: ValidationRule + description: Custom validation rule definition + fields: + - name: id + type: String + required: true + primary: true + - name: tenantId + type: String + required: true + - name: name + type: String + required: true + - name: code + type: String + required: true + description: Unique rule code + - name: severity + type: String + required: true + - name: description + type: String + required: true + - name: check + type: String + required: true + description: Lua function body for validation + - name: enabled + type: Boolean + required: true + default: true + - name: createdAt + type: DateTime + required: true + - name: updatedAt + type: DateTime + required: true + indexes: + - name: rule_tenant_code_idx + fields: [tenantId, code] + unique: true + acl: + create: [admin] + read: [user, admin] + update: [admin] + delete: [admin] diff --git a/packages/schema_editor/seed/schema/entities.yaml b/packages/schema_editor/seed/schema/entities.yaml new file mode 100644 index 000000000..6f35851cb --- /dev/null +++ b/packages/schema_editor/seed/schema/entities.yaml @@ -0,0 +1,90 @@ +# Schema Editor Schema Definitions +# Package: schema_editor +# Version: 1.0.0 + +entities: + - name: EntitySchema + description: Dynamic entity schema definition + fields: + - name: id + type: String + required: true + primary: true + - name: tenantId + type: String + required: true + - name: name + type: String + required: true + description: Entity name + - name: fields + type: Json + required: true + description: Array of field definitions + - name: indexes + type: Json + required: false + description: Array of index definitions + - name: relations + type: Json + required: false + description: Array of relation definitions + - name: acl + type: Json + required: false + description: Access control rules + - name: version + type: Int + required: true + default: 1 + - name: createdAt + type: DateTime + required: true + - name: updatedAt + type: DateTime + required: true + indexes: + - name: entity_schema_tenant_name_idx + fields: [tenantId, name] + unique: true + acl: + create: [admin] + read: [admin] + update: [admin] + delete: [admin] + + - name: SchemaVersion + description: Schema version history for rollback + fields: + - name: id + type: String + required: true + primary: true + - name: tenantId + type: String + required: true + - name: entityName + type: String + required: true + - name: version + type: Int + required: true + - name: snapshot + type: Json + required: true + description: Complete schema snapshot + - name: changeNote + type: String + required: false + - name: createdAt + type: DateTime + required: true + indexes: + - name: schema_version_entity_idx + fields: [tenantId, entityName, version] + unique: true + acl: + create: [system] + read: [admin] + update: [none] + delete: [admin] diff --git a/packages/screenshot_analyzer/seed/schema/entities.yaml b/packages/screenshot_analyzer/seed/schema/entities.yaml new file mode 100644 index 000000000..ae4e98fd4 --- /dev/null +++ b/packages/screenshot_analyzer/seed/schema/entities.yaml @@ -0,0 +1,202 @@ +# Screenshot Analyzer Schema Definitions +# Package: screenshot_analyzer +# Version: 1.0.0 + +entities: + - name: Screenshot + description: Uploaded screenshot for analysis + fields: + - name: id + type: String + required: true + primary: true + - name: tenantId + type: String + required: true + - name: userId + type: String + required: true + - name: url + type: String + required: true + description: Image URL or base64 data + - name: filename + type: String + required: false + - name: metadata + type: Json + required: false + description: Image dimensions, format, etc. + - name: status + type: String + required: true + default: uploaded + description: uploaded, analyzing, analyzed, failed + - name: createdAt + type: DateTime + required: true + indexes: + - name: screenshot_tenant_user_idx + fields: [tenantId, userId] + - name: screenshot_status_idx + fields: [status] + acl: + create: [user] + read: [owner, admin] + update: [owner, admin] + delete: [owner, admin] + + - name: ScreenshotAnalysis + description: Analysis result for a screenshot + fields: + - name: id + type: String + required: true + primary: true + - name: screenshotId + type: String + required: true + - name: analysisType + type: String + required: true + description: component, color, layout, accessibility + - name: result + type: Json + required: true + description: Analysis result data + - name: confidence + type: Float + required: false + - name: createdAt + type: DateTime + required: true + indexes: + - name: analysis_screenshot_idx + fields: [screenshotId] + - name: analysis_type_idx + fields: [screenshotId, analysisType] + relations: + - name: screenshot + type: belongsTo + target: Screenshot + foreignKey: screenshotId + acl: + create: [system] + read: [owner, admin] + update: [none] + delete: [admin] + + - name: DetectedComponent + description: UI component detected in screenshot + fields: + - name: id + type: String + required: true + primary: true + - name: analysisId + type: String + required: true + - name: componentType + type: String + required: true + description: button, input, card, etc. + - name: bounds + type: Json + required: true + description: x, y, width, height + - name: confidence + type: Float + required: true + - name: properties + type: Json + required: false + description: Detected properties (color, text, etc.) + - name: createdAt + type: DateTime + required: true + indexes: + - name: component_analysis_idx + fields: [analysisId] + relations: + - name: analysis + type: belongsTo + target: ScreenshotAnalysis + foreignKey: analysisId + acl: + create: [system] + read: [owner, admin] + update: [none] + delete: [admin] + + - name: ColorPalette + description: Extracted color palette from screenshot + fields: + - name: id + type: String + required: true + primary: true + - name: analysisId + type: String + required: true + - name: colors + type: Json + required: true + description: Array of color objects + - name: dominantColor + type: String + required: false + - name: createdAt + type: DateTime + required: true + indexes: + - name: palette_analysis_idx + fields: [analysisId] + relations: + - name: analysis + type: belongsTo + target: ScreenshotAnalysis + foreignKey: analysisId + acl: + create: [system] + read: [owner, admin] + update: [none] + delete: [admin] + + - name: GeneratedCode + description: Code generated from screenshot analysis + fields: + - name: id + type: String + required: true + primary: true + - name: screenshotId + type: String + required: true + - name: framework + type: String + required: true + description: react, vue, html, qml + - name: code + type: String + required: true + - name: metadata + type: Json + required: false + - name: createdAt + type: DateTime + required: true + indexes: + - name: generated_screenshot_idx + fields: [screenshotId] + - name: generated_framework_idx + fields: [screenshotId, framework] + relations: + - name: screenshot + type: belongsTo + target: Screenshot + foreignKey: screenshotId + acl: + create: [system] + read: [owner, admin] + update: [none] + delete: [owner, admin] diff --git a/packages/social_hub/seed/schema/entities.yaml b/packages/social_hub/seed/schema/entities.yaml new file mode 100644 index 000000000..1e1cd4e7c --- /dev/null +++ b/packages/social_hub/seed/schema/entities.yaml @@ -0,0 +1,164 @@ +# Social Hub Schema Definitions +# Package: social_hub +# Version: 1.0.0 + +entities: + - name: SocialProfile + description: User social profile + fields: + - name: id + type: String + required: true + primary: true + - name: tenantId + type: String + required: true + - name: userId + type: String + required: true + - name: displayName + type: String + required: true + - name: bio + type: String + required: false + - name: avatar + type: String + required: false + - name: links + type: Json + required: false + description: Social media links + - name: settings + type: Json + required: false + description: Privacy settings + - name: createdAt + type: DateTime + required: true + - name: updatedAt + type: DateTime + required: true + indexes: + - name: profile_tenant_user_idx + fields: [tenantId, userId] + unique: true + acl: + create: [user] + read: [public] + update: [owner] + delete: [owner, admin] + + - name: SocialConnection + description: Follow relationship between users + fields: + - name: id + type: String + required: true + primary: true + - name: tenantId + type: String + required: true + - name: followerId + type: String + required: true + description: User doing the following + - name: followingId + type: String + required: true + description: User being followed + - name: createdAt + type: DateTime + required: true + indexes: + - name: connection_follower_idx + fields: [tenantId, followerId] + - name: connection_following_idx + fields: [tenantId, followingId] + - name: connection_unique_idx + fields: [tenantId, followerId, followingId] + unique: true + acl: + create: [user] + read: [user] + update: [none] + delete: [owner] + + - name: SocialActivity + description: User activity feed item + fields: + - name: id + type: String + required: true + primary: true + - name: tenantId + type: String + required: true + - name: userId + type: String + required: true + - name: type + type: String + required: true + description: post, like, comment, follow, etc. + - name: content + type: String + required: false + - name: targetId + type: String + required: false + description: Reference to target object + - name: targetType + type: String + required: false + description: Type of target object + - name: metadata + type: Json + required: false + - name: createdAt + type: DateTime + required: true + indexes: + - name: activity_tenant_user_idx + fields: [tenantId, userId] + - name: activity_created_idx + fields: [tenantId, createdAt] + acl: + create: [user] + read: [user] + update: [none] + delete: [owner, admin] + + - name: SocialLike + description: Like on content + fields: + - name: id + type: String + required: true + primary: true + - name: tenantId + type: String + required: true + - name: userId + type: String + required: true + - name: targetId + type: String + required: true + - name: targetType + type: String + required: true + - name: createdAt + type: DateTime + required: true + indexes: + - name: like_target_idx + fields: [tenantId, targetId] + - name: like_user_target_idx + fields: [tenantId, userId, targetId] + unique: true + acl: + create: [user] + read: [user] + update: [none] + delete: [owner]