Simple News service in Go. Integrates with Google news api – https://newsapi.org/
Uses cassandra as storage layer and Go for backend. Docker deployable.
cassandra cluster
Docker deploy
How to create cassandra cluster in docker
Refer to – https://medium.com/@jayarajjg/setting-up-a-cassandra-cluster-on-your-laptop-using-docker-cf09b1bb651e
Assuming docker installed and cassandra image pulled.
NOTE : I have cassandra 3.11
Commands
Create one node – Exposed on port 9042
docker run -p 9042:9042 –name my-cassandra-1 -m 2g -d bitnami/cassandra
Check the IP
docker inspect –format='{{ .NetworkSettings.IPAddress }}’ my-cassandra-1
Create another node and link to prev node – Exposed on port 9043
docker run -p 9043:9042 –name my-cassandra-2 -m 2g -d -e CASSANDRA_SEEDS=”$(docker inspect –format='{{ .NetworkSettings.IPAddress }}’ my-cassandra-1)” bitnami/cassandra
To use cassandra via client cqlsh
docker run -it –link my-cassandra-1 –rm bitnami/cassandra bash -c ‘exec cqlsh <>’
To check cassandra node status
docker exec -i -t my-cassandra-1 bash -c ‘nodetool status’
DB schema
Create keyspace “godemo”
CREATE KEYSPACE “godemo” with replication = {‘class’ : ‘SimpleStrategy’, ‘replication_factor’ : 3};
Use godemo
Create table
create table user (uid int, name text, t_un text, chat_id int, primary key(uid, t_un));
create table news_by_source (sid varchar, title_hash text, created_at timeuuid, sname varchar, sdesc text, surl text, scategory varchar, slang varchar, scountry varchar, nauthor varchar, ntitle text, ndesc text, nurl text, nurl_to_image text, npublished_at varchar, ncontent text, primary key ((sid), title_hash));
CREATE TABLE news_sources (sid text, created_at timeuuid, scategory text, scountry text, sdesc text, slang text, sname text, surl text, PRIMARY KEY (scountry, sid));
Insert data
insert into user(uid, name, t_un) values (1367340022, ‘Prateek Gupta’, ‘Prtkgpt’);
For running in your system, update the ip in cas.go file to your system ip via ifconfig.
Data load mechanism
https://stackoverflow.com/questions/40443617/init-script-for-cassandra-with-docker-compose
Docker commands
docker-compose up –build
Debug the docker image
docker run -it –rm –entrypoint sh
works
Telegram bot
Poll for update
https://api.telegram.org/bot1853514787:AAHEi4brq8vXE39sYIqPTfFzfYNPvDDWmY0/getUpdates
Webhook
Set – https://api.telegram.org/bot{bot_token}/setWebhook?url={your_server_url}
Delete – https://api.telegram.org/bot{bot_token}/deleteWebhook
Send msg to user
https://api.telegram.org/bot{bot_token}/sendMessage?chat_id={chat_id}&text={text}
Leave a Reply