Pick a blog/news site to catch up on so you don't feel like you need to read everything on the internet
CGO_ENABLED=0 go build -ldflags="-X 'main.Version=`cat VERSION.txt`' -X 'main.Commit=`git rev-parse HEAD`'" -o ./app cmd/server/main.go
- Implement Postgres store for UserStorer
- Implement Postgres store for MediumSourceStorer
- Implement MediumSourcePicker
- On schedule get all the sites concurrently
- Log the failures
- Log the success and hash the body of the site
- Update the hashes of the sites
- Order by Hit desc
- Find the n number of records that were recently changed (based on modified date)
- Display the n records that are chosen
- Update the n records Hit count
Method |
Endpoint |
Query |
Request Body |
Reponse Body |
Success Code |
Failures |
Description |
POST |
/v1/user |
- |
{"username": string} |
{"userId": "string"} |
201 |
400 409 |
Create account |
PUT |
/v1/user/login |
- |
{"username": string} |
{"userId": "string"} |
200 |
400 404 |
Login |
POST |
/v1/user/{userID}/medium |
- |
{"source": string} |
- |
204 |
404 409 |
Add a new medium source |
GET |
/v1/user/{userID}/medium |
p=int |
- |
[{"source": string, "Id": string, "nextPage": int}] |
200 |
400 |
Get all the sources (paginated) |
DELETE |
/v1/user/{userID}/medium/{Id} |
- |
- |
- |
204 |
404 |
Delete a medium source |
GET |
/v1/user/{userID}/medium/pick |
c=int |
- |
[{"url": "string", "Id": string}] |
200 |
400 404 |
Get c medium urls to read |
Name |
Type |
Description |
URL |
string |
The URL to the site. It's the primary key |
ID |
string |
A UUID |
Hash |
string |
The hash of the webpage |
Multiplier |
float |
Increase the chance of it being picked |
CreatedDate |
date |
When the record was created |
ModifiedDate |
date |
When the record was modified |
Hit |
int |
Number of times this record was picked |
UserId |
string |
The user token this is associated with |
Name |
Type |
Description |
Email |
string |
The user's email address |
UserId |
string |
A UUID. It's the primary key |
CreatedDate |
date |
When the record was created |
ModifiedDate |
date |
When the record was updated |