static function getMap()
{
return [
(new IntegerField("ID", ["primary" => true, "autocomplete" => true])),
(new IntegerField("FORUM_ID", ["required" => true])),
(new IntegerField("TOPIC_ID")),
(new StringField("TITLE", ["required" => true, "size" => 255])),
(new StringField("TITLE_SEO", ["size" => 255])),
(new StringField("TAGS", ["size" => 255])),
(new StringField("DESCRIPTION", ["size" => 255])),
(new StringField("ICON", ["size" => 255])),
(new EnumField("STATE", ["values" => [Topic::STATE_OPENED, Topic::STATE_CLOSED, Topic::STATE_LINK], "default_value" => Topic::STATE_OPENED])),
(new BooleanField("APPROVED", ["values" => [Topic::APPROVED_DISAPPROVED, Topic::APPROVED_APPROVED], "default_value" => Topic::APPROVED_APPROVED])),
(new IntegerField("SORT", ["default_value" => 150])),
(new IntegerField("VIEWS")),
(new IntegerField("USER_START_ID")),
(new StringField("USER_START_NAME", ["required" => true, "size" => 255])),
(new DatetimeField("START_DATE", ["required" => true, "default_value" => function(){return new DateTime();}])),
(new IntegerField("POSTS")),
(new IntegerField("POSTS_SERVICE")),
(new IntegerField("LAST_POSTER_ID")),
(new StringField("LAST_POSTER_NAME", ["required" => true, "size" => 255])),
(new DatetimeField("LAST_POST_DATE", ["required" => true, "default_value" => function(){return new DateTime();}])),
(new IntegerField("LAST_MESSAGE_ID")),
(new IntegerField("POSTS_UNAPPROVED", ["default_value" => 0])),
(new IntegerField("ABS_LAST_POSTER_ID")),
(new StringField("ABS_LAST_POSTER_NAME", ["size" => 255])),
(new DatetimeField("ABS_LAST_POST_DATE", ["required" => true, "default_value" => function(){return new DateTime();}])),
(new IntegerField("ABS_LAST_MESSAGE_ID")),
(new StringField("XML_ID", ["size" => 255])),
(new TextField("HTML")),
(new IntegerField("SOCNET_GROUP_ID")),
(new IntegerField("OWNER_ID")),
(new Reference("FORUM", ForumTable::class, Join::on("this.FORUM_ID", "ref.ID")))
];
}