mirror of
https://github.com/muerwre/vk-tg-bot.git
synced 2025-04-24 22:46:41 +07:00
#4 added typeorm entities for likes and events
This commit is contained in:
parent
c0588acd26
commit
c5c3c013ba
5 changed files with 69 additions and 9 deletions
|
@ -1,5 +1,5 @@
|
||||||
import { VkEvent } from "../vk/types";
|
import { VkEvent } from "../vk/types";
|
||||||
import { Event, Like } from "./types";
|
import { StoredEvent, StoredLike } from "./types";
|
||||||
|
|
||||||
export interface Storage {
|
export interface Storage {
|
||||||
getEvent(
|
getEvent(
|
||||||
|
@ -7,11 +7,15 @@ export interface Storage {
|
||||||
id: number,
|
id: number,
|
||||||
groupId: number,
|
groupId: number,
|
||||||
channel: string
|
channel: string
|
||||||
): Promise<Event>;
|
): Promise<StoredEvent>;
|
||||||
|
|
||||||
createEvent(event: Event): Promise<Event>;
|
createEvent(event: StoredEvent): Promise<StoredEvent>;
|
||||||
|
|
||||||
getLikesFor(channel: string, messageId: number): Promise<Like[]>;
|
getLikesFor(channel: string, messageId: number): Promise<StoredLike[]>;
|
||||||
|
|
||||||
getLikeBy(channel: string, messageId: number, author: number): Promise<Like>;
|
getLikeBy(
|
||||||
|
channel: string,
|
||||||
|
messageId: number,
|
||||||
|
author: number
|
||||||
|
): Promise<StoredLike>;
|
||||||
}
|
}
|
||||||
|
|
27
src/service/db/postgres/entities/Event.ts
Normal file
27
src/service/db/postgres/entities/Event.ts
Normal file
|
@ -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;
|
||||||
|
}
|
26
src/service/db/postgres/entities/Like.ts
Normal file
26
src/service/db/postgres/entities/Like.ts
Normal file
|
@ -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;
|
||||||
|
}
|
|
@ -1,6 +1,6 @@
|
||||||
import { Storage } from "../index";
|
import { Storage } from "../index";
|
||||||
import { VkEvent } from "../../vk/types";
|
import { VkEvent } from "../../vk/types";
|
||||||
import { Event } from "../types";
|
import { StoredEvent } from "../types";
|
||||||
import { PostgresConfig } from "./types";
|
import { PostgresConfig } from "./types";
|
||||||
import { Connection, createConnection } from "typeorm";
|
import { Connection, createConnection } from "typeorm";
|
||||||
|
|
||||||
|
@ -12,6 +12,7 @@ export class PostgresDB implements Storage {
|
||||||
this.connection = await createConnection({
|
this.connection = await createConnection({
|
||||||
type: "postgres",
|
type: "postgres",
|
||||||
url: this.config.uri,
|
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) => [];
|
getLikesFor = async (channel: string, messageId: number) => [];
|
||||||
|
|
||||||
getLikeBy = async (channel: string, messageId: number, author: number) => ({
|
getLikeBy = async (channel: string, messageId: number, author: number) => ({
|
||||||
|
id: 0,
|
||||||
channel,
|
channel,
|
||||||
messageId,
|
messageId,
|
||||||
author,
|
author,
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import { VkEvent } from "../vk/types";
|
import { VkEvent } from "../vk/types";
|
||||||
|
|
||||||
export interface Event {
|
export interface StoredEvent {
|
||||||
type: VkEvent;
|
type: VkEvent;
|
||||||
id: number;
|
id: number;
|
||||||
groupId: number;
|
groupId: number;
|
||||||
|
@ -10,7 +10,8 @@ export interface Event {
|
||||||
updatedAt: Date;
|
updatedAt: Date;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface Like {
|
export interface StoredLike {
|
||||||
|
id: number;
|
||||||
messageId: number;
|
messageId: number;
|
||||||
channel: string;
|
channel: string;
|
||||||
text: string;
|
text: string;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue