8000 gorm/dialect_common.go at master · iancmcc/gorm · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content
{"payload":{"allShortcutsEnabled":false,"fileTree":{"":{"items":[{"name":"dialects","path":"dialects","contentType":"directory"},{"name":".codeclimate.yml","path":".codeclimate.yml","contentType":"file"},{"name":".gitignore","path":".gitignore","contentType":"file"},{"name":"CONTRIBUTING.md","path":"CONTRIBUTING.md","contentType":"file"},{"name":"License","path":"License","contentType":"file"},{"name":"README.md","path":"README.md","contentType":"file"},{"name":"association.go","path":"association.go","contentType":"file"},{"name":"association_test.go","path":"association_test.go","contentType":"file"},{"name":"callback.go","path":"callback.go","contentType":"file"},{"name":"callback_create.go","path":"callback_create.go","contentType":"file"},{"name":"callback_delete.go","path":"callback_delete.go","contentType":"file"},{"name":"callback_query.go","path":"callback_query.go","contentType":"file"},{"name":"callback_query_preload.go","path":"callback_query_preload.go","contentType":"file"},{"name":"callback_save.go","path":"callback_save.go","contentType":"file"},{"name":"callback_system_test.go","path":"callback_system_test.go","contentType":"file"},{"name":"callback_update.go","path":"callback_update.go","contentType":"file"},{"name":"callbacks_test.go","path":"callbacks_test.go","contentType":"file"},{"name":"create_test.go","path":"create_test.go","contentType":"file"},{"name":"customize_column_test.go","path":"customize_column_test.go","contentType":"file"},{"name":"delete_test.go","path":"delete_test.go","contentType":"file"},{"name":"dialect.go","path":"dialect.go","contentType":"file"},{"name":"dialect_common.go","path":"dialect_common.go","contentType":"file"},{"name":"dialect_mysql.go","path":"dialect_mysql.go","contentType":"file"},{"name":"dialect_postgres.go","path":"dialect_postgres.go","contentType":"file"},{"name":"dialect_sqlite3.go","path":"dialect_sqlite3.go","contentType":"file"},{"name":"embedded_struct_test.go","path":"embedded_struct_test.go","contentType":"file"},{"name":"errors.go","path":"errors.go","contentType":"file"},{"name":"errors_test.go","path":"errors_test.go","contentType":"file"},{"name":"field.go","path":"field.go","contentType":"file"},{"name":"field_test.go","path":"field_test.go","contentType":"file"},{"name":"interface.go","path":"interface.go","contentType":"file"},{"name":"join_table_handler.go","path":"join_table_handler.go","contentType":"file"},{"name":"join_table_test.go","path":"join_table_test.go","contentType":"file"},{"name":"logger.go","path":"logger.go","contentType":"file"},{"name":"main.go","path":"main.go","contentType":"file"},{"name":"main_test.go","path":"main_test.go","contentType":"file"},{"name":"migration_test.go","path":"migration_test.go","contentType":"file"},{"name":"model.go","path":"model.go","contentType":"file"},{"name":"model_struct.go","path":"model_struct.go","contentType":"file"},{"name":"multi_primary_keys_test.go","path":"multi_primary_keys_test.go","contentType":"file"},{"name":"pointer_test.go","path":"pointer_test.go","contentType":"file"},{"name":"polymorphic_test.go","path":"polymorphic_test.go","contentType":"file"},{"name":"preload_test.go","path":"preload_test.go","contentType":"file"},{"name":"query_test.go","path":"query_test.go","contentType":"file"},{"name":"scaner_test.go","path":"scaner_test.go","contentType":"file"},{"name":"scope.go","path":"scope.go","contentType":"file"},{"name":"scope_test.go","path":"scope_test.go","contentType":"file"},{"name":"search.go","path":"search.go","contentType":"file"},{"name":"search_test.go","path":"search_test.go","contentType":"file"},{"name":"test_all.sh","path":"test_all.sh","contentType":"file"},{"name":"update_test.go","path":"update_test.go","contentType":"file"},{"name":"utils.go","path":"utils.go","contentType":"file"},{"name":"utils_test.go","path":"utils_test.go","contentType":"file"},{"name":"wercker.yml","path":"wercker.yml","contentType":"file"}],"totalCount":54}},"fileTreeProcessingTime":8.360408999999999,"foldersToFetch":[],"incompleteFileTree":false,"repo":{"id":73020490,"defaultBranch":"master","name":"gorm","ownerLogin":"iancmcc","currentUserCanPush":false,"isFork":true,"isEmpty":false,"createdAt":"2016-11-06T21:34:34.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/57971?v=4","public":true,"private":false,"isOrgOwned":false},"codeLineWrapEnabled":false,"symbolsExpanded":false,"treeExpanded":true,"refInfo":{"name":"master","listCacheKey":"v0:1616112138.247456","canEdit":false,"refType":"branch","currentOid":"9edd66250e8ae11d572213054643b7bb1ce4d102"},"path":"dialect_common.go","currentUser":null,"blob":{"rawLines":["package gorm","","import (","\t\"database/sql\"","\t\"fmt\"","\t\"reflect\"","\t\"regexp\"","\t\"strconv\"","\t\"strings\"","\t\"time\"",")","","// DefaultForeignKeyNamer contains the default foreign key name generator method","type DefaultForeignKeyNamer struct {","}","","type commonDialect struct {","\tdb *sql.DB","\tDefaultForeignKeyNamer","}","","func init() {","\tRegisterDialect(\"common\", \u0026commonDialect{})","}","","func (commonDialect) GetName() string {","\treturn \"common\"","}","","func (s *commonDialect) SetDB(db *sql.DB) {","\ts.db = db","}","","func (commonDialect) BindVar(i int) string {","\treturn \"$$\" // ?","}","","func (commonDialect) Quote(key string) string {","\treturn fmt.Sprintf(`\"%s\"`, key)","}","","func (commonDialect) DataTypeOf(field *StructField) string {","\tvar dataValue, sqlType, size, additionalType = ParseFieldStructForDialect(field)","","\tif sqlType == \"\" {","\t\tswitch dataValue.Kind() {","\t\tcase reflect.Bool:","\t\t\tsqlType = \"BOOLEAN\"","\t\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uintptr:","\t\t\tif _, ok := field.TagSettings[\"AUTO_INCREMENT\"]; ok {","\t\t\t\tsqlType = \"INTEGER AUTO_INCREMENT\"","\t\t\t} else {","\t\t\t\tsqlType = \"INTEGER\"","\t\t\t}","\t\tcase reflect.Int64, reflect.Uint64:","\t\t\tif _, ok := field.TagSettings[\"AUTO_INCREMENT\"]; ok {","\t\t\t\tsqlType = \"BIGINT AUTO_INCREMENT\"","\t\t\t} else {","\t\t\t\tsqlType = \"BIGINT\"","\t\t\t}","\t\tcase reflect.Float32, reflect.Float64:","\t\t\tsqlType = \"FLOAT\"","\t\tcase reflect.String:","\t\t\tif size \u003e 0 \u0026\u0026 size \u003c 65532 {","\t\t\t\tsqlType = fmt.Sprintf(\"VARCHAR(%d)\", size)","\t\t\t} else {","\t\t\t\tsqlType = \"VARCHAR(65532)\"","\t\t\t}","\t\tcase reflect.Struct:","\t\t\tif _, ok := dataValue.Interface().(time.Time); ok {","\t\t\t\tsqlType = \"TIMESTAMP\"","\t\t\t}","\t\tdefault:","\t\t\tif _, ok := dataValue.Interface().([]byte); ok {","\t\t\t\tif size \u003e 0 \u0026\u0026 size \u003c 65532 {","\t\t\t\t\tsqlType = fmt.Sprintf(\"BINARY(%d)\", size)","\t\t\t\t} else {","\t\t\t\t\tsqlType = \"BINARY(65532)\"","\t\t\t\t}","\t\t\t}","\t\t}","\t}","","\tif sqlType == \"\" {","\t\tpanic(fmt.Sprintf(\"invalid sql type %s (%s) for commonDialect\", dataValue.Type().Name(), dataValue.Kind().String()))","\t}","","\tif strings.TrimSpace(additionalType) == \"\" {","\t\treturn sqlType","\t}","\treturn fmt.Sprintf(\"%v %v\", sqlType, additionalType)","}","","func (s commonDialect) HasIndex(tableName string, indexName string) bool {","\tvar count int","\ts.db.QueryRow(\"SELECT count(*) FROM INFORMATION_SCHEMA.STATISTICS WHERE table_schema = ? AND table_name = ? AND index_name = ?\", s.CurrentDatabase(), tableName, indexName).Scan(\u0026count)","\treturn count \u003e 0","}","","func (s commonDialect) RemoveIndex(tableName string, indexName string) error {","\t_, err := s.db.Exec(fmt.Sprintf(\"DROP INDEX %v\", indexName))","\treturn err","}","","func (s commonDialect) HasForeignKey(tableName string, foreignKeyName string) bool {","\treturn false","}","","func (s commonDialect) HasTable(tableName string) bool {","\tvar count int","\ts.db.QueryRow(\"SELECT count(*) FROM INFORMATION_SCHEMA.TABLES WHERE table_schema = ? AND table_name = ?\", s.CurrentDatabase(), tableName).Scan(\u0026count)","\treturn count \u003e 0","}","","func (s commonDialect) HasColumn(tableName string, columnName string) bool {","\tvar count int","\ts.db.QueryRow(\"SELECT count(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema = ? AND table_name = ? AND column_name = ?\", s.CurrentDatabase(), tableName, columnName).Scan(\u0026count)","\treturn count \u003e 0","}","","func (s commonDialect) CurrentDatabase() (name string) {","\ts.db.QueryRow(\"SELECT DATABASE()\").Scan(\u0026name)","\treturn","}","","func (commonDialect) LimitAndOffsetSQL(limit, offset interface{}) (sql string) {","\tif limit != nil {","\t\tif parsedLimit, err := strconv.ParseInt(fmt.Sprint(limit), 0, 0); err == nil \u0026\u0026 parsedLimit \u003e 0 {","\t\t\tsql += fmt.Sprintf(\" LIMIT %d\", parsedLimit)","\t\t}","\t}","\tif offset != nil {","\t\tif parsedOffset, err := strconv.ParseInt(fmt.Sprint(offset), 0, 0); err == nil \u0026\u0026 parsedOffset \u003e 0 {","\t\t\tsql += fmt.Sprintf(\" OFFSET %d\", parsedOffset)","\t\t}","\t}","\treturn","}","","func (commonDialect) SelectFromDummyTable() string {","\treturn \"\"","}","","func (commonDialect) LastInsertIDReturningSuffix(tableName, columnName string) string {","\treturn \"\"","}","","func (DefaultForeignKeyNamer) BuildForeignKeyName(tableName, field, dest string) string {","\tkeyName := fmt.Sprintf(\"%s_%s_%s_foreign\", tableName, field, dest)","\tkeyName = regexp.MustCompile(\"(_*[^a-zA-Z]+_*|_+)\").ReplaceAllString(keyName, \"_\")","\treturn keyName","}"],"stylingDirectives":null,"colorizedLines":null,"csv":null,"csvError":null,"dependabotInfo":{"showConfigurationBanner":false,"configFilePath":null,"networkDependabotPath":"/iancmcc/gorm/network/updates","dismissConfigurationNoticePath":"/settings/dismiss-notice/dependabot_configuration_notice","configurationNoticeDismissed":null},"displayName":"dialect_common.go","displayUrl":"https://github.com/iancmcc/gorm/blob/master/dialect_common.go?raw=true","headerInfo":{"blobSize":"4.09 KB","deleteTooltip":"You must be signed in to make or propose changes","editTooltip":"You must be signed in to make or propose changes","ghDesktopPath":"https://desktop.github.com","isGitLfs":false,"onBranch":true,"shortPath":"5b5682c","siteNavLoginPath":"/login?return_to=https%3A%2F%2Fgithub.com%2Fiancmcc%2Fgorm%2Fblob%2Fmaster%2Fdialect_common.go","isCSV":false,"isRichtext":false,"toc":null,"lineInfo":{"truncatedLoc":"152","truncatedSloc":"130"},"mode":"file"},"image":false,"isCodeownersFile":null,"isPlain":false,"isValidLegacyIssueTemplate":false,"issueTemplate":null,"discussionTemplate":null,"language":"Go","languageID":132,"large":false,"planSupportInfo":{"repoIsFork":null,"repoOwnedByCurrentUser":null,"requestFullPath":"/iancmcc/gorm/blob/master/dialect_common.go","showFreeOrgGatedFeatureMessage":null,"showPlanSupportBanner":null,"upgradeDataAttributes":null,"upgradePath":null},"publishBannersInfo":{"dismissActionNoticePath":"/settings/dismiss-notice/publish_action_from_dockerfile","releasePath":"/iancmcc/gorm/releases/new?marketplace=true","showPublishActionBanner":false},"rawBlobUrl":"https://github.com/iancmcc/gorm/raw/refs/heads/master/dialect_common.go","renderImageOrRaw":false,"richText":null,"renderedFileInfo":null,"shortPath":null,"symbolsEnabled":true,"tabSize":8,"topBannersInfo":{"overridingGlobalFundingFile":false,"globalPreferredFundingPath":null,"showInvalidCitationWarning":false,"citationHelpUrl":"https://docs.github.com/github/creating-cloning-and-archiving-repositories/creating-a-repository-on-github/about-citation-files","actionsOnboardingTip":null},"truncated":false,"viewable":true,"workflowRedirectUrl":null,"symbols":{"timed_out":false,"not_analyzed":false,"symbols":[{"name":"DefaultForeignKeyNamer","kind":"class","ident_start":186,"ident_end":208,"extent_start":181,"extent_end":219,"fully_qualified_name":"DefaultForeignKeyNamer","ident_utf16":{"start":{"line_number":13,"utf16_col":5},"end":{"line_number":13,"utf16_col":27}},"extent_utf16":{"start":{"line_number":13,"utf16_col":0},"end":{"line_number":14,"utf16_col":1}}},{"name":"commonDialect","kind":"class","ident_start":226,"ident_end":239,"extent_start":221,"extent_end":286,"fully_qualified_name":"commonDialect","ident_utf16":{"start":{"line_number":16,"utf16_col":5},"end":{"line_number":16,"utf16_col":18}},"extent_utf16":{"start":{"line_number":16,"utf16_col":0},"end":{"line_number":19,"utf16_col":1}}},{"name":"db","kind":"field","ident_start":250,"ident_end":252,"extent_start":250,"extent_end":260,"fully_qualified_name":"commonDialect.db","ident_utf16":{"start":{"line_number":17,"utf16_col":1},"end":{"line_number":17,"utf16_col":3}},"extent_utf16":{"start":{"line_number":17,"utf16_col":1},"end":{"line_number":17,"utf16_col":11}}},{"name":"init","kind":"function","ident_start":293,"ident_end":297,"extent_start":288,"extent_end":348,"fully_qualified_name":"init","ident_utf16":{"start":{"line_number":21,"utf16_col":5},"end":{"line_number":21,"utf16_col":9}},"extent_utf16":{"start":{"line_number":21,"utf16_col":0},"end":{"line_number":23,"utf16_col":1}}},{"name":"GetName","kind":"method","ident_start":371,"ident_end":378,"extent_start":350,"extent_end":408,"fully_qualified_name":"commonDialect.GetName","ident_utf16":{"start":{"line_number":25,"utf16_col":21},"end":{"line_number":25,"utf16_col":28}},"extent_utf16":{"start":{"line_number":25,"utf16_col":0},"end":{"line_number":27,"utf16_col":1}}},{"name":"SetDB","kind":"method","ident_start":434,"ident_end":439,"extent_start":410,"extent_end":466,"fully_qualified_name":"commonDialect.SetDB","ident_utf16":{"start":{"line_number":29,"utf16_col":24},"end":{"line_number":29,"utf16_col":29}},"extent_utf16":{"start":{"line_number":29,"utf16_col":0},"end":{"line_number":31,"utf16_col":1}}},{"name":"BindVar","kind":"method","ident_start":489,"ident_end":496,"extent_start":468,"extent_end":532,"fully_qualified_name":"commonDialect.BindVar","ident_utf16":{"start":{"line_number":33,"utf16_col":21},"end":{"line_number":33,"utf16_col":28}},"extent_utf16":{"start":{"line_number":33,"utf16_col":0},"end":{"line_number":35,"utf16_col":1}}},{"name":"Quote","kind":"method","ident_start":555,"ident_end":560,"extent_start":534,"extent_end":616,"fully_qualified_name":"commonDialect.Quote","ident_utf16":{"start":{"line_number":37,"utf16_col":21},"end":{"line_number":37,"utf16_col":26}},"extent_utf16":{"start":{"line_number":37,"utf16_col":0},"end":{"line_number":39,"utf16_col":1}}},{"name":"DataTypeOf","kind":"method","ident_start":639,"ident_end":649,"extent_start":618,"extent_end":2099,"fully_qualified_name":"commonDialect.DataTypeOf","ident_utf16":{"start":{"line_number":41,"utf16_col":21},"end":{"line_number":41,"utf16_col":31}},"extent_utf16":{"start":{"line_number":41,"utf16_col":0},"end":{"line_number":91,"utf16_col":1}}},{"name":"HasIndex","kind":"method","ident_start":2124,"ident_end":2132,"extent_start":2101,"extent_end":2396,"fully_qualified_name":"commonDialect.HasIndex","ident_utf16":{"start":{"line_number":93,"utf16_col":23},"end":{"line_number":93,"utf16_col":31}},"extent_utf16":{"start":{"line_number":93,"utf16_col":0},"end":{"line_number":97,"utf16_col":1}}},{"name":"RemoveIndex","kind":"method","ident_start":2421,"ident_end":2432,"extent_start":2398,"extent_end":2552,"fully_qualified_name":"commonDialect.RemoveIndex","ident_utf16":{"start":{"line_number":99,"utf16_col":23},"end":{"line_number":99,"utf16_col":34}},"extent_utf16":{"start":{"line_number":99,"utf16_col":0},"end":{"line_number":102,"utf16_col":1}}},{"name":"HasForeignKey","kind":"method","ident_start":2577,"ident_end":2590,"extent_start":2554,"extent_end":2654,"fully_qualified_name":"commonDialect.HasForeignKey","ident_utf16":{"start":{"line_number":104,"utf16_col":23},"end":{"line_number":104,"utf16_col":36}},"extent_utf16":{"start":{"line_number":104,"utf16_col":0},"end":{"line_number":106,"utf16_col":1}}},{"name":"HasTable","kind":"method","ident_start":2679,"ident_end":2687,"extent_start":2656,"extent_end":2899,"fully_qualified_name":"commonDialect.HasTable","ident_utf16":{"start":{"line_number":108,"utf16_col":23},"end":{"line_number":108,"utf16_col":31}},"extent_utf16":{"start":{"line_number":108,"utf16_col":0},"end":{"line_number":112,"utf16_col":1}}},{"name":"HasColumn","kind":"method","ident_start":2924,"ident_end":2933,"extent_start":2901,"extent_end":3197,"fully_qualified_name":"commonDialect.HasColumn","ident_utf16":{"start":{"line_number":114,"utf16_col":23},"end":{"line_number":114,"utf16_col":32}},"extent_utf16":{"start":{"line_number":114,"utf16_col":0},"end":{"line_number":118,"utf16_col":1}}},{"name":"CurrentDatabase","kind":"method","ident_start":3222,"ident_end":3237,"extent_start":3199,"extent_end":3313,"fully_qualified_name":"commonDialect.CurrentDatabase","ident_utf16":{"start":{"line_number":120,"utf16_col":23},"end":{"line_number":120,"utf16_col":38}},"extent_utf16":{"start":{"line_number":120,"utf16_col":0},"end":{"line_number":123,"utf16_col":1}}},{"name":"LimitAndOffsetSQL","kind":"method","ident_start":3336,"ident_end":3353,"extent_start":3315,"extent_end":3759,"fully_qualified_name":"commonDialect.LimitAndOffsetSQL","ident_utf16":{"start":{"line_number":125,"utf16_col":21},"end":{"line_number":125,"utf16_col":38}},"extent_utf16":{"start":{"line_number":125,"utf16_col":0},"end":{"line_number":137,"utf16_col":1}}},{"name":"SelectFromDummyTable","kind":"method","ident_start":3782,"ident_end":3802,"extent_start":3761,"extent_end":3826,"fully_qualified_name":"commonDialect.SelectFromDummyTable","ident_utf16":{"start":{"line_number":139,"utf16_col":21},"end":{"line_number":139,"utf16_col":41}},"extent_utf16":{"start":{"line_number":139,"utf16_col":0},"end":{"line_number":141,"utf16_col":1}}},{"name":"LastInsertIDReturningSuffix","kind":"method","ident_start":3849,"ident_end":3876,"extent_start":3828,"extent_end":3928,"fully_qualified_name":"commonDialect.LastInsertIDReturningSuffix","ident_utf16":{"start":{"line_number":143,"utf16_col":21},"end":{"line_number":143,"utf16_col":48}},"extent_utf16":{"start":{"line_number":143,"utf16_col":0},"end":{"line_number":145,"utf16_col":1}}},{"name":"BuildForeignKeyName","kind":"method","ident_start":3960,"ident_end":3979,"extent_start":3930,"extent_end":4189,"fully_qualified_name":"DefaultForeignKeyNamer.BuildForeignKeyName","ident_utf16":{"start":{"line_number":147,"utf16_col":30},"end":{"line_number":147,"utf16_col":49}},"extent_utf16":{"start":{"line_number":147,"utf16_col":0},"end":{"line_number":151,"utf16_col":1}}}]}},"copilotInfo":null,"copilotAccessAllowed":false,"modelsAccessAllowed":false,"modelsRepoIntegrationEnabled":false,"csrf_tokens":{"/iancmcc/gorm/branches":{"post":"2Gw7luuunD6zo81JyXPSH8mtME0iGIpxLzLfc_35V_HXZXvBeFBOBVYFQQypF8yt5OHmG8jWgodvCDFRZOqG1g"},"/repos/preferences":{"post":"tusso-LbDnQLjRAnfixJzBH7pn5cxiLsCsXDTGv0B6oBVRm_fk_CIp6P-fjW17W8NAyCxL7ai3jqlnvw-5-FbA"}}},"title":"gorm/dialect_common.go at master · iancmcc/gorm","appPayload":{"helpUrl":"https://docs.github.com","findFileWorkerPath":"/assets-cdn/worker/find-file-worker-263cab1760dd.js","findInFileWorkerPath":"/assets-cdn/worker/find-in-file-worker-1b17b3e7786a.js","githubDevUrl":null,"enabled_features":{"code_nav_ui_events":false,"react_blob_overlay":false,"accessible_code_button":true}}}
0