2024-11-02 00:30:14 +08:00
|
|
|
#ifndef __POST_H__
|
|
|
|
#define __POST_H__
|
|
|
|
|
|
|
|
#include "Comment.h"
|
|
|
|
#include "Tag.h"
|
|
|
|
#include <Wt/Dbo/WtSqlTraits.h>
|
|
|
|
#include <Wt/WDateTime.h>
|
|
|
|
#include <Wt/WString.h>
|
|
|
|
|
|
|
|
class User;
|
|
|
|
|
|
|
|
typedef Wt::Dbo::collection<Wt::Dbo::ptr<Comment>> Comments;
|
|
|
|
typedef Wt::Dbo::collection<Wt::Dbo::ptr<Tag>> Tags;
|
|
|
|
|
|
|
|
class Post : public Wt::Dbo::Dbo<Post> {
|
|
|
|
public:
|
|
|
|
enum State {
|
|
|
|
Unpublished = 0,
|
|
|
|
Published = 1,
|
|
|
|
};
|
|
|
|
|
|
|
|
std::string permaLink() const;
|
|
|
|
std::string commentCount() const;
|
|
|
|
std::string titleToUrl() const;
|
2024-11-07 18:21:04 +08:00
|
|
|
Wt::Dbo::ptr<Comment> rootComment() const;
|
2024-11-02 00:30:14 +08:00
|
|
|
|
|
|
|
template <class Action>
|
|
|
|
void persist(Action &a) {
|
|
|
|
Wt::Dbo::field(a, state, "state");
|
|
|
|
Wt::Dbo::field(a, date, "date");
|
|
|
|
Wt::Dbo::field(a, title, "title");
|
|
|
|
Wt::Dbo::field(a, briefSrc, "brief_src");
|
|
|
|
Wt::Dbo::field(a, briefHtml, "brief_html");
|
|
|
|
Wt::Dbo::field(a, bodySrc, "body_src");
|
|
|
|
Wt::Dbo::field(a, bodyHtml, "body_html");
|
|
|
|
|
|
|
|
Wt::Dbo::belongsTo(a, author, "author");
|
|
|
|
|
|
|
|
Wt::Dbo::hasMany(a, comments, Wt::Dbo::ManyToOne, "post");
|
|
|
|
Wt::Dbo::hasMany(a, tags, Wt::Dbo::ManyToMany, "post_tag");
|
|
|
|
}
|
|
|
|
|
|
|
|
Wt::Dbo::ptr<User> author;
|
|
|
|
State state;
|
|
|
|
|
|
|
|
Wt::WDateTime date;
|
|
|
|
Wt::WString title;
|
|
|
|
Wt::WString briefSrc;
|
|
|
|
Wt::WString briefHtml;
|
|
|
|
Wt::WString bodySrc;
|
|
|
|
Wt::WString bodyHtml;
|
|
|
|
|
|
|
|
Comments comments;
|
|
|
|
Tags tags;
|
|
|
|
};
|
|
|
|
DBO_EXTERN_TEMPLATES(Post)
|
|
|
|
|
|
|
|
#endif // __POST_H__
|