Code
- Create project in GitHub and local
- Add basic README
- Create GitHub Project
- Enable Golang VSCode Extension for the project in local
- Initialize Golang Module with
go mod init
- Add a basic
main.go
for the CLI tool - Setup Timescale DB in local using
docker
ordocker-compose
- Create user stories / story cards as GitHub issues for different tasks / work
- Add
Makefile
to ease dev tasks like running tests, building tool etc - Add
.gitignore
to ignore distribution directory containing tool binary
Library usage
- Library for Postgres Client / Driver in Golang to execute SQL queries against a Postgres Database Server, as Timescale is a Postgres Extension that runs on Postgres Database Server
- Library for running integration tests against databases easily - eg testcontainers golang library - https://github.com/testcontainers/testcontainers-go - to run databases on containers on-demand and use it for tests
- Library for testing - assertions, mocks etc - edg - https://github.com/stretchr/testify
- Library for CLI framework. If we really need complex features. If we just need flags, maybe don't go for this. Eg - https://github.com/urfave/cli , https://github.com/spf13/cobra
Learning
- Learn about time series data and databases and the different functions that people
- Learn how Timescale DB works on top of Postgres
- Learn what hypertables are
Ideas
- Use Timescale DB to store benchmarking data to get min, max, average query time etc
- Use CodeTour VSCode Extension to do a code walkthrough once the codebase is ready and good? 😄