Skip to content

📰 readme as a (graphql) function

License

Notifications You must be signed in to change notification settings

webkom/readme-as-a-function

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

54 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

readme-as-a-function

Go Report Card Build Status

Graphql api as a function, runs in openfaas.

Allows you to fetch the n last readmes. Also possible to filter based on year and issue number.

Storage format

The readmes are stored in a bucket in the following format:

# The bucket has two top-level directories:
/images/
# and
/pdf/

# Both these folders follow the schema <year>/<year>-<edition>.<ext>
# So we have the following folders:
/pdf/1994/
/pdf/1995/
#...
/pdf/2020/
# The same goes for images
/images/2020/

# In all the year folders, the pdfs and images are stored:
/pdf/1994/1994-01.pdf
/pdf/1994/1994-02.pdf
# ...and so on
# Again images must follow the same schema
/images/1994/1994-01.jpg

If the bucket does not follow this schema, the api will not give the correct results!

Note also that we do not check the file extension. It's assumed that all files in /pdf/ are .pdf. The api creates a link based on the file, so any files will resolve. For images, any valid file format works, so jpg, png, gif, whatever.

Running on https://readme-as-a-function.abakus.no

To run locally

$ # Simple usage
$ go run main.go <<<  '{"query":"{latestReadme{ title }}"}' | jq
$ # As webserver at http://localhost:8000
$ go run pkg/webserver/main.go

API schema

schema {
  query: Query
}
type Query {
  # Get a list of readmes
  readmeUtgaver(
    # Filter by year
    year: Int
    # filter by issue number, 1 to 6
    utgave: Int
    # Get the first _n_ issues/utgaver
    first: Int
  ): [ReadmeUtgave!]!
  # Get the latest readme
  latestReadme: ReadmeUtgave
}
type ReadmeUtgave {
  title: String!
  image: String!
  pdf: String!
  year: Int!
  utgave: Int!
}

Testing

$ go test -v ./...

About

📰 readme as a (graphql) function

https://readme-as-a-function.abakus.no

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published