From 1c4b6403e758bd31ff896dfcc799f3951afc3299 Mon Sep 17 00:00:00 2001 From: GuanMo <13216698987@163.com> Date: Thu, 27 Feb 2025 10:00:47 +0800 Subject: [PATCH 1/2] feat: update material generation and database connection for component libraries - Add support for TinyVue and Element Plus component libraries in material generation - Update database connection script with new table and column names - Modify component insertion logic to match new database schema - Add version and script details for third-party component libraries --- scripts/buildMaterials.mjs | 36 ++++++++++++++++++++++++--- scripts/connection.mjs | 50 ++++++++++++++++++++++++++++---------- 2 files changed, 70 insertions(+), 16 deletions(-) diff --git a/scripts/buildMaterials.mjs b/scripts/buildMaterials.mjs index 4f8a05b73b..da4969c0b6 100644 --- a/scripts/buildMaterials.mjs +++ b/scripts/buildMaterials.mjs @@ -93,7 +93,25 @@ const generateComponents = () => { materials: { components: [], blocks: [], - snippets: [] + snippets: [], + packages: [ + { + name: 'TinyVue组件库', + package: '@opentiny/vue', + version: '3.20.0', + destructuring: true, + script: 'https://unpkg.com/@opentiny/vue@~3.14/runtime/tiny-vue.mjs', + css: 'https://unpkg.com/@opentiny/vue-theme@~3.14/index.css' + }, + { + name: 'element-plus组件库', + package: 'element-plus', + version: '2.4.2', + script: 'https://unpkg.com/element-plus@2.4.2/dist/index.full.mjs', + css: 'https://unpkg.com/element-plus@2.4.2/dist/index.css' + }, + // 请按照实际业务情况填写所需的第三方组件库 + ] } } } @@ -150,14 +168,26 @@ const generateComponents = () => { componentsMap.push({ component, npm }) + const { package: packageName = '', version = '', exportName = '' } = npm || {} + if (connection.connected) { + if (material.npm) { + // 给组件添加 npm 来源详细信息 + const packageItem = packages.find((item) => item.package === packageName) + + if (packageItem) { + material.npm.version = packageItem.version + material.npm.script = packageItem.script + material.npm.css = packageItem.css + material.npm.destructuring = packageItem.destructuring + } + } + connection.initDB(material) } appInfo.materialHistory.components = componentsMap - const { package: packageName = '', version = '', exportName = '' } = npm || {} - const mapItem = { componentName: component, package: packageName, diff --git a/scripts/connection.mjs b/scripts/connection.mjs index a06c5623ee..8ae5a68b1f 100644 --- a/scripts/connection.mjs +++ b/scripts/connection.mjs @@ -15,9 +15,9 @@ dotenv.config({ path: `${pathsDotenv}.local` }) const { SQL_HOST, SQL_PORT, SQL_USER, SQL_PASSWORD, SQL_DATABASE } = process.env // 组件表名称 -const componentsTableName = 'user_components' +const componentsTableName = 't_component' // 组件关联到物料资产包的id -const materialHistoryId = 639 +const materialHistoryId = 1 // 数据库配置 const mysqlConfig = { host: SQL_HOST, // 主机名(服务器地址) @@ -202,9 +202,10 @@ class MysqlConnection { /** * 新建的组件关联物料资产包 + * @deprecated 物料资产包已废弃,使用relationMaterialHistory替代 * @param {number} id 新建的组件id */ - relationMaterialHistory(id) { + relationMaterialBlockHistory(id) { const uniqSql = `SELECT * FROM \`material_histories_components__user_components_mhs\` WHERE \`material-history_id\`=${materialHistoryId} AND \`user-component_id\`=${id}` this.query(uniqSql).then((result) => { if (!result.length) { @@ -215,6 +216,20 @@ class MysqlConnection { }) } + /** + * 新建的组件关联物料资产包 + * @param {number} id 新建的组件id + */ + relationMaterialHistory(id) { + const uniqSql = `SELECT * FROM \`r_material_history_component\` WHERE \`material_history_id\`=${materialHistoryId} AND \`component_id\`=${id}` + this.query(uniqSql).then((result) => { + if (!result.length) { + const sqlContent = `INSERT INTO \`r_material_history_component\` (\`material_history_id\`, \`component_id\`) VALUES (${materialHistoryId}, ${id})` + this.query(sqlContent) + } + }) + } + /** * 生成新增组件的sql语句 * @param {object} component 组件数据 @@ -282,10 +297,15 @@ class MysqlConnection { isOfficial = 0, isDefault = 0, tiny_reserved = 0, - tenant = 1, - createBy = 86, - updatedBy = 86 + component_metadata = null, + library_id = 1, + tenant_id = 1, + renter_id = 1, + site_id = 1, + created_by = 1, + last_updated_by = 1 } = component + const values = `('${version}', '${this.formatSingleQuoteValue(JSON.stringify(name))}', '${componentName}', @@ -308,15 +328,19 @@ class MysqlConnection { '${isOfficial}', '${isDefault}', '${tiny_reserved}', - '${tenant}', - '${createBy}', - '${updatedBy}' + '${component_metadata}', + '${library_id}', + '${tenant_id}', + '${renter_id}', + '${site_id}', + '${created_by}', + '${last_updated_by}' );` - const sqlContent = `INSERT INTO ${componentsTableName} (version, name, component, icon, description, doc_url, + const sqlContent = `INSERT INTO ${componentsTableName} (version, name, name_en, icon, description, doc_url, screenshot, tags, keywords, dev_mode, npm, \`group\`, \`category\`, priority, snippets, - schema_fragment, configure, \`public\`, framework, isOfficial, isDefault, tiny_reserved, - tenant, createdBy, updatedBy) VALUES ${values}`.replace(/\n/g, '') + schema_fragment, configure, \`public\`, framework, is_official, is_default, tiny_reserved,component_metadata, + library_id, tenant_id, renter_id, site_id, created_by, last_updated_by) VALUES ${values}`.replace(/\n/g, '') this.query(sqlContent, componentName) .then((result) => { @@ -335,7 +359,7 @@ class MysqlConnection { * @param {object} component 组件数据 */ initDB(component) { - const selectSqlContent = `SELECT * FROM ${this.config.database}.${componentsTableName} WHERE component = '${component.component}'` + const selectSqlContent = `SELECT * FROM ${this.config.database}.${componentsTableName} WHERE name_en = '${component.component}'` this.query(selectSqlContent) .then((result) => { From 67760dc869e3b7b0534ed414727912f3952e3ec4 Mon Sep 17 00:00:00 2001 From: GuanMo <13216698987@163.com> Date: Thu, 27 Feb 2025 10:50:55 +0800 Subject: [PATCH 2/2] refactor: remove hardcoded component library configurations --- scripts/buildMaterials.mjs | 32 +------------------------------- 1 file changed, 1 insertion(+), 31 deletions(-) diff --git a/scripts/buildMaterials.mjs b/scripts/buildMaterials.mjs index da4969c0b6..0cffaf3b9d 100644 --- a/scripts/buildMaterials.mjs +++ b/scripts/buildMaterials.mjs @@ -93,25 +93,7 @@ const generateComponents = () => { materials: { components: [], blocks: [], - snippets: [], - packages: [ - { - name: 'TinyVue组件库', - package: '@opentiny/vue', - version: '3.20.0', - destructuring: true, - script: 'https://unpkg.com/@opentiny/vue@~3.14/runtime/tiny-vue.mjs', - css: 'https://unpkg.com/@opentiny/vue-theme@~3.14/index.css' - }, - { - name: 'element-plus组件库', - package: 'element-plus', - version: '2.4.2', - script: 'https://unpkg.com/element-plus@2.4.2/dist/index.full.mjs', - css: 'https://unpkg.com/element-plus@2.4.2/dist/index.css' - }, - // 请按照实际业务情况填写所需的第三方组件库 - ] + snippets: [] } } } @@ -171,18 +153,6 @@ const generateComponents = () => { const { package: packageName = '', version = '', exportName = '' } = npm || {} if (connection.connected) { - if (material.npm) { - // 给组件添加 npm 来源详细信息 - const packageItem = packages.find((item) => item.package === packageName) - - if (packageItem) { - material.npm.version = packageItem.version - material.npm.script = packageItem.script - material.npm.css = packageItem.css - material.npm.destructuring = packageItem.destructuring - } - } - connection.initDB(material) }