This directory contains a basic example of Thunder. The code is organized as follows:
- All server code can be found in the
main.go file.
- The
db/ directory contains MySQL schema and configuration files.
- The
client/ directory contains a JavaScript client.
Dependencies
This example requires Docker, Go,
and Node.
Running the database
To start the database, run docker-compose -f db/docker-compose.yml up to
start a MySQL server on port 3307, properly configured for use with Thunder.
Then, install migrate using:
$ go get -u -d github.com/golang-migrate/migrate/cli github.com/lib/pq
$ go build -tags 'mysql' -o /usr/local/bin/migrate github.com/golang-migrate/migrate/cli
If you encounter any errors such as cannot find package "github.com/go-sql-driver/mysql",
you will need to go get each of the packages e.g. go get github.com/go-sql-driver/mysql.
Then run the following to set-up the database's schema:
migrate -database 'mysql://root:@tcp(127.0.0.1:3307)/chat' -path ./db/migrations up
Now you can access the database with mysql -h 127.0.0.1 --port=3307 -uroot chat. Try inserting a new message by running
INSERT INTO messages (text) VALUES ("Hello, world!");
Running the server
To run the server, first install the server's dependencies using
go get ..
Then, run go run main.go to start the server.
Running the client
To run the client, first install the client's dependencies using npm install.
Then, run npm run start to start the client. You can access the basic client
by going to http://localhost:3000. To run your own queries, access the
GraphiQL client at http://localhost:3000/graphiql. One example GraphQL query
to fetch all messages is as follows:
{
messages {
id
text
}
}