From 097f0db27c23f59b003084673a223e8cc9d5e0c1 Mon Sep 17 00:00:00 2001 From: Richard Ward Date: Tue, 30 Dec 2025 22:11:10 +0000 Subject: [PATCH] config: yaml,packages,entities (2 files) --- .../github_tools/seed/schema/entities.yaml | 254 ++++++++++++++++++ .../smtp_config/seed/schema/entities.yaml | 177 ++++++++++++ 2 files changed, 431 insertions(+) create mode 100644 packages/github_tools/seed/schema/entities.yaml create mode 100644 packages/smtp_config/seed/schema/entities.yaml diff --git a/packages/github_tools/seed/schema/entities.yaml b/packages/github_tools/seed/schema/entities.yaml new file mode 100644 index 000000000..b0a0d2876 --- /dev/null +++ b/packages/github_tools/seed/schema/entities.yaml @@ -0,0 +1,254 @@ +# GitHub Tools Schema Definitions +# Package: github_tools +# Version: 1.0.0 + +entities: + - name: GitHubConnection + description: GitHub account connection + fields: + - name: id + type: String + required: true + primary: true + - name: tenantId + type: String + required: true + - name: userId + type: String + required: true + - name: githubUsername + type: String + required: true + - name: accessToken + type: String + required: true + description: Encrypted access token + - name: scopes + type: Json + required: false + description: Authorized OAuth scopes + - name: expiresAt + type: DateTime + required: false + - name: createdAt + type: DateTime + required: true + - name: updatedAt + type: DateTime + required: true + indexes: + - name: github_conn_tenant_user_idx + fields: [tenantId, userId] + unique: true + acl: + create: [user] + read: [owner, admin] + update: [owner] + delete: [owner, admin] + + - name: GitHubRepository + description: Synced GitHub repository + fields: + - name: id + type: String + required: true + primary: true + - name: tenantId + type: String + required: true + - name: connectionId + type: String + required: true + - name: owner + type: String + required: true + - name: name + type: String + required: true + - name: fullName + type: String + required: true + - name: description + type: String + required: false + - name: isPrivate + type: Boolean + required: true + default: false + - name: defaultBranch + type: String + required: false + - name: metadata + type: Json + required: false + description: Stars, forks, language, etc. + - name: syncedAt + type: DateTime + required: true + - name: createdAt + type: DateTime + required: true + indexes: + - name: repo_connection_idx + fields: [connectionId] + - name: repo_fullname_idx + fields: [tenantId, fullName] + unique: true + relations: + - name: connection + type: belongsTo + target: GitHubConnection + foreignKey: connectionId + acl: + create: [system] + read: [owner, admin] + update: [system] + delete: [owner, admin] + + - name: GitHubWebhook + description: Registered GitHub webhook + fields: + - name: id + type: String + required: true + primary: true + - name: tenantId + type: String + required: true + - name: repositoryId + type: String + required: true + - name: githubWebhookId + type: String + required: true + - name: events + type: Json + required: true + description: Array of subscribed events + - name: secret + type: String + required: true + description: Webhook secret for verification + - name: isActive + type: Boolean + required: true + default: true + - name: createdAt + type: DateTime + required: true + indexes: + - name: webhook_repo_idx + fields: [repositoryId] + relations: + - name: repository + type: belongsTo + target: GitHubRepository + foreignKey: repositoryId + acl: + create: [user] + read: [owner, admin] + update: [owner, admin] + delete: [owner, admin] + + - name: GitHubWebhookEvent + description: Received webhook event log + fields: + - name: id + type: String + required: true + primary: true + - name: tenantId + type: String + required: true + - name: webhookId + type: String + required: true + - name: eventType + type: String + required: true + - name: deliveryId + type: String + required: true + - name: payload + type: Json + required: true + - name: processedAt + type: DateTime + required: false + - name: receivedAt + type: DateTime + required: true + indexes: + - name: event_webhook_idx + fields: [webhookId] + - name: event_type_idx + fields: [tenantId, eventType] + relations: + - name: webhook + type: belongsTo + target: GitHubWebhook + foreignKey: webhookId + acl: + create: [system] + read: [owner, admin] + update: [system] + delete: [admin] + + - name: GitHubPullRequest + description: Tracked pull request + fields: + - name: id + type: String + required: true + primary: true + - name: tenantId + type: String + required: true + - name: repositoryId + type: String + required: true + - name: number + type: Int + required: true + - name: title + type: String + required: true + - name: state + type: String + required: true + description: open, closed, merged + - name: author + type: String + required: true + - name: baseBranch + type: String + required: true + - name: headBranch + type: String + required: true + - name: metadata + type: Json + required: false + description: Labels, reviewers, checks + - name: syncedAt + type: DateTime + required: true + - name: createdAt + type: DateTime + required: true + indexes: + - name: pr_repo_number_idx + fields: [repositoryId, number] + unique: true + - name: pr_state_idx + fields: [repositoryId, state] + relations: + - name: repository + type: belongsTo + target: GitHubRepository + foreignKey: repositoryId + acl: + create: [system] + read: [owner, admin] + update: [system] + delete: [admin] diff --git a/packages/smtp_config/seed/schema/entities.yaml b/packages/smtp_config/seed/schema/entities.yaml new file mode 100644 index 000000000..8758090fd --- /dev/null +++ b/packages/smtp_config/seed/schema/entities.yaml @@ -0,0 +1,177 @@ +# SMTP Config Schema Definitions +# Package: smtp_config +# Version: 1.0.0 + +entities: + - name: SmtpConfig + description: SMTP server configuration + fields: + - name: id + type: String + required: true + primary: true + - name: tenantId + type: String + required: true + - name: name + type: String + required: true + - name: host + type: String + required: true + - name: port + type: Int + required: true + - name: secure + type: Boolean + required: true + default: true + - name: username + type: String + required: false + - name: password + type: String + required: false + description: Encrypted password + - name: fromAddress + type: String + required: true + - name: fromName + type: String + required: false + - name: isDefault + type: Boolean + required: true + default: false + - name: isActive + type: Boolean + required: true + default: true + - name: createdAt + type: DateTime + required: true + - name: updatedAt + type: DateTime + required: true + indexes: + - name: smtp_tenant_name_idx + fields: [tenantId, name] + unique: true + - name: smtp_tenant_default_idx + fields: [tenantId, isDefault] + acl: + create: [admin] + read: [admin] + update: [admin] + delete: [admin] + + - name: EmailTemplate + description: Email template definition + 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 + description: Unique template identifier + - name: subject + type: String + required: true + - name: bodyHtml + type: String + required: true + - name: bodyText + type: String + required: false + description: Plain text fallback + - name: variables + type: Json + required: false + description: Available template variables + - name: isActive + type: Boolean + required: true + default: true + - name: createdAt + type: DateTime + required: true + - name: updatedAt + type: DateTime + required: true + indexes: + - name: template_tenant_slug_idx + fields: [tenantId, slug] + unique: true + acl: + create: [admin] + read: [admin] + update: [admin] + delete: [admin] + + - name: EmailLog + description: Sent email log + fields: + - name: id + type: String + required: true + primary: true + - name: tenantId + type: String + required: true + - name: configId + type: String + required: true + - name: templateId + type: String + required: false + - name: toAddress + type: String + required: true + - name: subject + type: String + required: true + - name: status + type: String + required: true + description: pending, sent, failed, bounced + - name: error + type: String + required: false + - name: messageId + type: String + required: false + description: SMTP message ID + - name: metadata + type: Json + required: false + - name: sentAt + type: DateTime + required: false + - name: createdAt + type: DateTime + required: true + indexes: + - name: email_log_tenant_idx + fields: [tenantId] + - name: email_log_status_idx + fields: [tenantId, status] + - name: email_log_to_idx + fields: [tenantId, toAddress] + relations: + - name: config + type: belongsTo + target: SmtpConfig + foreignKey: configId + acl: + create: [system] + read: [admin] + update: [system] + delete: [admin]