diff options
-rw-r--r-- | entities/article.rkt | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/entities/article.rkt b/entities/article.rkt new file mode 100644 index 0000000..14319d7 --- /dev/null +++ b/entities/article.rkt @@ -0,0 +1,39 @@ +#lang typed/racket + +(provide Article + make-article + article? + article-id + article-timestamp + article-hash + article-title + article-body + + Article-With-Tags + make-article-with-tags + article-with-tags? + (rename-out [article-with-tags-tags article-tags]) + article->article-with-tags) + +(struct article ([id : String] + [timestamp : date] + [hash : String] + [title : String] + [body : String]) + #:type-name Article + #:constructor-name make-article + #:transparent) + +(struct article-with-tags article ([tags : (Listof String)]) + #:type-name Article-With-Tags + #:constructor-name make-article-with-tags + #:transparent) + +(: article->article-with-tags (-> Article (Listof String) Article-With-Tags)) +(define (article->article-with-tags a tags) + (make-article-with-tags (article-id a) + (article-timestamp a) + (article-hash a) + (article-title a) + (article-body a) + tags)) |