github.com/grokify/go-ringcentral-client@v0.3.31/codegen/specs-engagevoice_v3.0.0/convert/schemas/schema_CampaignLeadSearchCriteria.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "io/ioutil" 6 "strings" 7 8 oas3 "github.com/getkin/kin-openapi/openapi3" 9 "github.com/grokify/mogo/fmt/fmtutil" 10 "github.com/grokify/spectrum/openapi3" 11 "github.com/grokify/spectrum/openapi3/springopenapi3" 12 "github.com/rs/zerolog/log" 13 ) 14 15 type SchemaInfo struct { 16 Name string 17 JavaCode string 18 ExplicitCustomTypes []string 19 Notes string 20 } 21 22 var infos = map[string]SchemaInfo{ 23 "CampaignLeadSearchCriteria": { 24 Name: "CampaignLeadSearchCriteria", 25 ExplicitCustomTypes: []string{ 26 "ComparableSearchField", 27 "DateTimeComparableSearchField", 28 "SuppressedType", 29 "Timezone"}, 30 JavaCode: `private List<Integer> leadIds = new ArrayList<>(); 31 private List<Integer> listIds = new ArrayList<>(); 32 private List<String> externIds = new ArrayList<>(); 33 private List<String> physicalStates; 34 private List<String> agentDispositions; 35 private List<String> leadPhoneNumbers = new ArrayList<>(); 36 private boolean orphanedLeadsOnly; 37 private String callerId; 38 private String leadPhoneNum; 39 private List<Integer> campaignIds = new ArrayList<>(); 40 private String firstName; 41 private String lastName; 42 private String address1; 43 private String address2; 44 private String city; 45 private String zip; 46 private String emailAddress; 47 private String auxData1; 48 private String auxData2; 49 private String auxData3; 50 private String auxData4; 51 private String auxData5; 52 private Integer pendingAgentId; 53 private Integer agentId; 54 private DateTime loadedDtsStart; 55 private DateTime loadedDtsEnd; 56 private List<Timezone> leadTimezones; 57 private DateTimeComparableSearchField nextDialTimeCriteria; 58 private DateTimeComparableSearchField lastPassTimeCriteria; 59 private ComparableSearchField leadPassesCriteria; 60 `, 61 }, 62 "CampaignLeadSearchResultsView": { 63 Name: "CampaignLeadSearchResultsView", 64 ExplicitCustomTypes: []string{"CampaignLead"}, 65 JavaCode: ` 66 private Integer leadId; 67 private Integer dialGroupId; 68 private Integer campaignId; 69 private String campaignName; 70 private String pendingAgentName; 71 private String lastPassDisposition; 72 private String lastPassAgentName; 73 private String listDesc; 74 private Integer listId; 75 private String uploadedBy; 76 77 DateTime loadedDts; 78 private DateTime lastPassDate; 79 DateTime lastPassDts; 80 DateTime nextDialTime; 81 DateTime stateDts; 82 private DateTime uploadDate; 83 84 private CampaignLead campaignLead; 85 86 Long leadId; 87 String id; 88 String name; 89 90 String lastPassDispo; 91 String agentDispostion; 92 93 String address1; 94 String address2; 95 String auxData1; 96 String auxData2; 97 String auxData3; 98 String auxData4; 99 String auxData5; 100 101 String auxExternalUrl; 102 String auxGreeting; 103 String auxPhone; 104 105 String callerId; 106 String city; 107 Long dupeKeyOverride; 108 String email; 109 String externId; 110 String extraData; 111 String firstName; 112 String gateKeeper; 113 String lastName; 114 Integer leadPasses; 115 String leadPhone; 116 String leadState; 117 String leadTimezone; 118 119 String liveAnswerMessage; 120 String machAnswerMessage; 121 Integer maxPasses; 122 String midName; 123 124 String sortCol; 125 126 String state; 127 String suffix; 128 String title; 129 String zip; 130 Boolean suppressed; 131 132 Integer speedToLeadAgentConn; 133 Integer speedToLeadFirstPass; 134 `, 135 }, 136 "CampaignLead": SchemaInfo{ 137 Name: "CampaignLead", 138 Notes: "No `leadPriority` (null). campaign (null), campaignRedials (null),quotaTargets (empty array), quotaTargetIds (empty array)", 139 JavaCode: ` 140 Long leadId; 141 Long id; 142 String name; 143 144 String lastPassDispo; 145 String agentDispostion; 146 147 String address1; 148 String address2; 149 String auxData1; 150 String auxData2; 151 String auxData3; 152 String auxData4; 153 String auxData5; 154 155 String auxExternalUrl; 156 String auxGreeting; 157 String auxPhone; 158 159 String callerId; 160 String city; 161 Long dupeKeyOverride; 162 String email; 163 String externId; 164 String extraData; 165 String firstName; 166 String gateKeeper; 167 String lastName; 168 Integer leadPasses; 169 String leadPhone; 170 String leadState; 171 String leadTimezone; 172 173 String liveAnswerMessage; 174 String machAnswerMessage; 175 Integer maxPasses; 176 String midName; 177 178 String sortCol; 179 180 String state; 181 String suffix; 182 String title; 183 String zip; 184 Boolean suppressed; 185 186 Integer speedToLeadAgentConn; 187 Integer speedToLeadFirstPass; 188 189 DateTime loadedDts; 190 DateTime nextDialTime; 191 `, 192 }, 193 } 194 195 func ProcInfo(schemaInfo SchemaInfo) { 196 lines := strings.Split(schemaInfo.JavaCode, "\n") 197 for i, line := range lines { 198 lines[i] = strings.TrimSpace(line) 199 } 200 fmtutil.PrintJSON(lines) 201 202 mss, err := springopenapi3.ParseSpringLinesToMapStringSchemaRefs( 203 lines, schemaInfo.ExplicitCustomTypes) 204 if err != nil { 205 log.Info().Msg("S1") 206 log.Fatal().Err(err) 207 } 208 fmtutil.PrintJSON(mss) 209 210 oas := openapi3.Spec{ 211 Components: &oas3.Components{ 212 Schemas: map[string]*oas3.SchemaRef{ 213 schemaInfo.Name: { 214 Value: &oas3.Schema{ 215 Type: openapi3.NewTypesRef(openapi3.TypeObject), 216 Properties: mss, 217 }, 218 }, 219 }, 220 }, 221 } 222 joas, err := oas.MarshalJSON() 223 if err != nil { 224 log.Fatal().Err(err) 225 } 226 227 file := "openapi-spec_schema_" + schemaInfo.Name + ".json" 228 err = ioutil.WriteFile(file, joas, 0644) 229 if err != nil { 230 log.Fatal().Err(err) 231 } 232 fmt.Printf("WROTE [%v]\n", file) 233 234 } 235 236 func main() { 237 for _, info := range infos { 238 ProcInfo(info) 239 } 240 241 fmt.Println("DONE") 242 }