From c5c3c013baa46300ab85342478991556b04110e3 Mon Sep 17 00:00:00 2001 From: Fedor Katurov Date: Tue, 4 May 2021 11:45:20 +0700 Subject: [PATCH] #4 added typeorm entities for likes and events --- src/service/db/index.ts | 14 +++++++----- src/service/db/postgres/entities/Event.ts | 27 +++++++++++++++++++++++ src/service/db/postgres/entities/Like.ts | 26 ++++++++++++++++++++++ src/service/db/postgres/index.ts | 6 +++-- src/service/db/types.ts | 5 +++-- 5 files changed, 69 insertions(+), 9 deletions(-) create mode 100644 src/service/db/postgres/entities/Event.ts create mode 100644 src/service/db/postgres/entities/Like.ts diff --git a/src/service/db/index.ts b/src/service/db/index.ts index 61b515f..cf2272e 100644 --- a/src/service/db/index.ts +++ b/src/service/db/index.ts @@ -1,5 +1,5 @@ import { VkEvent } from "../vk/types"; -import { Event, Like } from "./types"; +import { StoredEvent, StoredLike } from "./types"; export interface Storage { getEvent( @@ -7,11 +7,15 @@ export interface Storage { id: number, groupId: number, channel: string - ): Promise; + ): Promise; - createEvent(event: Event): Promise; + createEvent(event: StoredEvent): Promise; - getLikesFor(channel: string, messageId: number): Promise; + getLikesFor(channel: string, messageId: number): Promise; - getLikeBy(channel: string, messageId: number, author: number): Promise; + getLikeBy( + channel: string, + messageId: number, + author: number + ): Promise; } diff --git a/src/service/db/postgres/entities/Event.ts b/src/service/db/postgres/entities/Event.ts new file mode 100644 index 0000000..d203219 --- /dev/null +++ b/src/service/db/postgres/entities/Event.ts @@ -0,0 +1,27 @@ +import { + Column, + CreateDateColumn, + Entity, + PrimaryGeneratedColumn, + UpdateDateColumn, +} from "typeorm"; +import { StoredEvent } from "../../types"; +import { VkEvent } from "../../../vk/types"; + +@Entity() +export class Event implements StoredEvent { + @PrimaryGeneratedColumn() + id: number; + @Column() + type: VkEvent; + @Column() + groupId: number; + @Column() + channel: string; + @Column() + tgMessageId: number; + @CreateDateColumn() + createdAt: Date; + @UpdateDateColumn() + updatedAt: Date; +} diff --git a/src/service/db/postgres/entities/Like.ts b/src/service/db/postgres/entities/Like.ts new file mode 100644 index 0000000..b16070f --- /dev/null +++ b/src/service/db/postgres/entities/Like.ts @@ -0,0 +1,26 @@ +import { + Column, + CreateDateColumn, + Entity, + PrimaryGeneratedColumn, + UpdateDateColumn, +} from "typeorm"; +import { StoredLike } from "../../types"; + +@Entity() +class Like implements StoredLike { + @PrimaryGeneratedColumn() + id: number; + @Column() + messageId: number; + @Column() + channel: string; + @Column({ type: "text" }) + text: string; + @Column() + author: number; + @CreateDateColumn() + createdAt: Date; + @UpdateDateColumn() + updatedAt: Date; +} diff --git a/src/service/db/postgres/index.ts b/src/service/db/postgres/index.ts index b30ee64..8a463a9 100644 --- a/src/service/db/postgres/index.ts +++ b/src/service/db/postgres/index.ts @@ -1,6 +1,6 @@ import { Storage } from "../index"; import { VkEvent } from "../../vk/types"; -import { Event } from "../types"; +import { StoredEvent } from "../types"; import { PostgresConfig } from "./types"; import { Connection, createConnection } from "typeorm"; @@ -12,6 +12,7 @@ export class PostgresDB implements Storage { this.connection = await createConnection({ type: "postgres", url: this.config.uri, + entities: ["./entities/*.ts"], }); }; @@ -32,11 +33,12 @@ export class PostgresDB implements Storage { }; }; - createEvent = async (event: Event) => event; + createEvent = async (event: StoredEvent) => event; getLikesFor = async (channel: string, messageId: number) => []; getLikeBy = async (channel: string, messageId: number, author: number) => ({ + id: 0, channel, messageId, author, diff --git a/src/service/db/types.ts b/src/service/db/types.ts index 50b5083..a4ea12d 100644 --- a/src/service/db/types.ts +++ b/src/service/db/types.ts @@ -1,6 +1,6 @@ import { VkEvent } from "../vk/types"; -export interface Event { +export interface StoredEvent { type: VkEvent; id: number; groupId: number; @@ -10,7 +10,8 @@ export interface Event { updatedAt: Date; } -export interface Like { +export interface StoredLike { + id: number; messageId: number; channel: string; text: string;