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  }