Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(cmd/gf): add DaMeng database driver support #3606

Merged
merged 3 commits into from
May 30, 2024
Merged

Conversation

Insua
Copy link
Contributor

@Insua Insua commented May 24, 2024

The purpose is to be able to use the DM database to build a CLI.

@Insua
Copy link
Contributor Author

Insua commented May 29, 2024

Certain databases, such as the DM (Dameng) database, enforce the rule that table names and column names must be in uppercase, especially when the database strictly differentiates between uppercase and lowercase. This strict enforcement helps to prevent numerous errors. However, with the current CLI tool, if the table names and column names are in uppercase, the generated struct names and field names will also be in all uppercase letters, which looks quite unattractive. To address this issue, I modified the code to convert all table names and column names to lowercase, resulting in more aesthetically pleasing and readable generated code.


某些数据库(例如达梦数据库)要求表名和字段名严格遵循大写规范,尤其在数据库严格区分大小写的情况下。这种强制性规定避免了许多错误的产生。然而,在当前的CLI工具下,若表名和字段名是大写的,生成的结构体名称和字段名也会全为大写字母,显得非常不美观。为了解决这一问题,我对代码进行了修改,将表名和字段名全部转换为小写,使生成的代码更加美观和易于阅读

@gqcn gqcn changed the title cmd/gf:Add DaMeng database drive to gf-cli cmd/gf: add DaMeng database driver support May 30, 2024
@gqcn gqcn merged commit bd8d046 into gogf:master May 30, 2024
23 checks passed
@gqcn gqcn changed the title cmd/gf: add DaMeng database driver support feat(cmd/gf): add DaMeng database driver support Jun 26, 2024
@hekmatamani
Copy link

Insua:master

2 similar comments
@hekmatamani
Copy link

Insua:master

@hekmatamani
Copy link

Insua:master

@hekmatamani
Copy link

Uploading IMG-20241103-WA0000.jpg…

@Issues-translate-bot
Copy link

Bot detected the issue body's language is not English, translate it automatically. 👯👭🏻🧑‍🤝‍🧑👫🧑🏿‍🤝‍🧑🏻👩🏾‍🤝‍👨🏿👬🏿


Uploading IMG-20241103-WA0000.jpg…

@hekmatamani
Copy link

1 similar comment
@hekmatamani
Copy link

@hekmatamani
Copy link

Yas 3
Amani sadozai ltd

@Issues-translate-bot
Copy link

Bot detected the issue body's language is not English, translate it automatically. 👯👭🏻🧑‍🤝‍🧑👫🧑🏿‍🤝‍🧑🏻👩🏾‍🤝‍👨🏿👬🏿


Yas 3
Amani sadozai ltd

@hekmatamani
Copy link

image

@Issues-translate-bot
Copy link

Bot detected the issue body's language is not English, translate it automatically. 👯👭🏻🧑‍🤝‍🧑👫🧑🏿‍🤝‍🧑🏻👩🏾‍🤝‍👨🏿👬🏿


image

@hekmatamani
Copy link

A first-level heading ## A second-level heading ### A third-level heading

@hekmatamani
Copy link

image

@Issues-translate-bot
Copy link

Bot detected the issue body's language is not English, translate it automatically. 👯👭🏻🧑‍🤝‍🧑👫🧑🏿‍🤝‍🧑🏻👩🏾‍🤝‍👨🏿👬🏿


image

@hekmatamani
Copy link

A first-level heading ## A second-level heading ### A third-level heading

3 similar comments
@hekmatamani
Copy link

A first-level heading ## A second-level heading ### A third-level heading

@hekmatamani
Copy link

A first-level heading ## A second-level heading ### A third-level heading

@hekmatamani
Copy link

A first-level heading ## A second-level heading ### A third-level heading

@hekmatamani
Copy link

0c3ad4cc406..c59ab180f40 100644

@hekmatamani
Copy link

From e18e926 Mon Sep 17 00:00:00 2001
From: insua [email protected]
Date: Fri, 24 May 2024 17:46:40 +0800
Subject: [PATCH 1/2] ✨ (cmd) add dm gen dao


cmd/gf/go.mod | 1 +
cmd/gf/go.work | 1 +
cmd/gf/internal/cmd/cmd_gen_dao.go | 1 +
3 files changed, 3 insertions(+)

diff --git a/cmd/gf/go.mod b/cmd/gf/go.mod
index 0c3ad4cc406..c59ab180f40 100644
--- a/cmd/gf/go.mod
+++ b/cmd/gf/go.mod
@@ -9,6 +9,7 @@ require (
github.com/gogf/gf/contrib/drivers/oracle/v2 v2.7.1
github.com/gogf/gf/contrib/drivers/pgsql/v2 v2.7.1
github.com/gogf/gf/contrib/drivers/sqlite/v2 v2.7.1

  • github.com/gogf/gf/contrib/drivers/dm/v2 v2.7.1
    github.com/gogf/gf/v2 v2.7.1
    github.com/gogf/selfupdate v0.0.0-20231215043001-5c48c528462f
    github.com/olekukonko/tablewriter v0.0.5
    diff --git a/cmd/gf/go.work b/cmd/gf/go.work
    index b490026965a..ece415d96ab 100644
    --- a/cmd/gf/go.work
    +++ b/cmd/gf/go.work
    @@ -16,5 +16,6 @@ replace (
    github.com/gogf/gf/contrib/drivers/oracle/v2 => ../../contrib/drivers/oracle
    github.com/gogf/gf/contrib/drivers/pgsql/v2 => ../../contrib/drivers/pgsql
    github.com/gogf/gf/contrib/drivers/sqlite/v2 => ../../contrib/drivers/sqlite
  • github.com/gogf/gf/contrib/drivers/dm/v2 => ../../contrib/drivers/dm
    github.com/gogf/gf/v2 => ../../
    )
    diff --git a/cmd/gf/internal/cmd/cmd_gen_dao.go b/cmd/gf/internal/cmd/cmd_gen_dao.go
    index 8862696e1dc..e64b0e5be12 100644
    --- a/cmd/gf/internal/cmd/cmd_gen_dao.go
    +++ b/cmd/gf/internal/cmd/cmd_gen_dao.go
    @@ -8,6 +8,7 @@ package cmd

import (
_ "github.com/gogf/gf/contrib/drivers/clickhouse/v2"

  • _ "github.com/gogf/gf/contrib/drivers/dm/v2"
    _ "github.com/gogf/gf/contrib/drivers/mssql/v2"
    _ "github.com/gogf/gf/contrib/drivers/mysql/v2"
    _ "github.com/gogf/gf/contrib/drivers/oracle/v2"

From e0eb117 Mon Sep 17 00:00:00 2001
From: insua [email protected]
Date: Wed, 29 May 2024 17:21:17 +0800
Subject: [PATCH 2/2] ✨ (cmd) change capital form


cmd/gf/internal/cmd/gendao/gendao_dao.go | 8 ++++----
cmd/gf/internal/cmd/gendao/gendao_do.go | 4 ++--
cmd/gf/internal/cmd/gendao/gendao_entity.go | 4 ++--
cmd/gf/internal/cmd/gendao/gendao_structure.go | 2 +-
4 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/cmd/gf/internal/cmd/gendao/gendao_dao.go b/cmd/gf/internal/cmd/gendao/gendao_dao.go
index 25ffbd460f9..8485286177c 100644
--- a/cmd/gf/internal/cmd/gendao/gendao_dao.go
+++ b/cmd/gf/internal/cmd/gendao/gendao_dao.go
@@ -58,8 +58,8 @@ func generateDaoSingle(ctx context.Context, in generateDaoSingleInput) {
mlog.Fatalf(fetching tables fields failed for table "%s": %+v, in.TableName, err)
}
var (

  •   tableNameCamelCase      = gstr.CaseCamel(in.NewTableName)
    
  •   tableNameCamelLowerCase = gstr.CaseCamelLower(in.NewTableName)
    
  •   tableNameCamelCase      = gstr.CaseCamel(strings.ToLower(in.NewTableName))
    
  •   tableNameCamelLowerCase = gstr.CaseCamelLower(strings.ToLower(in.NewTableName))
      tableNameSnakeCase      = gstr.CaseSnake(in.NewTableName)
      importPrefix            = in.ImportPrefix
    

    )
    @@ -178,7 +178,7 @@ func generateColumnNamesForDao(fieldMap map[string]*gdb.TableField, removeFieldP
    }

      array[index] = []string{
    
  •   	"            #" + gstr.CaseCamel(newFiledName) + ":",
    
  •   	"            #" + gstr.CaseCamel(strings.ToLower(newFiledName)) + ":",
      	fmt.Sprintf(` #"%s",`, field.Name),
      }
    
    }
    @@ -218,7 +218,7 @@ func generateColumnDefinitionForDao(fieldMap map[string]*gdb.TableField, removeF
    newFiledName = gstr.TrimLeftStr(newFiledName, v, 1)
    }
    array[index] = []string{
  •   	"    #" + gstr.CaseCamel(newFiledName),
    
  •   	"    #" + gstr.CaseCamel(strings.ToLower(newFiledName)),
      	" # " + "string",
      	" #" + fmt.Sprintf(`// %s`, comment),
      }
    

diff --git a/cmd/gf/internal/cmd/gendao/gendao_do.go b/cmd/gf/internal/cmd/gendao/gendao_do.go
index aebfde14c65..afe61ec578b 100644
--- a/cmd/gf/internal/cmd/gendao/gendao_do.go
+++ b/cmd/gf/internal/cmd/gendao/gendao_do.go
@@ -40,7 +40,7 @@ func generateDo(ctx context.Context, in CGenDaoInternalInput) {
structDefinition, _ = generateStructDefinition(ctx, generateStructDefinitionInput{
CGenDaoInternalInput: in,
TableName: tableName,

  •   		StructName:           gstr.CaseCamel(newTableName),
    
  •   		StructName:           gstr.CaseCamel(strings.ToLower(newTableName)),
      		FieldMap:             fieldMap,
      		IsDo:                 true,
      	})
    

@@ -61,7 +61,7 @@ func generateDo(ctx context.Context, in CGenDaoInternalInput) {
ctx,
in,
tableName,

  •   	gstr.CaseCamel(newTableName),
    
  •   	gstr.CaseCamel(strings.ToLower(newTableName)),
      	structDefinition,
      )
      in.genItems.AppendGeneratedFilePath(doFilePath)
    

diff --git a/cmd/gf/internal/cmd/gendao/gendao_entity.go b/cmd/gf/internal/cmd/gendao/gendao_entity.go
index 355ffedc372..2717df20176 100644
--- a/cmd/gf/internal/cmd/gendao/gendao_entity.go
+++ b/cmd/gf/internal/cmd/gendao/gendao_entity.go
@@ -36,7 +36,7 @@ func generateEntity(ctx context.Context, in CGenDaoInternalInput) {
structDefinition, appendImports = generateStructDefinition(ctx, generateStructDefinitionInput{
CGenDaoInternalInput: in,
TableName: tableName,

  •   		StructName:           gstr.CaseCamel(newTableName),
    
  •   		StructName:           gstr.CaseCamel(strings.ToLower(newTableName)),
      		FieldMap:             fieldMap,
      		IsDo:                 false,
      	})
    

@@ -44,7 +44,7 @@ func generateEntity(ctx context.Context, in CGenDaoInternalInput) {
ctx,
in,
newTableName,

  •   		gstr.CaseCamel(newTableName),
    
  •   		gstr.CaseCamel(strings.ToLower(newTableName)),
      		structDefinition,
      		appendImports,
      	)
    

diff --git a/cmd/gf/internal/cmd/gendao/gendao_structure.go b/cmd/gf/internal/cmd/gendao/gendao_structure.go
index 2fa4745ebf4..e9acc8bff77 100644
--- a/cmd/gf/internal/cmd/gendao/gendao_structure.go
+++ b/cmd/gf/internal/cmd/gendao/gendao_structure.go
@@ -140,7 +140,7 @@ func generateStructFieldDefinition(
}

attrLines = []string{
  •   "    #" + gstr.CaseCamel(newFiledName),
    
  •   "    #" + gstr.CaseCamel(strings.ToLower(newFiledName)),
      " #" + localTypeNameStr,
    
    }
    attrLines = append(attrLines, fmt.Sprintf( #%sjson:"%s", tagKey, jsonTag))

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants