func getServices(t *testing.T, assert *assert.Assertions, db neoutils.NeoConnection) (baseftrwapp.Service, baseftrwapp.Service, baseftrwapp.Service, baseftrwapp.Service, baseftrwapp.Service) { peopleRW := people.NewCypherPeopleService(db) assert.NoError(peopleRW.Initialise()) organisationRW := organisations.NewCypherOrganisationService(db) assert.NoError(organisationRW.Initialise()) membershipsRW := memberships.NewCypherMembershipService(db) assert.NoError(membershipsRW.Initialise()) rolesRW := roles.NewCypherDriver(db) assert.NoError(rolesRW.Initialise()) financialInstrumentsRW := financialinstruments.NewCypherFinancialInstrumentService(db) assert.NoError(financialInstrumentsRW.Initialise()) return peopleRW, organisationRW, membershipsRW, rolesRW, financialInstrumentsRW }
func main() { app := cli.App("roles-rw-neo4j", "A RESTful API for managing Membership Roles in neo4j") neoURL := app.String(cli.StringOpt{ Name: "neo-url", Value: "http://localhost:7474/db/data", Desc: "neo4j endpoint URL", EnvVar: "NEO_URL", }) graphiteTCPAddress := app.String(cli.StringOpt{ Name: "graphiteTCPAddress", Value: "", Desc: "Graphite TCP address, e.g. graphite.ft.com:2003. Leave as default if you do NOT want to output to graphite (e.g. if running locally", EnvVar: "GRAPHITE_ADDRESS", }) graphitePrefix := app.String(cli.StringOpt{ Name: "graphitePrefix", Value: "", Desc: "Prefix to use. Should start with content, include the environment, and the host name. e.g. coco.pre-prod.roles-rw-neo4j.1 or content.test.roles.rw.neo4j.ftaps58938-law1a-eu-t", EnvVar: "GRAPHITE_PREFIX", }) port := app.Int(cli.IntOpt{ Name: "port", Value: 8080, Desc: "Port to listen on", EnvVar: "APP_PORT", }) batchSize := app.Int(cli.IntOpt{ Name: "batchSize", Value: 1024, Desc: "Maximum number of statements to execute per batch", EnvVar: "BATCH_SIZE", }) logMetrics := app.Bool(cli.BoolOpt{ Name: "logMetrics", Value: false, Desc: "Whether to log metrics. Set to true if running locally and you want metrics output", EnvVar: "LOG_METRICS", }) env := app.String(cli.StringOpt{ Name: "env", Value: "local", Desc: "environment this app is running in", }) app.Action = func() { conf := neoutils.DefaultConnectionConfig() conf.BatchSize = *batchSize db, err := neoutils.Connect(*neoURL, conf) if err != nil { log.Errorf("Could not connect to neo4j, error=[%s]\n", err) } rolesDriver := roles.NewCypherDriver(db) rolesDriver.Initialise() baseftrwapp.OutputMetricsIfRequired(*graphiteTCPAddress, *graphitePrefix, *logMetrics) services := map[string]baseftrwapp.Service{ "roles": rolesDriver, } var checks []v1a.Check for _, service := range services { checks = append(checks, makeCheck(service, db)) } baseftrwapp.RunServerWithConf(baseftrwapp.RWConf{ Services: services, HealthHandler: v1a.Handler("ft-roles_rw_neo4j ServiceModule", "Writes 'roles' to Neo4j, usually as part of a bulk upload done on a schedule", checks...), Port: *port, ServiceName: "roles-rw-neo4j", Env: *env, EnableReqLog: false, }) } log.SetLevel(log.InfoLevel) log.Infof("Application started with args %s", os.Args) app.Run(os.Args) }