Line data Source code
1 : // Package skill は ユーザーのスキルに関するユースケース(アプリケーションロジック)を提供します
2 : package skill
3 :
4 : import (
5 : "resume/internal/domain/entity"
6 : "resume/internal/shared/util"
7 : )
8 :
9 0 : func resolveSkillCategoryKey(skillCategoryID *uint64) string {
10 0 : if skillCategoryID == nil {
11 0 : return ""
12 0 : }
13 0 : switch *skillCategoryID {
14 0 : case entity.SkillCategoryProgrammingLanguageID:
15 0 : return util.ToCamel("master.skill_category." + entity.SkillCategoryProgrammingLanguageCode)
16 0 : case entity.SkillCategoryScriptingLanguageID:
17 0 : return util.ToCamel("master.skill_category." + entity.SkillCategoryScriptingLanguageCode)
18 0 : case entity.SkillCategoryFrameworkID:
19 0 : return util.ToCamel("master.skill_category." + entity.SkillCategoryFrameworkCode)
20 0 : case entity.SkillCategoryLibraryID:
21 0 : return util.ToCamel("master.skill_category." + entity.SkillCategoryLibraryCode)
22 0 : case entity.SkillCategoryRuntimeID:
23 0 : return util.ToCamel("master.skill_category." + entity.SkillCategoryRuntimeCode)
24 0 : case entity.SkillCategoryAPIDesignID:
25 0 : return util.ToCamel("master.skill_category." + entity.SkillCategoryAPIDesignCode)
26 0 : case entity.SkillCategoryAuthenticationAuthorizationID:
27 0 : return util.ToCamel("master.skill_category." + entity.SkillCategoryAuthenticationAuthorizationCode)
28 0 : case entity.SkillCategoryFrontendID:
29 0 : return util.ToCamel("master.skill_category." + entity.SkillCategoryFrontendCode)
30 0 : case entity.SkillCategoryBackendID:
31 0 : return util.ToCamel("master.skill_category." + entity.SkillCategoryBackendCode)
32 0 : case entity.SkillCategoryMobileApplicationID:
33 0 : return util.ToCamel("master.skill_category." + entity.SkillCategoryMobileApplicationCode)
34 0 : case entity.SkillCategoryUIDesignID:
35 0 : return util.ToCamel("master.skill_category." + entity.SkillCategoryUIDesignCode)
36 0 : case entity.SkillCategoryUxDesignID:
37 0 : return util.ToCamel("master.skill_category." + entity.SkillCategoryUxDesignCode)
38 0 : case entity.SkillCategoryStateManagementID:
39 0 : return util.ToCamel("master.skill_category." + entity.SkillCategoryStateManagementCode)
40 0 : case entity.SkillCategoryBuildToolID:
41 0 : return util.ToCamel("master.skill_category." + entity.SkillCategoryBuildToolCode)
42 0 : case entity.SkillCategoryApplicationTestingID:
43 0 : return util.ToCamel("master.skill_category." + entity.SkillCategoryApplicationTestingCode)
44 0 : case entity.SkillCategoryPerformanceOptimizationID:
45 0 : return util.ToCamel("master.skill_category." + entity.SkillCategoryPerformanceOptimizationCode)
46 0 : case entity.SkillCategoryAccessibilityID:
47 0 : return util.ToCamel("master.skill_category." + entity.SkillCategoryAccessibilityCode)
48 0 : case entity.SkillCategoryOperatingSystemID:
49 0 : return util.ToCamel("master.skill_category." + entity.SkillCategoryOperatingSystemCode)
50 0 : case entity.SkillCategoryMiddlewareID:
51 0 : return util.ToCamel("master.skill_category." + entity.SkillCategoryMiddlewareCode)
52 0 : case entity.SkillCategoryDatabaseID:
53 0 : return util.ToCamel("master.skill_category." + entity.SkillCategoryDatabaseCode)
54 0 : case entity.SkillCategoryCacheID:
55 0 : return util.ToCamel("master.skill_category." + entity.SkillCategoryCacheCode)
56 0 : case entity.SkillCategoryMessagingID:
57 0 : return util.ToCamel("master.skill_category." + entity.SkillCategoryMessagingCode)
58 0 : case entity.SkillCategoryNetworkID:
59 0 : return util.ToCamel("master.skill_category." + entity.SkillCategoryNetworkCode)
60 0 : case entity.SkillCategoryVirtualizationID:
61 0 : return util.ToCamel("master.skill_category." + entity.SkillCategoryVirtualizationCode)
62 0 : case entity.SkillCategoryContainerID:
63 0 : return util.ToCamel("master.skill_category." + entity.SkillCategoryContainerCode)
64 0 : case entity.SkillCategoryContainerOrchestrationID:
65 0 : return util.ToCamel("master.skill_category." + entity.SkillCategoryContainerOrchestrationCode)
66 0 : case entity.SkillCategoryCloudID:
67 0 : return util.ToCamel("master.skill_category." + entity.SkillCategoryCloudCode)
68 0 : case entity.SkillCategoryInfrastructureAsCodeID:
69 0 : return util.ToCamel("master.skill_category." + entity.SkillCategoryInfrastructureAsCodeCode)
70 0 : case entity.SkillCategoryCiCdID:
71 0 : return util.ToCamel("master.skill_category." + entity.SkillCategoryCiCdCode)
72 0 : case entity.SkillCategoryMonitoringID:
73 0 : return util.ToCamel("master.skill_category." + entity.SkillCategoryMonitoringCode)
74 0 : case entity.SkillCategoryLoggingID:
75 0 : return util.ToCamel("master.skill_category." + entity.SkillCategoryLoggingCode)
76 0 : case entity.SkillCategorySecurityID:
77 0 : return util.ToCamel("master.skill_category." + entity.SkillCategorySecurityCode)
78 0 : case entity.SkillCategoryAvailabilityDesignID:
79 0 : return util.ToCamel("master.skill_category." + entity.SkillCategoryAvailabilityDesignCode)
80 0 : case entity.SkillCategoryAutomationID:
81 0 : return util.ToCamel("master.skill_category." + entity.SkillCategoryAutomationCode)
82 0 : case entity.SkillCategoryDataPlatformID:
83 0 : return util.ToCamel("master.skill_category." + entity.SkillCategoryDataPlatformCode)
84 0 : case entity.SkillCategoryDataModelingID:
85 0 : return util.ToCamel("master.skill_category." + entity.SkillCategoryDataModelingCode)
86 0 : case entity.SkillCategoryDataAnalysisID:
87 0 : return util.ToCamel("master.skill_category." + entity.SkillCategoryDataAnalysisCode)
88 0 : case entity.SkillCategoryDataVisualizationID:
89 0 : return util.ToCamel("master.skill_category." + entity.SkillCategoryDataVisualizationCode)
90 0 : case entity.SkillCategoryDataWarehouseID:
91 0 : return util.ToCamel("master.skill_category." + entity.SkillCategoryDataWarehouseCode)
92 0 : case entity.SkillCategoryEtlEltID:
93 0 : return util.ToCamel("master.skill_category." + entity.SkillCategoryEtlEltCode)
94 0 : case entity.SkillCategoryStreamProcessingID:
95 0 : return util.ToCamel("master.skill_category." + entity.SkillCategoryStreamProcessingCode)
96 0 : case entity.SkillCategoryBusinessIntelligenceID:
97 0 : return util.ToCamel("master.skill_category." + entity.SkillCategoryBusinessIntelligenceCode)
98 0 : case entity.SkillCategoryMachineLearningID:
99 0 : return util.ToCamel("master.skill_category." + entity.SkillCategoryMachineLearningCode)
100 0 : case entity.SkillCategoryMlopsID:
101 0 : return util.ToCamel("master.skill_category." + entity.SkillCategoryMlopsCode)
102 0 : case entity.SkillCategorySystemArchitectureID:
103 0 : return util.ToCamel("master.skill_category." + entity.SkillCategorySystemArchitectureCode)
104 0 : case entity.SkillCategoryMicroservicesID:
105 0 : return util.ToCamel("master.skill_category." + entity.SkillCategoryMicroservicesCode)
106 0 : case entity.SkillCategoryDistributedSystemID:
107 0 : return util.ToCamel("master.skill_category." + entity.SkillCategoryDistributedSystemCode)
108 0 : case entity.SkillCategoryNonFunctionalRequirementsID:
109 0 : return util.ToCamel("master.skill_category." + entity.SkillCategoryNonFunctionalRequirementsCode)
110 0 : case entity.SkillCategoryBlockchainID:
111 0 : return util.ToCamel("master.skill_category." + entity.SkillCategoryBlockchainCode)
112 0 : case entity.SkillCategorySmartContractID:
113 0 : return util.ToCamel("master.skill_category." + entity.SkillCategorySmartContractCode)
114 0 : default:
115 0 : return ""
116 : }
117 : }
118 :
119 0 : func resolveSkillLevelKey(skillLevelID *uint64) string {
120 0 : if skillLevelID == nil {
121 0 : return ""
122 0 : }
123 0 : switch *skillLevelID {
124 0 : case entity.SkillLevelAwareID:
125 0 : return util.ToCamel("master.skill_level." + entity.SkillLevelAwareCode + ".label")
126 0 : case entity.SkillLevelPractitionerID:
127 0 : return util.ToCamel("master.skill_level." + entity.SkillLevelPractitionerCode + ".label")
128 0 : case entity.SkillLevelProficientID:
129 0 : return util.ToCamel("master.skill_level." + entity.SkillLevelProficientCode + ".label")
130 0 : case entity.SkillLevelLeadID:
131 0 : return util.ToCamel("master.skill_level." + entity.SkillLevelLeadCode + ".label")
132 0 : case entity.SkillLevelExpertID:
133 0 : return util.ToCamel("master.skill_level." + entity.SkillLevelExpertCode + ".label")
134 0 : default:
135 0 : return ""
136 : }
137 : }
138 :
139 0 : func resolveExperience(experienceID *uint64) string {
140 0 : if experienceID == nil {
141 0 : return ""
142 0 : }
143 0 : switch *experienceID {
144 0 : case entity.ExperienceLt6mID:
145 0 : return util.ToCamel("master.experience." + entity.ExperienceCodeLt6m)
146 0 : case entity.Experience6m1yID:
147 0 : return util.ToCamel("master.experience." + entity.ExperienceCode6m1y)
148 0 : case entity.Experience1y3yID:
149 0 : return util.ToCamel("master.experience." + entity.ExperienceCode1y3y)
150 0 : case entity.Experience3y5yID:
151 0 : return util.ToCamel("master.experience." + entity.ExperienceCode3y5y)
152 0 : case entity.Experience5y10yID:
153 0 : return util.ToCamel("master.experience." + entity.ExperienceCode5y10y)
154 0 : case entity.ExperienceGte10yID:
155 0 : return util.ToCamel("master.experience." + entity.ExperienceCodeGte10y)
156 0 : default:
157 0 : return ""
158 : }
159 : }
160 :
161 : // ToUserSkillOutput は UserSkill エンティティを UserSkillOutput DTO に変換します
162 0 : func ToUserSkillOutput(s *entity.UserSkill) UserSkillOutput {
163 0 : return UserSkillOutput{
164 0 : ID: s.ID,
165 0 : UserID: s.UserID,
166 0 : SkillCategoryID: s.SkillCategoryID,
167 0 : SkillCategoryKey: resolveSkillCategoryKey(&s.SkillCategoryID),
168 0 : SkillLevelID: s.SkillLevelID,
169 0 : SkillLevelKey: resolveSkillLevelKey(&s.SkillLevelID),
170 0 : ExperienceID: s.ExperienceID,
171 0 : ExperienceKey: resolveExperience(&s.ExperienceID),
172 0 : SkillName: s.SkillName,
173 0 : SkillNameNorm: s.SkillNameNorm,
174 0 : Evidence: s.Evidence,
175 0 : SortOrder: s.SortOrder,
176 0 : CreatedAt: s.CreatedAt.Format("2006-01-02 15:04:05"),
177 0 : UpdatedAt: s.UpdatedAt.Format("2006-01-02 15:04:05"),
178 0 : DeletedAt: func() string {
179 0 : if s.DeletedAt.Valid {
180 0 : return s.DeletedAt.Time.Format("2006-01-02 15:04:05")
181 0 : }
182 0 : return ""
183 : }(),
184 : }
185 : }
186 :
187 : // ToListUserSkillOutput は UserSkill エンティティのスライスを ListUserSkillOutput DTO に変換します
188 0 : func ToListUserSkillOutput(items []*entity.UserSkill, total int64) ListUserSkillOutput {
189 0 : res := make([]UserSkillOutput, len(items))
190 0 : for i, item := range items {
191 0 : res[i] = ToUserSkillOutput(item)
192 0 : }
193 0 : return ListUserSkillOutput{
194 0 : Items: res,
195 0 : Total: total,
196 0 : }
197 : }
198 :
199 : // ToSuggestUserSkillOutput は SuggestUserSkill を SuggestUserSkillOutput に変換します
200 0 : func ToSuggestUserSkillOutput(r *entity.SuggestUserSkill) SuggestUserSkillOutput {
201 0 : return SuggestUserSkillOutput{
202 0 : SkillName: r.Text,
203 0 : SkillNameNorm: r.TextNorm,
204 0 : Count: r.Count,
205 0 : IsDeletedOnly: r.ActiveCnt == 0 && r.DeletedCnt > 0,
206 0 : }
207 0 : }
208 :
209 : // ToListSuggestSkillOutput は SuggestUserSkill のスライスを ListSuggestSkillOutput に変換します
210 0 : func ToListSuggestSkillOutput(rows []*entity.SuggestUserSkill) ListSuggestSkillOutput {
211 0 : items := make([]SuggestUserSkillOutput, len(rows))
212 0 : for i, r := range rows {
213 0 : items[i] = ToSuggestUserSkillOutput(r)
214 0 : }
215 0 : return ListSuggestSkillOutput{
216 0 : Items: items,
217 0 : }
218 : }
219 :
220 : // ToHasUserSkillOutput は HasUserSkillOutput DTO に変換します
221 0 : func ToHasUserSkillOutput(exists bool) HasUserSkillOutput {
222 0 : return HasUserSkillOutput{
223 0 : Exists: exists,
224 0 : }
225 0 : }
|