summaryrefslogtreecommitdiff
path: root/packages/backend/src/models
diff options
context:
space:
mode:
authorAcid Chicken (硫酸鶏) <root@acid-chicken.com>2023-03-31 16:41:55 +0900
committerGitHub <noreply@github.com>2023-03-31 16:41:55 +0900
commit13a406b6cf5b5dae5568dcc9a52d65eee87ba96c (patch)
tree84f735e70d939014cdfc127b8be2e53f83cbf474 /packages/backend/src/models
parentMerge branch 'develop' into acid-chicken-patch-1 (diff)
parentMerge branch 'develop' of https://github.com/misskey-dev/misskey into develop (diff)
downloadmisskey-13a406b6cf5b5dae5568dcc9a52d65eee87ba96c.tar.gz
misskey-13a406b6cf5b5dae5568dcc9a52d65eee87ba96c.tar.bz2
misskey-13a406b6cf5b5dae5568dcc9a52d65eee87ba96c.zip
Merge branch 'develop' into acid-chicken-patch-1
Diffstat (limited to 'packages/backend/src/models')
-rw-r--r--packages/backend/src/models/RepositoryModule.ts12
-rw-r--r--packages/backend/src/models/entities/Channel.ts5
-rw-r--r--packages/backend/src/models/entities/ChannelFavorite.ts (renamed from packages/backend/src/models/entities/ChannelNotePining.ts)24
-rw-r--r--packages/backend/src/models/index.ts6
-rw-r--r--packages/backend/src/models/json-schema/channel.ts12
5 files changed, 41 insertions, 18 deletions
diff --git a/packages/backend/src/models/RepositoryModule.ts b/packages/backend/src/models/RepositoryModule.ts
index d00c8813c7..da7faf9ffb 100644
--- a/packages/backend/src/models/RepositoryModule.ts
+++ b/packages/backend/src/models/RepositoryModule.ts
@@ -1,6 +1,6 @@
import { Module } from '@nestjs/common';
import { DI } from '@/di-symbols.js';
-import { User, Note, Announcement, AnnouncementRead, App, NoteFavorite, NoteThreadMuting, NoteReaction, NoteUnread, Notification, Poll, PollVote, UserProfile, UserKeypair, UserPending, AttestationChallenge, UserSecurityKey, UserPublickey, UserList, UserListJoining, UserNotePining, UserIp, UsedUsername, Following, FollowRequest, Instance, Emoji, DriveFile, DriveFolder, Meta, Muting, RenoteMuting, Blocking, SwSubscription, Hashtag, AbuseUserReport, RegistrationTicket, AuthSession, AccessToken, Signin, Page, PageLike, GalleryPost, GalleryLike, ModerationLog, Clip, ClipNote, Antenna, AntennaNote, PromoNote, PromoRead, Relay, MutedNote, Channel, ChannelFollowing, ChannelNotePining, RegistryItem, Webhook, Ad, PasswordResetRequest, RetentionAggregation, FlashLike, Flash, Role, RoleAssignment, ClipFavorite } from './index.js';
+import { User, Note, Announcement, AnnouncementRead, App, NoteFavorite, NoteThreadMuting, NoteReaction, NoteUnread, Notification, Poll, PollVote, UserProfile, UserKeypair, UserPending, AttestationChallenge, UserSecurityKey, UserPublickey, UserList, UserListJoining, UserNotePining, UserIp, UsedUsername, Following, FollowRequest, Instance, Emoji, DriveFile, DriveFolder, Meta, Muting, RenoteMuting, Blocking, SwSubscription, Hashtag, AbuseUserReport, RegistrationTicket, AuthSession, AccessToken, Signin, Page, PageLike, GalleryPost, GalleryLike, ModerationLog, Clip, ClipNote, Antenna, AntennaNote, PromoNote, PromoRead, Relay, MutedNote, Channel, ChannelFollowing, ChannelFavorite, RegistryItem, Webhook, Ad, PasswordResetRequest, RetentionAggregation, FlashLike, Flash, Role, RoleAssignment, ClipFavorite } from './index.js';
import type { DataSource } from 'typeorm';
import type { Provider } from '@nestjs/common';
@@ -340,9 +340,9 @@ const $channelFollowingsRepository: Provider = {
inject: [DI.db],
};
-const $channelNotePiningsRepository: Provider = {
- provide: DI.channelNotePiningsRepository,
- useFactory: (db: DataSource) => db.getRepository(ChannelNotePining),
+const $channelFavoritesRepository: Provider = {
+ provide: DI.channelFavoritesRepository,
+ useFactory: (db: DataSource) => db.getRepository(ChannelFavorite),
inject: [DI.db],
};
@@ -460,7 +460,7 @@ const $roleAssignmentsRepository: Provider = {
$mutedNotesRepository,
$channelsRepository,
$channelFollowingsRepository,
- $channelNotePiningsRepository,
+ $channelFavoritesRepository,
$registryItemsRepository,
$webhooksRepository,
$adsRepository,
@@ -528,7 +528,7 @@ const $roleAssignmentsRepository: Provider = {
$mutedNotesRepository,
$channelsRepository,
$channelFollowingsRepository,
- $channelNotePiningsRepository,
+ $channelFavoritesRepository,
$registryItemsRepository,
$webhooksRepository,
$adsRepository,
diff --git a/packages/backend/src/models/entities/Channel.ts b/packages/backend/src/models/entities/Channel.ts
index a6e32d54f7..2d346fdf9d 100644
--- a/packages/backend/src/models/entities/Channel.ts
+++ b/packages/backend/src/models/entities/Channel.ts
@@ -59,6 +59,11 @@ export class Channel {
@JoinColumn()
public banner: DriveFile | null;
+ @Column('varchar', {
+ array: true, length: 128, default: '{}',
+ })
+ public pinnedNoteIds: string[];
+
@Index()
@Column('integer', {
default: 0,
diff --git a/packages/backend/src/models/entities/ChannelNotePining.ts b/packages/backend/src/models/entities/ChannelFavorite.ts
index ab5796626a..cfb2c892cf 100644
--- a/packages/backend/src/models/entities/ChannelNotePining.ts
+++ b/packages/backend/src/models/entities/ChannelFavorite.ts
@@ -1,21 +1,24 @@
import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm';
import { id } from '../id.js';
-import { Note } from './Note.js';
+import { User } from './User.js';
import { Channel } from './Channel.js';
@Entity()
-@Index(['channelId', 'noteId'], { unique: true })
-export class ChannelNotePining {
+@Index(['userId', 'channelId'], { unique: true })
+export class ChannelFavorite {
@PrimaryColumn(id())
public id: string;
+ @Index()
@Column('timestamp with time zone', {
- comment: 'The created date of the ChannelNotePining.',
+ comment: 'The created date of the ChannelFavorite.',
})
public createdAt: Date;
@Index()
- @Column(id())
+ @Column({
+ ...id(),
+ })
public channelId: Channel['id'];
@ManyToOne(type => Channel, {
@@ -24,12 +27,15 @@ export class ChannelNotePining {
@JoinColumn()
public channel: Channel | null;
- @Column(id())
- public noteId: Note['id'];
+ @Index()
+ @Column({
+ ...id(),
+ })
+ public userId: User['id'];
- @ManyToOne(type => Note, {
+ @ManyToOne(type => User, {
onDelete: 'CASCADE',
})
@JoinColumn()
- public note: Note | null;
+ public user: User | null;
}
diff --git a/packages/backend/src/models/index.ts b/packages/backend/src/models/index.ts
index 17083d7a01..79bd014cea 100644
--- a/packages/backend/src/models/index.ts
+++ b/packages/backend/src/models/index.ts
@@ -10,7 +10,7 @@ import { AttestationChallenge } from '@/models/entities/AttestationChallenge.js'
import { AuthSession } from '@/models/entities/AuthSession.js';
import { Blocking } from '@/models/entities/Blocking.js';
import { ChannelFollowing } from '@/models/entities/ChannelFollowing.js';
-import { ChannelNotePining } from '@/models/entities/ChannelNotePining.js';
+import { ChannelFavorite } from '@/models/entities/ChannelFavorite.js';
import { Clip } from '@/models/entities/Clip.js';
import { ClipNote } from '@/models/entities/ClipNote.js';
import { ClipFavorite } from '@/models/entities/ClipFavorite.js';
@@ -79,7 +79,7 @@ export {
AuthSession,
Blocking,
ChannelFollowing,
- ChannelNotePining,
+ ChannelFavorite,
Clip,
ClipNote,
ClipFavorite,
@@ -147,7 +147,7 @@ export type AttestationChallengesRepository = Repository<AttestationChallenge>;
export type AuthSessionsRepository = Repository<AuthSession>;
export type BlockingsRepository = Repository<Blocking>;
export type ChannelFollowingsRepository = Repository<ChannelFollowing>;
-export type ChannelNotePiningsRepository = Repository<ChannelNotePining>;
+export type ChannelFavoritesRepository = Repository<ChannelFavorite>;
export type ClipsRepository = Repository<Clip>;
export type ClipNotesRepository = Repository<ClipNote>;
export type ClipFavoritesRepository = Repository<ClipFavorite>;
diff --git a/packages/backend/src/models/json-schema/channel.ts b/packages/backend/src/models/json-schema/channel.ts
index 7f4f2a48b8..745b39a6ba 100644
--- a/packages/backend/src/models/json-schema/channel.ts
+++ b/packages/backend/src/models/json-schema/channel.ts
@@ -42,10 +42,22 @@ export const packedChannelSchema = {
type: 'boolean',
optional: true, nullable: false,
},
+ isFavorited: {
+ type: 'boolean',
+ optional: true, nullable: false,
+ },
userId: {
type: 'string',
nullable: true, optional: false,
format: 'id',
},
+ pinnedNoteIds: {
+ type: 'array',
+ nullable: false, optional: false,
+ items: {
+ type: 'string',
+ format: 'id',
+ },
+ },
},
} as const;