@ournet/news-data
Version:
Ournet news data module
75 lines (74 loc) • 2.34 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const dynamo_item_1 = require("dynamo-item");
const dynamo_news_1 = require("./dynamo-news");
class TopicNewsHelper {
static create(locale, newsId, publishedAt, topics, expiresAt) {
return topics.map((topic) => {
const item = {
newsId,
publishedAt,
expiresAt,
topicId: topic.id,
locale: dynamo_news_1.DynamoNewsItemHelper.createLocaleKey(locale)
};
return item;
});
}
}
exports.TopicNewsHelper = TopicNewsHelper;
class TopicNewsModel extends dynamo_item_1.DynamoItem {
localeLastTopicsIndexName() {
return "locale-last-topics-index";
}
topicLastNewsIndexName() {
return "topic-last-news-index";
}
constructor(client, tableSuffix) {
super({
hashKey: {
name: "topicId",
type: "S"
},
rangeKey: {
name: "newsId",
type: "S"
},
name: "topic_news",
tableName: `ournet_news__topic_${tableSuffix}`,
indexes: [
{
name: "topic-last-news-index",
hashKey: {
name: "topicId",
type: "S"
},
rangeKey: {
name: "publishedAt",
type: "S"
},
type: "LOCAL",
projection: {
type: "KEYS_ONLY"
}
},
{
name: "locale-last-topics-index",
hashKey: {
name: "locale",
type: "S"
},
rangeKey: {
name: "publishedAt",
type: "S"
},
type: "GLOBAL",
projection: {
type: "KEYS_ONLY"
}
}
]
}, client);
}
}
exports.TopicNewsModel = TopicNewsModel;