Skip to content

Commit 606808d

Browse files
author
chendelin1982
committed
lint fix
1 parent bd269a4 commit 606808d

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+414
-804
lines changed

core/cmd/server/main.go

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ import (
2828
// @license.name Apache 2.0
2929
// @license.url http://www.apache.org/licenses/LICENSE-2.0.html
3030

31-
// @host localhost:8080
3231
// @BasePath /api
3332

3433
// @schemes http https
@@ -59,12 +58,14 @@ func main() {
5958
// They are managed via environment variables loaded in Phase 0
6059
registry := config.NewRegistry()
6160
if err := registry.Register("logger", &logger.Config{}); err != nil {
61+
cancel()
6262
log.Fatalf("❌ Failed to register logger config: %v", err)
6363
}
6464
log.Println("✅ Logger module registered with config center")
6565

6666
// Register i18n configuration with config center
6767
if err := registry.Register("i18n", &i18n.Config{}); err != nil {
68+
cancel()
6869
log.Fatalf("❌ Failed to register i18n config: %v", err)
6970
}
7071
log.Println("✅ i18n module registered with config center")
@@ -77,6 +78,7 @@ func main() {
7778
i18nCfg.TranslationsPath = path
7879
}
7980
if err := i18n.InitWithConfig(i18nCfg); err != nil {
81+
cancel()
8082
log.Fatalf("❌ Failed to initialize i18n: %v", err)
8183
}
8284
log.Printf("✅ i18n system initialized (%s, %v)", i18nCfg.DefaultLanguage, i18nCfg.SupportedLanguages)
@@ -90,9 +92,14 @@ func main() {
9092
dbCfg := database.DefaultConfig()
9193
dbClient, err := database.Connect(ctx, dbCfg)
9294
if err != nil {
95+
cancel()
9396
log.Fatalf("❌ Failed to connect to database: %v", err)
9497
}
95-
defer dbClient.Close()
98+
defer func() {
99+
if err := dbClient.Close(); err != nil {
100+
log.Printf("⚠️ Warning: Failed to close database connection: %v", err)
101+
}
102+
}()
96103
log.Println("✅ Database connected")
97104

98105
// Phase 3: Initialize Config Service (Layer 2 - Configuration Center)
@@ -123,7 +130,11 @@ func main() {
123130
// Fallback to NopLogger if initialization fails
124131
} else {
125132
logger.SetLogger(businessLogger)
126-
defer businessLogger.Close()
133+
defer func() {
134+
if err := businessLogger.Close(); err != nil {
135+
log.Printf("⚠️ Warning: Failed to close business logger: %v", err)
136+
}
137+
}()
127138
log.Println("✅ Business logger initialized (runtime logging ready)")
128139
}
129140

core/docs/docs.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -354,7 +354,7 @@ const docTemplate = `{
354354
// SwaggerInfo holds exported Swagger Info so clients can modify it
355355
var SwaggerInfo = &swag.Spec{
356356
Version: "1.0",
357-
Host: "localhost:8080",
357+
Host: "",
358358
BasePath: "/api",
359359
Schemes: []string{"http", "https"},
360360
Title: "AppRun API",

core/docs/swagger.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
},
1919
"version": "1.0"
2020
},
21-
"host": "localhost:8080",
2221
"basePath": "/api",
2322
"paths": {
2423
"/api/demo/i18n": {

core/docs/swagger.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,6 @@ definitions:
7676
success:
7777
type: boolean
7878
type: object
79-
host: localhost:8080
8079
info:
8180
contact:
8281
email: support@websoft9.com

core/ent/configitem_schema_test.go

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,11 @@ import (
1616
// TestConfigitem_UniqueKeyConstraint tests key unique constraint
1717
func TestConfigitem_UniqueKeyConstraint(t *testing.T) {
1818
client := enttest.Open(t, "sqlite3", "file:ent?mode=memory&cache=shared&_fk=1")
19-
defer client.Close()
19+
defer func() {
20+
if err := client.Close(); err != nil {
21+
t.Logf("Failed to close client: %v", err)
22+
}
23+
}()
2024

2125
ctx := context.Background()
2226

@@ -38,7 +42,11 @@ func TestConfigitem_UniqueKeyConstraint(t *testing.T) {
3842
// TestConfigitem_StatusEnum tests status enum validation
3943
func TestConfigitem_StatusEnum(t *testing.T) {
4044
client := enttest.Open(t, "sqlite3", "file:ent?mode=memory&cache=shared&_fk=1")
41-
defer client.Close()
45+
defer func() {
46+
if err := client.Close(); err != nil {
47+
t.Logf("Failed to close client: %v", err)
48+
}
49+
}()
4250

4351
ctx := context.Background()
4452

@@ -72,7 +80,11 @@ func TestConfigitem_StatusEnum(t *testing.T) {
7280
// TestConfigitem_AutoTimestamps tests created_at and updated_at
7381
func TestConfigitem_AutoTimestamps(t *testing.T) {
7482
client := enttest.Open(t, "sqlite3", "file:ent?mode=memory&cache=shared&_fk=1")
75-
defer client.Close()
83+
defer func() {
84+
if err := client.Close(); err != nil {
85+
t.Logf("Failed to close client: %v", err)
86+
}
87+
}()
7688

7789
ctx := context.Background()
7890
beforeCreate := time.Now()

core/go.mod

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,3 @@ require (
6767
golang.org/x/tools v0.40.0 // indirect
6868
gopkg.in/yaml.v3 v3.0.1 // indirect
6969
)
70-
71-
// Tool dependencies (installed via go install in Dockerfile.base)
72-
// - ariga.io/atlas/cmd/atlas@latest: Database migration tool (prebuilt in base image)

core/internal/middleware/language_test.go

Lines changed: 51 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -8,127 +8,148 @@ import (
88
"apprun/pkg/i18n"
99
)
1010

11+
const (
12+
testLangZhCN = "zh-CN"
13+
testLangEnUS = "en-US"
14+
)
15+
1116
func init() {
1217
// Initialize i18n for testing
13-
i18n.Init("en-US", []string{"en-US", "zh-CN"}, "")
18+
if err := i18n.Init("en-US", []string{"en-US", "zh-CN"}, ""); err != nil {
19+
panic("Failed to initialize i18n: " + err.Error())
20+
}
1421
}
1522

1623
func TestLanguageDetector_QueryParameter(t *testing.T) {
1724
handler := LanguageDetector()(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
1825
lang := i18n.GetLanguage(r.Context())
19-
w.Write([]byte(lang))
26+
if _, err := w.Write([]byte(lang)); err != nil {
27+
t.Errorf("Failed to write response: %v", err)
28+
}
2029
}))
2130

22-
req := httptest.NewRequest("GET", "/?lang=zh-CN", nil)
31+
req := httptest.NewRequest("GET", "/?lang="+testLangZhCN, nil)
2332
rec := httptest.NewRecorder()
2433
handler.ServeHTTP(rec, req)
2534

26-
if rec.Body.String() != "zh-CN" {
27-
t.Errorf("Expected 'zh-CN', got '%s'", rec.Body.String())
35+
if rec.Body.String() != testLangZhCN {
36+
t.Errorf("Expected '%s', got '%s'", testLangZhCN, rec.Body.String())
2837
}
2938
}
3039

3140
func TestLanguageDetector_Cookie(t *testing.T) {
3241
handler := LanguageDetector()(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
3342
lang := i18n.GetLanguage(r.Context())
34-
w.Write([]byte(lang))
43+
if _, err := w.Write([]byte(lang)); err != nil {
44+
t.Errorf("Failed to write response: %v", err)
45+
}
3546
}))
3647

3748
req := httptest.NewRequest("GET", "/", nil)
38-
req.AddCookie(&http.Cookie{Name: "lang", Value: "zh-CN"})
49+
req.AddCookie(&http.Cookie{Name: "lang", Value: testLangZhCN})
3950
rec := httptest.NewRecorder()
4051
handler.ServeHTTP(rec, req)
4152

42-
if rec.Body.String() != "zh-CN" {
43-
t.Errorf("Expected 'zh-CN', got '%s'", rec.Body.String())
53+
if rec.Body.String() != testLangZhCN {
54+
t.Errorf("Expected '%s', got '%s'", testLangZhCN, rec.Body.String())
4455
}
4556
}
4657

4758
func TestLanguageDetector_AcceptLanguageHeader(t *testing.T) {
4859
handler := LanguageDetector()(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
4960
lang := i18n.GetLanguage(r.Context())
50-
w.Write([]byte(lang))
61+
if _, err := w.Write([]byte(lang)); err != nil {
62+
t.Errorf("Failed to write response: %v", err)
63+
}
5164
}))
5265

5366
req := httptest.NewRequest("GET", "/", nil)
54-
req.Header.Set("Accept-Language", "zh-CN,en;q=0.9")
67+
req.Header.Set("Accept-Language", testLangZhCN+",en;q=0.9")
5568
rec := httptest.NewRecorder()
5669
handler.ServeHTTP(rec, req)
5770

58-
if rec.Body.String() != "zh-CN" {
59-
t.Errorf("Expected 'zh-CN', got '%s'", rec.Body.String())
71+
if rec.Body.String() != testLangZhCN {
72+
t.Errorf("Expected '%s', got '%s'", testLangZhCN, rec.Body.String())
6073
}
6174
}
6275

6376
func TestLanguageDetector_DefaultLanguage(t *testing.T) {
6477
handler := LanguageDetector()(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
6578
lang := i18n.GetLanguage(r.Context())
66-
w.Write([]byte(lang))
79+
if _, err := w.Write([]byte(lang)); err != nil {
80+
t.Errorf("Failed to write response: %v", err)
81+
}
6782
}))
6883

6984
req := httptest.NewRequest("GET", "/", nil)
7085
rec := httptest.NewRecorder()
7186
handler.ServeHTTP(rec, req)
7287

73-
if rec.Body.String() != "en-US" {
74-
t.Errorf("Expected 'en-US', got '%s'", rec.Body.String())
88+
if rec.Body.String() != testLangEnUS {
89+
t.Errorf("Expected '%s', got '%s'", testLangEnUS, rec.Body.String())
7590
}
7691
}
7792

7893
func TestLanguageDetector_UnsupportedLanguageFallback(t *testing.T) {
7994
handler := LanguageDetector()(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
8095
lang := i18n.GetLanguage(r.Context())
81-
w.Write([]byte(lang))
96+
if _, err := w.Write([]byte(lang)); err != nil {
97+
t.Errorf("Failed to write response: %v", err)
98+
}
8299
}))
83100

84101
req := httptest.NewRequest("GET", "/?lang=fr-FR", nil)
85102
rec := httptest.NewRecorder()
86103
handler.ServeHTTP(rec, req)
87104

88-
if rec.Body.String() != "en-US" {
89-
t.Errorf("Expected fallback to 'en-US', got '%s'", rec.Body.String())
105+
if rec.Body.String() != testLangEnUS {
106+
t.Errorf("Expected fallback to '%s', got '%s'", testLangEnUS, rec.Body.String())
90107
}
91108
}
92109

93110
func TestLanguageDetector_Priority(t *testing.T) {
94111
handler := LanguageDetector()(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
95112
lang := i18n.GetLanguage(r.Context())
96-
w.Write([]byte(lang))
113+
if _, err := w.Write([]byte(lang)); err != nil {
114+
t.Errorf("Failed to write response: %v", err)
115+
}
97116
}))
98117

99118
// Query parameter should override cookie and header
100-
req := httptest.NewRequest("GET", "/?lang=en-US", nil)
101-
req.AddCookie(&http.Cookie{Name: "lang", Value: "zh-CN"})
102-
req.Header.Set("Accept-Language", "zh-CN")
119+
req := httptest.NewRequest("GET", "/?lang="+testLangEnUS, nil)
120+
req.AddCookie(&http.Cookie{Name: "lang", Value: testLangZhCN})
121+
req.Header.Set("Accept-Language", testLangZhCN)
103122
rec := httptest.NewRecorder()
104123
handler.ServeHTTP(rec, req)
105124

106-
if rec.Body.String() != "en-US" {
107-
t.Errorf("Expected query param 'en-US', got '%s'", rec.Body.String())
125+
if rec.Body.String() != testLangEnUS {
126+
t.Errorf("Expected query param '%s', got '%s'", testLangEnUS, rec.Body.String())
108127
}
109128
}
110129

111130
func TestLanguageDetector_LanguageVariant(t *testing.T) {
112131
handler := LanguageDetector()(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
113132
lang := i18n.GetLanguage(r.Context())
114-
w.Write([]byte(lang))
133+
if _, err := w.Write([]byte(lang)); err != nil {
134+
t.Errorf("Failed to write response: %v", err)
135+
}
115136
}))
116137

117138
// Test "zh" should match to "zh-CN"
118139
req := httptest.NewRequest("GET", "/?lang=zh", nil)
119140
rec := httptest.NewRecorder()
120141
handler.ServeHTTP(rec, req)
121142

122-
if rec.Body.String() != "zh-CN" {
123-
t.Errorf("Expected 'zh' to match 'zh-CN', got '%s'", rec.Body.String())
143+
if rec.Body.String() != testLangZhCN {
144+
t.Errorf("Expected 'zh' to match '%s', got '%s'", testLangZhCN, rec.Body.String())
124145
}
125146

126147
// Test "en" should match to "en-US"
127148
req = httptest.NewRequest("GET", "/?lang=en", nil)
128149
rec = httptest.NewRecorder()
129150
handler.ServeHTTP(rec, req)
130151

131-
if rec.Body.String() != "en-US" {
132-
t.Errorf("Expected 'en' to match 'en-US', got '%s'", rec.Body.String())
152+
if rec.Body.String() != testLangEnUS {
153+
t.Errorf("Expected 'en' to match '%s', got '%s'", testLangEnUS, rec.Body.String())
133154
}
134155
}

core/locales/active.en-US.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Translation file
2-
# Last updated: 2026-01-06 15:47:42
2+
# Last updated: 2026-01-06 18:47:38
33

44
[common]
55
other = ""
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# Translation file
2+
# Last updated: 2026-01-06 15:47:42
3+
4+
[common]
5+
other = ""
6+
7+
[errors]
8+
other = ""
9+
10+
[success]
11+
other = ""
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# Translation file
2+
# Last updated: 2026-01-06 18:18:05
3+
4+
[common]
5+
other = ""
6+
7+
[errors]
8+
other = ""
9+
10+
[success]
11+
other = ""

0 commit comments

Comments
 (0)