package dto import "git.yeij.top/AskaEth/Scoreboard/server/internal/domain" // Team 是 GET /api/teams 与 snapshot.teams 的线上结构。 // // 与 REST 的 teamDTO 逐字段对齐:可空列必须是显式 null,不能靠 domain 的 // omitempty 把空串省成字段缺失,否则前端解析同一份契约会拿到两种形状。 type Team struct { ID int64 `json:"id"` Code string `json:"code"` Name string `json:"name"` ShortName *string `json:"shortName"` LogoPath *string `json:"logoPath"` Color *string `json:"color"` SortOrder int `json:"sortOrder"` Active bool `json:"active"` } // TeamFromDomain 把领域单位转换成线上结构。 func TeamFromDomain(t domain.Team) Team { return Team{ ID: t.ID, Code: t.Code, Name: t.Name, ShortName: nilIfEmpty(t.ShortName), LogoPath: nilIfEmpty(t.LogoPath), Color: nilIfEmpty(t.Color), SortOrder: t.SortOrder, Active: t.Active, } } // TeamsFromDomain 批量转换单位;空输入返回空切片,序列化为 [] 而不是 null。 func TeamsFromDomain(ts []domain.Team) []Team { out := make([]Team, 0, len(ts)) for _, t := range ts { out = append(out, TeamFromDomain(t)) } return out }