func main() { app := cli.App("people-api-neo", "A RESTful API for managing People in neo4j") neoURL := app.StringOpt("neo-url", "http://localhost:7474/db/data", "neo4j endpoint URL") port := app.IntOpt("port", 8080, "Port to listen on") batchSize := app.IntOpt("batchSize", 1024, "Maximum number of statements to execute per batch") graphiteTCPAddress := app.StringOpt("graphiteTCPAddress", "", "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)") graphitePrefix := app.StringOpt("graphitePrefix", "", "Prefix to use. Should start with content, include the environment, and the host name. e.g. content.test.people.rw.neo4j.ftaps58938-law1a-eu-t") logMetrics := app.BoolOpt("logMetrics", false, "Whether to log metrics. Set to true if running locally and you want metrics output") app.Action = func() { db, err := neoism.Connect(*neoURL) if err != nil { log.Fatal(err) } batchRunner := neoutils.NewBatchCypherRunner(neoutils.StringerDb{db}, *batchSize) peopleDriver := people.NewCypherPeopleService(batchRunner, db) peopleDriver.Initialise() baseftrwapp.OutputMetricsIfRequired(*graphiteTCPAddress, *graphitePrefix, *logMetrics) engs := map[string]baseftrwapp.Service{ "people": peopleDriver, } var checks []v1a.Check for _, e := range engs { checks = append(checks, makeCheck(e, batchRunner)) } baseftrwapp.RunServer(engs, v1a.Handler("ft-people_rw_neo4j ServiceModule", "Writes 'people' to Neo4j, usually as part of a bulk upload done on a schedule", checks...), *port, "ft-people_rw_neo4j", "local") } app.Run(os.Args) }
func main() { app := cli.App("subjetcs-rw-neo4j", "A RESTful API for managing Subjects 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: "graphite-tcp-address", 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_TCP_ADDRESS", }) graphitePrefix := app.String(cli.StringOpt{ Name: "graphite-prefix", Value: "", Desc: "Prefix to use. Should start with content, include the environment, and the host name. e.g. coco.pre-prod.subjects-rw-neo4j.1", EnvVar: "GRAPHITE_PREFIX", }) port := app.Int(cli.IntOpt{ Name: "port", Value: 8080, Desc: "Port to listen on", EnvVar: "PORT", }) batchSize := app.Int(cli.IntOpt{ Name: "batch-size", Value: 1024, Desc: "Maximum number of statements to execute per batch", EnvVar: "BATCH_SIZE", }) logMetrics := app.Bool(cli.BoolOpt{ Name: "log-metrics", Value: false, Desc: "Whether to log metrics. Set to true if running locally and you want metrics output", EnvVar: "LOG_METRICS", }) 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) } subjectsDriver := subjects.NewCypherSubjectsService(db) subjectsDriver.Initialise() baseftrwapp.OutputMetricsIfRequired(*graphiteTCPAddress, *graphitePrefix, *logMetrics) endpoints := map[string]baseftrwapp.Service{ "subjects": subjectsDriver, } var checks []v1a.Check for _, e := range endpoints { checks = append(checks, makeCheck(e, db)) } baseftrwapp.RunServer(endpoints, v1a.Handler("ft-subjects_rw_neo4j ServiceModule", "Writes 'subjects' to Neo4j, usually as part of a bulk upload done on a schedule", checks...), *port, "subjects-rw-neo4j", "local") } app.Run(os.Args) }