Compare commits
5 commits
1893bfed44
...
722b7ece8b
Author | SHA1 | Date | |
---|---|---|---|
722b7ece8b | |||
d7d60ffdb0 | |||
93b7396990 | |||
3bc2b7bcfb | |||
ea020e9f7c |
256 changed files with 1388 additions and 479 deletions
7
Makefile
7
Makefile
|
@ -31,8 +31,11 @@ regenerate-entities:
|
||||||
cd packages/backend/native-utils && \
|
cd packages/backend/native-utils && \
|
||||||
sea-orm-cli generate entity \
|
sea-orm-cli generate entity \
|
||||||
--output-dir='src/model/entity' \
|
--output-dir='src/model/entity' \
|
||||||
--database-url='postgres://firefish:password@localhost:25432/firefish_db'
|
--database-url='postgres://firefish:password@localhost:25432/firefish_db' \
|
||||||
|
--date-time-crate='chrono' \
|
||||||
|
--model-extra-attributes='napi_derive::napi(object)'
|
||||||
|
sed -i 's/#\[derive(Debug, Clone, PartialEq, Eq, EnumIter, DeriveActiveEnum)\]/#[derive(Debug, PartialEq, Eq, EnumIter, DeriveActiveEnum)]\n#[napi_derive::napi]/' \
|
||||||
|
packages/backend/native-utils/src/model/entity/sea_orm_active_enums.rs
|
||||||
|
|
||||||
.PHONY: update-index-js
|
.PHONY: update-index-js
|
||||||
update-index-js:
|
update-index-js:
|
||||||
|
|
|
@ -269,6 +269,18 @@ const {
|
||||||
EnvConfig,
|
EnvConfig,
|
||||||
readEnvironmentConfig,
|
readEnvironmentConfig,
|
||||||
readServerConfig,
|
readServerConfig,
|
||||||
|
AntennaSrcEnum,
|
||||||
|
MetaSensitivemediadetectionEnum,
|
||||||
|
MetaSensitivemediadetectionsensitivityEnum,
|
||||||
|
MutedNoteReasonEnum,
|
||||||
|
NoteVisibilityEnum,
|
||||||
|
NotificationTypeEnum,
|
||||||
|
PageVisibilityEnum,
|
||||||
|
PollNotevisibilityEnum,
|
||||||
|
RelayStatusEnum,
|
||||||
|
UserEmojimodpermEnum,
|
||||||
|
UserProfileFfvisibilityEnum,
|
||||||
|
UserProfileMutingnotificationtypesEnum,
|
||||||
stringToAcct,
|
stringToAcct,
|
||||||
acctToString,
|
acctToString,
|
||||||
getFullApAccount,
|
getFullApAccount,
|
||||||
|
@ -280,17 +292,32 @@ const {
|
||||||
sqlLikeEscape,
|
sqlLikeEscape,
|
||||||
safeForSql,
|
safeForSql,
|
||||||
formatMilliseconds,
|
formatMilliseconds,
|
||||||
|
nativeInitIdGenerator,
|
||||||
|
nativeCreateId,
|
||||||
|
nativeGetTimestamp,
|
||||||
genString,
|
genString,
|
||||||
IdConvertType,
|
IdConvertType,
|
||||||
convertId,
|
convertId,
|
||||||
nativeGetTimestamp,
|
|
||||||
nativeCreateId,
|
|
||||||
nativeInitIdGenerator,
|
|
||||||
} = nativeBinding;
|
} = nativeBinding;
|
||||||
|
|
||||||
module.exports.EnvConfig = EnvConfig;
|
module.exports.EnvConfig = EnvConfig;
|
||||||
module.exports.readEnvironmentConfig = readEnvironmentConfig;
|
module.exports.readEnvironmentConfig = readEnvironmentConfig;
|
||||||
module.exports.readServerConfig = readServerConfig;
|
module.exports.readServerConfig = readServerConfig;
|
||||||
|
module.exports.AntennaSrcEnum = AntennaSrcEnum;
|
||||||
|
module.exports.MetaSensitivemediadetectionEnum =
|
||||||
|
MetaSensitivemediadetectionEnum;
|
||||||
|
module.exports.MetaSensitivemediadetectionsensitivityEnum =
|
||||||
|
MetaSensitivemediadetectionsensitivityEnum;
|
||||||
|
module.exports.MutedNoteReasonEnum = MutedNoteReasonEnum;
|
||||||
|
module.exports.NoteVisibilityEnum = NoteVisibilityEnum;
|
||||||
|
module.exports.NotificationTypeEnum = NotificationTypeEnum;
|
||||||
|
module.exports.PageVisibilityEnum = PageVisibilityEnum;
|
||||||
|
module.exports.PollNotevisibilityEnum = PollNotevisibilityEnum;
|
||||||
|
module.exports.RelayStatusEnum = RelayStatusEnum;
|
||||||
|
module.exports.UserEmojimodpermEnum = UserEmojimodpermEnum;
|
||||||
|
module.exports.UserProfileFfvisibilityEnum = UserProfileFfvisibilityEnum;
|
||||||
|
module.exports.UserProfileMutingnotificationtypesEnum =
|
||||||
|
UserProfileMutingnotificationtypesEnum;
|
||||||
module.exports.stringToAcct = stringToAcct;
|
module.exports.stringToAcct = stringToAcct;
|
||||||
module.exports.acctToString = acctToString;
|
module.exports.acctToString = acctToString;
|
||||||
module.exports.getFullApAccount = getFullApAccount;
|
module.exports.getFullApAccount = getFullApAccount;
|
||||||
|
@ -302,9 +329,9 @@ module.exports.convertToHiddenPost = convertToHiddenPost;
|
||||||
module.exports.sqlLikeEscape = sqlLikeEscape;
|
module.exports.sqlLikeEscape = sqlLikeEscape;
|
||||||
module.exports.safeForSql = safeForSql;
|
module.exports.safeForSql = safeForSql;
|
||||||
module.exports.formatMilliseconds = formatMilliseconds;
|
module.exports.formatMilliseconds = formatMilliseconds;
|
||||||
|
module.exports.nativeInitIdGenerator = nativeInitIdGenerator;
|
||||||
|
module.exports.nativeCreateId = nativeCreateId;
|
||||||
|
module.exports.nativeGetTimestamp = nativeGetTimestamp;
|
||||||
module.exports.genString = genString;
|
module.exports.genString = genString;
|
||||||
module.exports.IdConvertType = IdConvertType;
|
module.exports.IdConvertType = IdConvertType;
|
||||||
module.exports.convertId = convertId;
|
module.exports.convertId = convertId;
|
||||||
module.exports.nativeGetTimestamp = nativeGetTimestamp;
|
|
||||||
module.exports.nativeCreateId = nativeCreateId;
|
|
||||||
module.exports.nativeInitIdGenerator = nativeInitIdGenerator;
|
|
||||||
|
|
|
@ -1,3 +1,80 @@
|
||||||
|
-- drop-time-zone
|
||||||
|
ALTER TABLE "webhook" ALTER "latestSentAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "webhook" ALTER "createdAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "user_security_key" ALTER "lastUsed" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "user_pending" ALTER "createdAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "user_note_pining" ALTER "createdAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "user_list_joining" ALTER "createdAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "user_list" ALTER "createdAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "user_ip" ALTER "createdAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "user_group_joining" ALTER "createdAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "user_group_invite" ALTER "createdAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "user_group_invitation" ALTER "createdAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "user_group" ALTER "createdAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "user" ALTER "updatedAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "user" ALTER "lastFetchedAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "user" ALTER "lastActiveDate" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "user" ALTER "createdAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "used_username" ALTER "createdAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "sw_subscription" ALTER "createdAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "signin" ALTER "createdAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "reply_muting" ALTER "createdAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "renote_muting" ALTER "createdAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "registry_item" ALTER "updatedAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "registry_item" ALTER "createdAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "registration_ticket" ALTER "createdAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "promo_read" ALTER "createdAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "promo_note" ALTER "expiresAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "poll_vote" ALTER "createdAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "poll" ALTER "expiresAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "password_reset_request" ALTER "createdAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "page_like" ALTER "createdAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "page" ALTER "updatedAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "page" ALTER "createdAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "notification" ALTER "createdAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "note_watching" ALTER "createdAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "note_thread_muting" ALTER "createdAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "note_reaction" ALTER "createdAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "note_favorite" ALTER "createdAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "note_edit" ALTER "updatedAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "note" ALTER "updatedAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "note" ALTER "createdAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "muting" ALTER "expiresAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "muting" ALTER "createdAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "moderation_log" ALTER "createdAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "messaging_message" ALTER "createdAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "instance" ALTER "latestRequestSentAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "instance" ALTER "latestRequestReceivedAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "instance" ALTER "lastCommunicatedAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "instance" ALTER "infoUpdatedAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "instance" ALTER "caughtAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "gallery_post" ALTER "updatedAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "gallery_post" ALTER "createdAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "gallery_like" ALTER "createdAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "follow_request" ALTER "createdAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "following" ALTER "createdAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "emoji" ALTER "updatedAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "drive_folder" ALTER "createdAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "drive_file" ALTER "createdAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "clip" ALTER "createdAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "channel_note_pining" ALTER "createdAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "channel_following" ALTER "createdAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "channel" ALTER "lastNotedAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "channel" ALTER "createdAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "blocking" ALTER "createdAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "auth_session" ALTER "createdAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "attestation_challenge" ALTER "createdAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "app" ALTER "createdAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "antenna" ALTER "createdAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "announcement_read" ALTER "createdAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "announcement" ALTER "updatedAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "announcement" ALTER "createdAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "ad" ALTER "expiresAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "ad" ALTER "createdAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "access_token" ALTER "lastUsedAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "access_token" ALTER "createdAt" TYPE timestamp with time zone;
|
||||||
|
ALTER TABLE "abuse_user_report" ALTER "createdAt" TYPE timestamp with time zone;
|
||||||
|
|
||||||
-- reply-muting
|
-- reply-muting
|
||||||
DROP TABLE "reply_muting";
|
DROP TABLE "reply_muting";
|
||||||
|
|
||||||
|
|
459
packages/backend/migration-neko/1705691683091-drop-time-zone.js
Normal file
459
packages/backend/migration-neko/1705691683091-drop-time-zone.js
Normal file
|
@ -0,0 +1,459 @@
|
||||||
|
export class DropTimeZone1705691683091 {
|
||||||
|
name = "DropTimeZone1705691683091";
|
||||||
|
|
||||||
|
async up(queryRunner) {
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "abuse_user_report" ALTER "createdAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "access_token" ALTER "createdAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "access_token" ALTER "lastUsedAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "ad" ALTER "createdAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "ad" ALTER "expiresAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "announcement" ALTER "createdAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "announcement" ALTER "updatedAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "announcement_read" ALTER "createdAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "antenna" ALTER "createdAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "app" ALTER "createdAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "attestation_challenge" ALTER "createdAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "auth_session" ALTER "createdAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "blocking" ALTER "createdAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "channel" ALTER "createdAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "channel" ALTER "lastNotedAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "channel_following" ALTER "createdAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "channel_note_pining" ALTER "createdAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "clip" ALTER "createdAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "drive_file" ALTER "createdAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "drive_folder" ALTER "createdAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "emoji" ALTER "updatedAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "following" ALTER "createdAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "follow_request" ALTER "createdAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "gallery_like" ALTER "createdAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "gallery_post" ALTER "createdAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "gallery_post" ALTER "updatedAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "instance" ALTER "caughtAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "instance" ALTER "infoUpdatedAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "instance" ALTER "lastCommunicatedAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "instance" ALTER "latestRequestReceivedAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "instance" ALTER "latestRequestSentAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "messaging_message" ALTER "createdAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "moderation_log" ALTER "createdAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "muting" ALTER "createdAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "muting" ALTER "expiresAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "note" ALTER "createdAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "note" ALTER "updatedAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "note_edit" ALTER "updatedAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "note_favorite" ALTER "createdAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "note_reaction" ALTER "createdAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "note_thread_muting" ALTER "createdAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "note_watching" ALTER "createdAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "notification" ALTER "createdAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "page" ALTER "createdAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "page" ALTER "updatedAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "page_like" ALTER "createdAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "password_reset_request" ALTER "createdAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "poll" ALTER "expiresAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "poll_vote" ALTER "createdAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "promo_note" ALTER "expiresAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "promo_read" ALTER "createdAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "registration_ticket" ALTER "createdAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "registry_item" ALTER "createdAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "registry_item" ALTER "updatedAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "renote_muting" ALTER "createdAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "reply_muting" ALTER "createdAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "signin" ALTER "createdAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "sw_subscription" ALTER "createdAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "used_username" ALTER "createdAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "user" ALTER "createdAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "user" ALTER "lastActiveDate" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "user" ALTER "lastFetchedAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "user" ALTER "updatedAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "user_group" ALTER "createdAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "user_group_invitation" ALTER "createdAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "user_group_invite" ALTER "createdAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "user_group_joining" ALTER "createdAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "user_ip" ALTER "createdAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "user_list" ALTER "createdAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "user_list_joining" ALTER "createdAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "user_note_pining" ALTER "createdAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "user_pending" ALTER "createdAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "user_security_key" ALTER "lastUsed" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "webhook" ALTER "createdAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "webhook" ALTER "latestSentAt" TYPE timestamp without time zone`,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
async down(queryRunner) {
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "webhook" ALTER "latestSentAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "webhook" ALTER "createdAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "user_security_key" ALTER "lastUsed" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "user_pending" ALTER "createdAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "user_note_pining" ALTER "createdAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "user_list_joining" ALTER "createdAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "user_list" ALTER "createdAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "user_ip" ALTER "createdAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "user_group_joining" ALTER "createdAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "user_group_invite" ALTER "createdAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "user_group_invitation" ALTER "createdAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "user_group" ALTER "createdAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "user" ALTER "updatedAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "user" ALTER "lastFetchedAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "user" ALTER "lastActiveDate" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "user" ALTER "createdAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "used_username" ALTER "createdAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "sw_subscription" ALTER "createdAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "signin" ALTER "createdAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "reply_muting" ALTER "createdAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "renote_muting" ALTER "createdAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "registry_item" ALTER "updatedAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "registry_item" ALTER "createdAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "registration_ticket" ALTER "createdAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "promo_read" ALTER "createdAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "promo_note" ALTER "expiresAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "poll_vote" ALTER "createdAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "poll" ALTER "expiresAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "password_reset_request" ALTER "createdAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "page_like" ALTER "createdAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "page" ALTER "updatedAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "page" ALTER "createdAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "notification" ALTER "createdAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "note_watching" ALTER "createdAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "note_thread_muting" ALTER "createdAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "note_reaction" ALTER "createdAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "note_favorite" ALTER "createdAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "note_edit" ALTER "updatedAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "note" ALTER "updatedAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "note" ALTER "createdAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "muting" ALTER "expiresAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "muting" ALTER "createdAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "moderation_log" ALTER "createdAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "messaging_message" ALTER "createdAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "instance" ALTER "latestRequestSentAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "instance" ALTER "latestRequestReceivedAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "instance" ALTER "lastCommunicatedAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "instance" ALTER "infoUpdatedAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "instance" ALTER "caughtAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "gallery_post" ALTER "updatedAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "gallery_post" ALTER "createdAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "gallery_like" ALTER "createdAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "follow_request" ALTER "createdAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "following" ALTER "createdAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "emoji" ALTER "updatedAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "drive_folder" ALTER "createdAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "drive_file" ALTER "createdAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "clip" ALTER "createdAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "channel_note_pining" ALTER "createdAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "channel_following" ALTER "createdAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "channel" ALTER "lastNotedAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "channel" ALTER "createdAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "blocking" ALTER "createdAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "auth_session" ALTER "createdAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "attestation_challenge" ALTER "createdAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "app" ALTER "createdAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "antenna" ALTER "createdAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "announcement_read" ALTER "createdAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "announcement" ALTER "updatedAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "announcement" ALTER "createdAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "ad" ALTER "expiresAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "ad" ALTER "createdAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "access_token" ALTER "lastUsedAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "access_token" ALTER "createdAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
await queryRunner.query(
|
||||||
|
`ALTER TABLE "abuse_user_report" ALTER "createdAt" TYPE timestamp with time zone`,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
4
packages/backend/native-utils/Cargo.lock
generated
4
packages/backend/native-utils/Cargo.lock
generated
|
@ -1351,10 +1351,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "2fc1cb00cde484640da9f01a124edbb013576a6ae9843b23857c940936b76d91"
|
checksum = "2fc1cb00cde484640da9f01a124edbb013576a6ae9843b23857c940936b76d91"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags 2.4.2",
|
"bitflags 2.4.2",
|
||||||
|
"chrono",
|
||||||
"ctor",
|
"ctor",
|
||||||
"napi-derive",
|
"napi-derive",
|
||||||
"napi-sys",
|
"napi-sys",
|
||||||
"once_cell",
|
"once_cell",
|
||||||
|
"serde",
|
||||||
|
"serde_json",
|
||||||
"tokio",
|
"tokio",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -1428,6 +1431,7 @@ dependencies = [
|
||||||
"thiserror",
|
"thiserror",
|
||||||
"tokio",
|
"tokio",
|
||||||
"url",
|
"url",
|
||||||
|
"urlencoding",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
|
|
@ -7,7 +7,7 @@ version = "0.0.0"
|
||||||
members = ["migration"]
|
members = ["migration"]
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
default = []
|
default = ["napi"]
|
||||||
napi = ["dep:napi-derive"]
|
napi = ["dep:napi-derive"]
|
||||||
|
|
||||||
[lib]
|
[lib]
|
||||||
|
@ -33,9 +33,10 @@ tokio = { version = "1.35.1", features = ["full"] }
|
||||||
url = "2.5.0"
|
url = "2.5.0"
|
||||||
|
|
||||||
# Default enable napi4 feature, see https://nodejs.org/api/n-api.html#node-api-version-matrix
|
# Default enable napi4 feature, see https://nodejs.org/api/n-api.html#node-api-version-matrix
|
||||||
napi = { version = "2.14.2", default-features = false, features = ["napi9", "tokio_rt"] }
|
napi = { version = "2.14.2", default-features = false, features = ["napi9", "tokio_rt", "chrono_date", "serde-json"] }
|
||||||
napi-derive = { version = "2.14.6", optional = true }
|
napi-derive = { version = "2.14.6", optional = true }
|
||||||
basen = "0.1.0"
|
basen = "0.1.0"
|
||||||
|
urlencoding = "2.1.3"
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
pretty_assertions = "1.4.0"
|
pretty_assertions = "1.4.0"
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
use sea_orm::error::DbErr;
|
use sea_orm::error::DbErr;
|
||||||
|
|
||||||
use crate::impl_into_napi_error;
|
use crate::impl_napi_error_from;
|
||||||
|
|
||||||
#[derive(thiserror::Error, Debug, PartialEq, Eq)]
|
#[derive(thiserror::Error, Debug, PartialEq, Eq)]
|
||||||
pub enum Error {
|
pub enum Error {
|
||||||
|
@ -10,4 +10,13 @@ pub enum Error {
|
||||||
OrmError(#[from] DbErr),
|
OrmError(#[from] DbErr),
|
||||||
}
|
}
|
||||||
|
|
||||||
impl_into_napi_error!(Error);
|
impl_napi_error_from!(Error);
|
||||||
|
|
||||||
|
pub trait NapiDbErrExt {
|
||||||
|
fn into(self) -> napi::Error;
|
||||||
|
}
|
||||||
|
impl NapiDbErrExt for DbErr {
|
||||||
|
fn into(self) -> napi::Error {
|
||||||
|
napi::Error::from_reason(self.to_string())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -1,26 +1,44 @@
|
||||||
pub mod error;
|
pub mod error;
|
||||||
|
pub use error::NapiDbErrExt;
|
||||||
|
|
||||||
use error::Error;
|
use crate::config::server::read_server_config;
|
||||||
use sea_orm::{Database, DbConn};
|
use sea_orm::{Database, DbConn};
|
||||||
|
use urlencoding::encode;
|
||||||
|
|
||||||
static DB_CONN: once_cell::sync::OnceCell<DbConn> = once_cell::sync::OnceCell::new();
|
#[napi_derive::napi]
|
||||||
|
pub struct JsDbConn {
|
||||||
pub async fn init_database(conn_uri: impl Into<String>) -> Result<(), Error> {
|
inner: DbConn,
|
||||||
let conn = Database::connect(conn_uri.into()).await?;
|
|
||||||
DB_CONN.get_or_init(move || conn);
|
|
||||||
Ok(())
|
|
||||||
}
|
}
|
||||||
|
impl JsDbConn {
|
||||||
pub fn get_database() -> Result<&'static DbConn, Error> {
|
pub fn inner(&self) -> &DbConn {
|
||||||
DB_CONN.get().ok_or(Error::Uninitialized)
|
&self.inner
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(test)]
|
|
||||||
mod unit_test {
|
|
||||||
use super::{error::Error, get_database};
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn error_uninitialized() {
|
|
||||||
assert_eq!(get_database().unwrap_err(), Error::Uninitialized);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[napi_derive::napi]
|
||||||
|
pub async fn init_database() -> napi::Result<JsDbConn> {
|
||||||
|
let config = read_server_config().db;
|
||||||
|
let conn_uri = format!(
|
||||||
|
"postgres://{}:{}@{}:{}/{}",
|
||||||
|
config.user,
|
||||||
|
encode(&config.pass),
|
||||||
|
config.host,
|
||||||
|
config.port,
|
||||||
|
config.db,
|
||||||
|
);
|
||||||
|
let conn = Database::connect(conn_uri)
|
||||||
|
.await
|
||||||
|
.map_err(NapiDbErrExt::into)?;
|
||||||
|
Ok(JsDbConn { inner: conn })
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO
|
||||||
|
// #[cfg(test)]
|
||||||
|
// mod unit_test {
|
||||||
|
// use super::{error::Error, get_database};
|
||||||
|
//
|
||||||
|
// #[test]
|
||||||
|
// fn error_uninitialized() {
|
||||||
|
// assert_eq!(get_database().unwrap_err(), Error::Uninitialized);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
|
@ -4,5 +4,5 @@ pub mod macros;
|
||||||
pub mod model;
|
pub mod model;
|
||||||
pub mod util;
|
pub mod util;
|
||||||
|
|
||||||
#[cfg(feature = "napi")]
|
// #[cfg(feature = "napi")]
|
||||||
pub mod mastodon_api;
|
pub mod mastodon_api;
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
#[macro_export]
|
#[macro_export]
|
||||||
macro_rules! impl_into_napi_error {
|
macro_rules! impl_napi_error_from {
|
||||||
($a:ty) => {
|
($a:ty) => {
|
||||||
#[cfg(feature = "napi")]
|
#[cfg(feature = "napi")]
|
||||||
impl Into<napi::Error> for $a {
|
impl From<$a> for napi::Error {
|
||||||
fn into(self) -> napi::Error {
|
fn from(reason: $a) -> napi::Error {
|
||||||
napi::Error::from_reason(self.to_string())
|
napi::Error::from_reason(reason.to_string())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -4,11 +4,12 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "abuse_user_report")]
|
#[sea_orm(table_name = "abuse_user_report")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(primary_key, auto_increment = false)]
|
#[sea_orm(primary_key, auto_increment = false)]
|
||||||
pub id: String,
|
pub id: String,
|
||||||
#[sea_orm(column_name = "createdAt")]
|
#[sea_orm(column_name = "createdAt")]
|
||||||
pub created_at: DateTimeWithTimeZone,
|
pub created_at: DateTime,
|
||||||
#[sea_orm(column_name = "targetUserId")]
|
#[sea_orm(column_name = "targetUserId")]
|
||||||
pub target_user_id: String,
|
pub target_user_id: String,
|
||||||
#[sea_orm(column_name = "reporterId")]
|
#[sea_orm(column_name = "reporterId")]
|
||||||
|
|
|
@ -4,11 +4,12 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "access_token")]
|
#[sea_orm(table_name = "access_token")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(primary_key, auto_increment = false)]
|
#[sea_orm(primary_key, auto_increment = false)]
|
||||||
pub id: String,
|
pub id: String,
|
||||||
#[sea_orm(column_name = "createdAt")]
|
#[sea_orm(column_name = "createdAt")]
|
||||||
pub created_at: DateTimeWithTimeZone,
|
pub created_at: DateTime,
|
||||||
pub token: String,
|
pub token: String,
|
||||||
pub hash: String,
|
pub hash: String,
|
||||||
#[sea_orm(column_name = "userId")]
|
#[sea_orm(column_name = "userId")]
|
||||||
|
@ -16,7 +17,7 @@ pub struct Model {
|
||||||
#[sea_orm(column_name = "appId")]
|
#[sea_orm(column_name = "appId")]
|
||||||
pub app_id: Option<String>,
|
pub app_id: Option<String>,
|
||||||
#[sea_orm(column_name = "lastUsedAt")]
|
#[sea_orm(column_name = "lastUsedAt")]
|
||||||
pub last_used_at: Option<DateTimeWithTimeZone>,
|
pub last_used_at: Option<DateTime>,
|
||||||
pub session: Option<String>,
|
pub session: Option<String>,
|
||||||
pub name: Option<String>,
|
pub name: Option<String>,
|
||||||
pub description: Option<String>,
|
pub description: Option<String>,
|
||||||
|
|
|
@ -4,13 +4,14 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "ad")]
|
#[sea_orm(table_name = "ad")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(primary_key, auto_increment = false)]
|
#[sea_orm(primary_key, auto_increment = false)]
|
||||||
pub id: String,
|
pub id: String,
|
||||||
#[sea_orm(column_name = "createdAt")]
|
#[sea_orm(column_name = "createdAt")]
|
||||||
pub created_at: DateTimeWithTimeZone,
|
pub created_at: DateTime,
|
||||||
#[sea_orm(column_name = "expiresAt")]
|
#[sea_orm(column_name = "expiresAt")]
|
||||||
pub expires_at: DateTimeWithTimeZone,
|
pub expires_at: DateTime,
|
||||||
pub place: String,
|
pub place: String,
|
||||||
pub priority: String,
|
pub priority: String,
|
||||||
pub url: String,
|
pub url: String,
|
||||||
|
|
|
@ -4,17 +4,18 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "announcement")]
|
#[sea_orm(table_name = "announcement")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(primary_key, auto_increment = false)]
|
#[sea_orm(primary_key, auto_increment = false)]
|
||||||
pub id: String,
|
pub id: String,
|
||||||
#[sea_orm(column_name = "createdAt")]
|
#[sea_orm(column_name = "createdAt")]
|
||||||
pub created_at: DateTimeWithTimeZone,
|
pub created_at: DateTime,
|
||||||
pub text: String,
|
pub text: String,
|
||||||
pub title: String,
|
pub title: String,
|
||||||
#[sea_orm(column_name = "imageUrl")]
|
#[sea_orm(column_name = "imageUrl")]
|
||||||
pub image_url: Option<String>,
|
pub image_url: Option<String>,
|
||||||
#[sea_orm(column_name = "updatedAt")]
|
#[sea_orm(column_name = "updatedAt")]
|
||||||
pub updated_at: Option<DateTimeWithTimeZone>,
|
pub updated_at: Option<DateTime>,
|
||||||
#[sea_orm(column_name = "showPopup")]
|
#[sea_orm(column_name = "showPopup")]
|
||||||
pub show_popup: bool,
|
pub show_popup: bool,
|
||||||
#[sea_orm(column_name = "isGoodNews")]
|
#[sea_orm(column_name = "isGoodNews")]
|
||||||
|
|
|
@ -4,6 +4,7 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "announcement_read")]
|
#[sea_orm(table_name = "announcement_read")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(primary_key, auto_increment = false)]
|
#[sea_orm(primary_key, auto_increment = false)]
|
||||||
pub id: String,
|
pub id: String,
|
||||||
|
@ -12,7 +13,7 @@ pub struct Model {
|
||||||
#[sea_orm(column_name = "announcementId")]
|
#[sea_orm(column_name = "announcementId")]
|
||||||
pub announcement_id: String,
|
pub announcement_id: String,
|
||||||
#[sea_orm(column_name = "createdAt")]
|
#[sea_orm(column_name = "createdAt")]
|
||||||
pub created_at: DateTimeWithTimeZone,
|
pub created_at: DateTime,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
|
#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
|
||||||
|
|
|
@ -5,11 +5,12 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "antenna")]
|
#[sea_orm(table_name = "antenna")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(primary_key, auto_increment = false)]
|
#[sea_orm(primary_key, auto_increment = false)]
|
||||||
pub id: String,
|
pub id: String,
|
||||||
#[sea_orm(column_name = "createdAt")]
|
#[sea_orm(column_name = "createdAt")]
|
||||||
pub created_at: DateTimeWithTimeZone,
|
pub created_at: DateTime,
|
||||||
#[sea_orm(column_name = "userId")]
|
#[sea_orm(column_name = "userId")]
|
||||||
pub user_id: String,
|
pub user_id: String,
|
||||||
pub name: String,
|
pub name: String,
|
||||||
|
|
|
@ -4,11 +4,12 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "app")]
|
#[sea_orm(table_name = "app")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(primary_key, auto_increment = false)]
|
#[sea_orm(primary_key, auto_increment = false)]
|
||||||
pub id: String,
|
pub id: String,
|
||||||
#[sea_orm(column_name = "createdAt")]
|
#[sea_orm(column_name = "createdAt")]
|
||||||
pub created_at: DateTimeWithTimeZone,
|
pub created_at: DateTime,
|
||||||
#[sea_orm(column_name = "userId")]
|
#[sea_orm(column_name = "userId")]
|
||||||
pub user_id: Option<String>,
|
pub user_id: Option<String>,
|
||||||
pub secret: String,
|
pub secret: String,
|
||||||
|
|
|
@ -4,6 +4,7 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "attestation_challenge")]
|
#[sea_orm(table_name = "attestation_challenge")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(primary_key, auto_increment = false)]
|
#[sea_orm(primary_key, auto_increment = false)]
|
||||||
pub id: String,
|
pub id: String,
|
||||||
|
@ -11,7 +12,7 @@ pub struct Model {
|
||||||
pub user_id: String,
|
pub user_id: String,
|
||||||
pub challenge: String,
|
pub challenge: String,
|
||||||
#[sea_orm(column_name = "createdAt")]
|
#[sea_orm(column_name = "createdAt")]
|
||||||
pub created_at: DateTimeWithTimeZone,
|
pub created_at: DateTime,
|
||||||
#[sea_orm(column_name = "registrationChallenge")]
|
#[sea_orm(column_name = "registrationChallenge")]
|
||||||
pub registration_challenge: bool,
|
pub registration_challenge: bool,
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,11 +4,12 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "auth_session")]
|
#[sea_orm(table_name = "auth_session")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(primary_key, auto_increment = false)]
|
#[sea_orm(primary_key, auto_increment = false)]
|
||||||
pub id: String,
|
pub id: String,
|
||||||
#[sea_orm(column_name = "createdAt")]
|
#[sea_orm(column_name = "createdAt")]
|
||||||
pub created_at: DateTimeWithTimeZone,
|
pub created_at: DateTime,
|
||||||
pub token: String,
|
pub token: String,
|
||||||
#[sea_orm(column_name = "userId")]
|
#[sea_orm(column_name = "userId")]
|
||||||
pub user_id: Option<String>,
|
pub user_id: Option<String>,
|
||||||
|
|
|
@ -4,11 +4,12 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "blocking")]
|
#[sea_orm(table_name = "blocking")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(primary_key, auto_increment = false)]
|
#[sea_orm(primary_key, auto_increment = false)]
|
||||||
pub id: String,
|
pub id: String,
|
||||||
#[sea_orm(column_name = "createdAt")]
|
#[sea_orm(column_name = "createdAt")]
|
||||||
pub created_at: DateTimeWithTimeZone,
|
pub created_at: DateTime,
|
||||||
#[sea_orm(column_name = "blockeeId")]
|
#[sea_orm(column_name = "blockeeId")]
|
||||||
pub blockee_id: String,
|
pub blockee_id: String,
|
||||||
#[sea_orm(column_name = "blockerId")]
|
#[sea_orm(column_name = "blockerId")]
|
||||||
|
|
|
@ -4,13 +4,14 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "channel")]
|
#[sea_orm(table_name = "channel")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(primary_key, auto_increment = false)]
|
#[sea_orm(primary_key, auto_increment = false)]
|
||||||
pub id: String,
|
pub id: String,
|
||||||
#[sea_orm(column_name = "createdAt")]
|
#[sea_orm(column_name = "createdAt")]
|
||||||
pub created_at: DateTimeWithTimeZone,
|
pub created_at: DateTime,
|
||||||
#[sea_orm(column_name = "lastNotedAt")]
|
#[sea_orm(column_name = "lastNotedAt")]
|
||||||
pub last_noted_at: Option<DateTimeWithTimeZone>,
|
pub last_noted_at: Option<DateTime>,
|
||||||
#[sea_orm(column_name = "userId")]
|
#[sea_orm(column_name = "userId")]
|
||||||
pub user_id: Option<String>,
|
pub user_id: Option<String>,
|
||||||
pub name: String,
|
pub name: String,
|
||||||
|
|
|
@ -4,11 +4,12 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "channel_following")]
|
#[sea_orm(table_name = "channel_following")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(primary_key, auto_increment = false)]
|
#[sea_orm(primary_key, auto_increment = false)]
|
||||||
pub id: String,
|
pub id: String,
|
||||||
#[sea_orm(column_name = "createdAt")]
|
#[sea_orm(column_name = "createdAt")]
|
||||||
pub created_at: DateTimeWithTimeZone,
|
pub created_at: DateTime,
|
||||||
#[sea_orm(column_name = "followeeId")]
|
#[sea_orm(column_name = "followeeId")]
|
||||||
pub followee_id: String,
|
pub followee_id: String,
|
||||||
#[sea_orm(column_name = "followerId")]
|
#[sea_orm(column_name = "followerId")]
|
||||||
|
|
|
@ -4,11 +4,12 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "channel_note_pining")]
|
#[sea_orm(table_name = "channel_note_pining")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(primary_key, auto_increment = false)]
|
#[sea_orm(primary_key, auto_increment = false)]
|
||||||
pub id: String,
|
pub id: String,
|
||||||
#[sea_orm(column_name = "createdAt")]
|
#[sea_orm(column_name = "createdAt")]
|
||||||
pub created_at: DateTimeWithTimeZone,
|
pub created_at: DateTime,
|
||||||
#[sea_orm(column_name = "channelId")]
|
#[sea_orm(column_name = "channelId")]
|
||||||
pub channel_id: String,
|
pub channel_id: String,
|
||||||
#[sea_orm(column_name = "noteId")]
|
#[sea_orm(column_name = "noteId")]
|
||||||
|
|
|
@ -4,11 +4,12 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "clip")]
|
#[sea_orm(table_name = "clip")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(primary_key, auto_increment = false)]
|
#[sea_orm(primary_key, auto_increment = false)]
|
||||||
pub id: String,
|
pub id: String,
|
||||||
#[sea_orm(column_name = "createdAt")]
|
#[sea_orm(column_name = "createdAt")]
|
||||||
pub created_at: DateTimeWithTimeZone,
|
pub created_at: DateTime,
|
||||||
#[sea_orm(column_name = "userId")]
|
#[sea_orm(column_name = "userId")]
|
||||||
pub user_id: String,
|
pub user_id: String,
|
||||||
pub name: String,
|
pub name: String,
|
||||||
|
|
|
@ -4,6 +4,7 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "clip_note")]
|
#[sea_orm(table_name = "clip_note")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(primary_key, auto_increment = false)]
|
#[sea_orm(primary_key, auto_increment = false)]
|
||||||
pub id: String,
|
pub id: String,
|
||||||
|
|
|
@ -4,11 +4,12 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "drive_file")]
|
#[sea_orm(table_name = "drive_file")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(primary_key, auto_increment = false)]
|
#[sea_orm(primary_key, auto_increment = false)]
|
||||||
pub id: String,
|
pub id: String,
|
||||||
#[sea_orm(column_name = "createdAt")]
|
#[sea_orm(column_name = "createdAt")]
|
||||||
pub created_at: DateTimeWithTimeZone,
|
pub created_at: DateTime,
|
||||||
#[sea_orm(column_name = "userId")]
|
#[sea_orm(column_name = "userId")]
|
||||||
pub user_id: Option<String>,
|
pub user_id: Option<String>,
|
||||||
#[sea_orm(column_name = "userHost")]
|
#[sea_orm(column_name = "userHost")]
|
||||||
|
|
|
@ -4,11 +4,12 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "drive_folder")]
|
#[sea_orm(table_name = "drive_folder")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(primary_key, auto_increment = false)]
|
#[sea_orm(primary_key, auto_increment = false)]
|
||||||
pub id: String,
|
pub id: String,
|
||||||
#[sea_orm(column_name = "createdAt")]
|
#[sea_orm(column_name = "createdAt")]
|
||||||
pub created_at: DateTimeWithTimeZone,
|
pub created_at: DateTime,
|
||||||
pub name: String,
|
pub name: String,
|
||||||
#[sea_orm(column_name = "userId")]
|
#[sea_orm(column_name = "userId")]
|
||||||
pub user_id: Option<String>,
|
pub user_id: Option<String>,
|
||||||
|
|
|
@ -4,11 +4,12 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "emoji")]
|
#[sea_orm(table_name = "emoji")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(primary_key, auto_increment = false)]
|
#[sea_orm(primary_key, auto_increment = false)]
|
||||||
pub id: String,
|
pub id: String,
|
||||||
#[sea_orm(column_name = "updatedAt")]
|
#[sea_orm(column_name = "updatedAt")]
|
||||||
pub updated_at: Option<DateTimeWithTimeZone>,
|
pub updated_at: Option<DateTime>,
|
||||||
pub name: String,
|
pub name: String,
|
||||||
pub host: Option<String>,
|
pub host: Option<String>,
|
||||||
#[sea_orm(column_name = "originalUrl")]
|
#[sea_orm(column_name = "originalUrl")]
|
||||||
|
|
|
@ -4,11 +4,12 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "follow_request")]
|
#[sea_orm(table_name = "follow_request")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(primary_key, auto_increment = false)]
|
#[sea_orm(primary_key, auto_increment = false)]
|
||||||
pub id: String,
|
pub id: String,
|
||||||
#[sea_orm(column_name = "createdAt")]
|
#[sea_orm(column_name = "createdAt")]
|
||||||
pub created_at: DateTimeWithTimeZone,
|
pub created_at: DateTime,
|
||||||
#[sea_orm(column_name = "followeeId")]
|
#[sea_orm(column_name = "followeeId")]
|
||||||
pub followee_id: String,
|
pub followee_id: String,
|
||||||
#[sea_orm(column_name = "followerId")]
|
#[sea_orm(column_name = "followerId")]
|
||||||
|
|
|
@ -4,11 +4,12 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "following")]
|
#[sea_orm(table_name = "following")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(primary_key, auto_increment = false)]
|
#[sea_orm(primary_key, auto_increment = false)]
|
||||||
pub id: String,
|
pub id: String,
|
||||||
#[sea_orm(column_name = "createdAt")]
|
#[sea_orm(column_name = "createdAt")]
|
||||||
pub created_at: DateTimeWithTimeZone,
|
pub created_at: DateTime,
|
||||||
#[sea_orm(column_name = "followeeId")]
|
#[sea_orm(column_name = "followeeId")]
|
||||||
pub followee_id: String,
|
pub followee_id: String,
|
||||||
#[sea_orm(column_name = "followerId")]
|
#[sea_orm(column_name = "followerId")]
|
||||||
|
|
|
@ -4,11 +4,12 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "gallery_like")]
|
#[sea_orm(table_name = "gallery_like")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(primary_key, auto_increment = false)]
|
#[sea_orm(primary_key, auto_increment = false)]
|
||||||
pub id: String,
|
pub id: String,
|
||||||
#[sea_orm(column_name = "createdAt")]
|
#[sea_orm(column_name = "createdAt")]
|
||||||
pub created_at: DateTimeWithTimeZone,
|
pub created_at: DateTime,
|
||||||
#[sea_orm(column_name = "userId")]
|
#[sea_orm(column_name = "userId")]
|
||||||
pub user_id: String,
|
pub user_id: String,
|
||||||
#[sea_orm(column_name = "postId")]
|
#[sea_orm(column_name = "postId")]
|
||||||
|
|
|
@ -4,13 +4,14 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "gallery_post")]
|
#[sea_orm(table_name = "gallery_post")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(primary_key, auto_increment = false)]
|
#[sea_orm(primary_key, auto_increment = false)]
|
||||||
pub id: String,
|
pub id: String,
|
||||||
#[sea_orm(column_name = "createdAt")]
|
#[sea_orm(column_name = "createdAt")]
|
||||||
pub created_at: DateTimeWithTimeZone,
|
pub created_at: DateTime,
|
||||||
#[sea_orm(column_name = "updatedAt")]
|
#[sea_orm(column_name = "updatedAt")]
|
||||||
pub updated_at: DateTimeWithTimeZone,
|
pub updated_at: DateTime,
|
||||||
pub title: String,
|
pub title: String,
|
||||||
pub description: Option<String>,
|
pub description: Option<String>,
|
||||||
#[sea_orm(column_name = "userId")]
|
#[sea_orm(column_name = "userId")]
|
||||||
|
|
|
@ -4,6 +4,7 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "hashtag")]
|
#[sea_orm(table_name = "hashtag")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(primary_key, auto_increment = false)]
|
#[sea_orm(primary_key, auto_increment = false)]
|
||||||
pub id: String,
|
pub id: String,
|
||||||
|
|
|
@ -4,11 +4,12 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "instance")]
|
#[sea_orm(table_name = "instance")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(primary_key, auto_increment = false)]
|
#[sea_orm(primary_key, auto_increment = false)]
|
||||||
pub id: String,
|
pub id: String,
|
||||||
#[sea_orm(column_name = "caughtAt")]
|
#[sea_orm(column_name = "caughtAt")]
|
||||||
pub caught_at: DateTimeWithTimeZone,
|
pub caught_at: DateTime,
|
||||||
pub host: String,
|
pub host: String,
|
||||||
#[sea_orm(column_name = "usersCount")]
|
#[sea_orm(column_name = "usersCount")]
|
||||||
pub users_count: i32,
|
pub users_count: i32,
|
||||||
|
@ -19,13 +20,13 @@ pub struct Model {
|
||||||
#[sea_orm(column_name = "followersCount")]
|
#[sea_orm(column_name = "followersCount")]
|
||||||
pub followers_count: i32,
|
pub followers_count: i32,
|
||||||
#[sea_orm(column_name = "latestRequestSentAt")]
|
#[sea_orm(column_name = "latestRequestSentAt")]
|
||||||
pub latest_request_sent_at: Option<DateTimeWithTimeZone>,
|
pub latest_request_sent_at: Option<DateTime>,
|
||||||
#[sea_orm(column_name = "latestStatus")]
|
#[sea_orm(column_name = "latestStatus")]
|
||||||
pub latest_status: Option<i32>,
|
pub latest_status: Option<i32>,
|
||||||
#[sea_orm(column_name = "latestRequestReceivedAt")]
|
#[sea_orm(column_name = "latestRequestReceivedAt")]
|
||||||
pub latest_request_received_at: Option<DateTimeWithTimeZone>,
|
pub latest_request_received_at: Option<DateTime>,
|
||||||
#[sea_orm(column_name = "lastCommunicatedAt")]
|
#[sea_orm(column_name = "lastCommunicatedAt")]
|
||||||
pub last_communicated_at: DateTimeWithTimeZone,
|
pub last_communicated_at: DateTime,
|
||||||
#[sea_orm(column_name = "isNotResponding")]
|
#[sea_orm(column_name = "isNotResponding")]
|
||||||
pub is_not_responding: bool,
|
pub is_not_responding: bool,
|
||||||
#[sea_orm(column_name = "softwareName")]
|
#[sea_orm(column_name = "softwareName")]
|
||||||
|
@ -41,7 +42,7 @@ pub struct Model {
|
||||||
#[sea_orm(column_name = "maintainerEmail")]
|
#[sea_orm(column_name = "maintainerEmail")]
|
||||||
pub maintainer_email: Option<String>,
|
pub maintainer_email: Option<String>,
|
||||||
#[sea_orm(column_name = "infoUpdatedAt")]
|
#[sea_orm(column_name = "infoUpdatedAt")]
|
||||||
pub info_updated_at: Option<DateTimeWithTimeZone>,
|
pub info_updated_at: Option<DateTime>,
|
||||||
#[sea_orm(column_name = "isSuspended")]
|
#[sea_orm(column_name = "isSuspended")]
|
||||||
pub is_suspended: bool,
|
pub is_suspended: bool,
|
||||||
#[sea_orm(column_name = "iconUrl")]
|
#[sea_orm(column_name = "iconUrl")]
|
||||||
|
|
|
@ -4,11 +4,12 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "messaging_message")]
|
#[sea_orm(table_name = "messaging_message")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(primary_key, auto_increment = false)]
|
#[sea_orm(primary_key, auto_increment = false)]
|
||||||
pub id: String,
|
pub id: String,
|
||||||
#[sea_orm(column_name = "createdAt")]
|
#[sea_orm(column_name = "createdAt")]
|
||||||
pub created_at: DateTimeWithTimeZone,
|
pub created_at: DateTime,
|
||||||
#[sea_orm(column_name = "userId")]
|
#[sea_orm(column_name = "userId")]
|
||||||
pub user_id: String,
|
pub user_id: String,
|
||||||
#[sea_orm(column_name = "recipientId")]
|
#[sea_orm(column_name = "recipientId")]
|
||||||
|
|
|
@ -6,6 +6,7 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "meta")]
|
#[sea_orm(table_name = "meta")]
|
||||||
|
#[napi_derive::napi(object, js_name = "Meta")]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(primary_key, auto_increment = false)]
|
#[sea_orm(primary_key, auto_increment = false)]
|
||||||
pub id: String,
|
pub id: String,
|
||||||
|
|
|
@ -4,6 +4,7 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "migrations")]
|
#[sea_orm(table_name = "migrations")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(primary_key)]
|
#[sea_orm(primary_key)]
|
||||||
pub id: i32,
|
pub id: i32,
|
||||||
|
|
|
@ -4,11 +4,12 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "moderation_log")]
|
#[sea_orm(table_name = "moderation_log")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(primary_key, auto_increment = false)]
|
#[sea_orm(primary_key, auto_increment = false)]
|
||||||
pub id: String,
|
pub id: String,
|
||||||
#[sea_orm(column_name = "createdAt")]
|
#[sea_orm(column_name = "createdAt")]
|
||||||
pub created_at: DateTimeWithTimeZone,
|
pub created_at: DateTime,
|
||||||
#[sea_orm(column_name = "userId")]
|
#[sea_orm(column_name = "userId")]
|
||||||
pub user_id: String,
|
pub user_id: String,
|
||||||
pub r#type: String,
|
pub r#type: String,
|
||||||
|
|
|
@ -5,6 +5,7 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "muted_note")]
|
#[sea_orm(table_name = "muted_note")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(primary_key, auto_increment = false)]
|
#[sea_orm(primary_key, auto_increment = false)]
|
||||||
pub id: String,
|
pub id: String,
|
||||||
|
|
|
@ -4,17 +4,18 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "muting")]
|
#[sea_orm(table_name = "muting")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(primary_key, auto_increment = false)]
|
#[sea_orm(primary_key, auto_increment = false)]
|
||||||
pub id: String,
|
pub id: String,
|
||||||
#[sea_orm(column_name = "createdAt")]
|
#[sea_orm(column_name = "createdAt")]
|
||||||
pub created_at: DateTimeWithTimeZone,
|
pub created_at: DateTime,
|
||||||
#[sea_orm(column_name = "muteeId")]
|
#[sea_orm(column_name = "muteeId")]
|
||||||
pub mutee_id: String,
|
pub mutee_id: String,
|
||||||
#[sea_orm(column_name = "muterId")]
|
#[sea_orm(column_name = "muterId")]
|
||||||
pub muter_id: String,
|
pub muter_id: String,
|
||||||
#[sea_orm(column_name = "expiresAt")]
|
#[sea_orm(column_name = "expiresAt")]
|
||||||
pub expires_at: Option<DateTimeWithTimeZone>,
|
pub expires_at: Option<DateTime>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
|
#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
|
||||||
|
|
|
@ -5,11 +5,12 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "note")]
|
#[sea_orm(table_name = "note")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(primary_key, auto_increment = false)]
|
#[sea_orm(primary_key, auto_increment = false)]
|
||||||
pub id: String,
|
pub id: String,
|
||||||
#[sea_orm(column_name = "createdAt")]
|
#[sea_orm(column_name = "createdAt")]
|
||||||
pub created_at: DateTimeWithTimeZone,
|
pub created_at: DateTime,
|
||||||
#[sea_orm(column_name = "replyId")]
|
#[sea_orm(column_name = "replyId")]
|
||||||
pub reply_id: Option<String>,
|
pub reply_id: Option<String>,
|
||||||
#[sea_orm(column_name = "renoteId")]
|
#[sea_orm(column_name = "renoteId")]
|
||||||
|
@ -60,7 +61,7 @@ pub struct Model {
|
||||||
#[sea_orm(column_name = "threadId")]
|
#[sea_orm(column_name = "threadId")]
|
||||||
pub thread_id: Option<String>,
|
pub thread_id: Option<String>,
|
||||||
#[sea_orm(column_name = "updatedAt")]
|
#[sea_orm(column_name = "updatedAt")]
|
||||||
pub updated_at: Option<DateTimeWithTimeZone>,
|
pub updated_at: Option<DateTime>,
|
||||||
pub lang: Option<String>,
|
pub lang: Option<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "note_edit")]
|
#[sea_orm(table_name = "note_edit")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(primary_key, auto_increment = false)]
|
#[sea_orm(primary_key, auto_increment = false)]
|
||||||
pub id: String,
|
pub id: String,
|
||||||
|
@ -15,7 +16,7 @@ pub struct Model {
|
||||||
#[sea_orm(column_name = "fileIds")]
|
#[sea_orm(column_name = "fileIds")]
|
||||||
pub file_ids: Vec<String>,
|
pub file_ids: Vec<String>,
|
||||||
#[sea_orm(column_name = "updatedAt")]
|
#[sea_orm(column_name = "updatedAt")]
|
||||||
pub updated_at: DateTimeWithTimeZone,
|
pub updated_at: DateTime,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
|
#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
|
||||||
|
|
|
@ -4,11 +4,12 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "note_favorite")]
|
#[sea_orm(table_name = "note_favorite")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(primary_key, auto_increment = false)]
|
#[sea_orm(primary_key, auto_increment = false)]
|
||||||
pub id: String,
|
pub id: String,
|
||||||
#[sea_orm(column_name = "createdAt")]
|
#[sea_orm(column_name = "createdAt")]
|
||||||
pub created_at: DateTimeWithTimeZone,
|
pub created_at: DateTime,
|
||||||
#[sea_orm(column_name = "userId")]
|
#[sea_orm(column_name = "userId")]
|
||||||
pub user_id: String,
|
pub user_id: String,
|
||||||
#[sea_orm(column_name = "noteId")]
|
#[sea_orm(column_name = "noteId")]
|
||||||
|
|
|
@ -4,11 +4,12 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "note_reaction")]
|
#[sea_orm(table_name = "note_reaction")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(primary_key, auto_increment = false)]
|
#[sea_orm(primary_key, auto_increment = false)]
|
||||||
pub id: String,
|
pub id: String,
|
||||||
#[sea_orm(column_name = "createdAt")]
|
#[sea_orm(column_name = "createdAt")]
|
||||||
pub created_at: DateTimeWithTimeZone,
|
pub created_at: DateTime,
|
||||||
#[sea_orm(column_name = "userId")]
|
#[sea_orm(column_name = "userId")]
|
||||||
pub user_id: String,
|
pub user_id: String,
|
||||||
#[sea_orm(column_name = "noteId")]
|
#[sea_orm(column_name = "noteId")]
|
||||||
|
|
|
@ -4,11 +4,12 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "note_thread_muting")]
|
#[sea_orm(table_name = "note_thread_muting")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(primary_key, auto_increment = false)]
|
#[sea_orm(primary_key, auto_increment = false)]
|
||||||
pub id: String,
|
pub id: String,
|
||||||
#[sea_orm(column_name = "createdAt")]
|
#[sea_orm(column_name = "createdAt")]
|
||||||
pub created_at: DateTimeWithTimeZone,
|
pub created_at: DateTime,
|
||||||
#[sea_orm(column_name = "userId")]
|
#[sea_orm(column_name = "userId")]
|
||||||
pub user_id: String,
|
pub user_id: String,
|
||||||
#[sea_orm(column_name = "threadId")]
|
#[sea_orm(column_name = "threadId")]
|
||||||
|
|
|
@ -4,6 +4,7 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "note_unread")]
|
#[sea_orm(table_name = "note_unread")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(primary_key, auto_increment = false)]
|
#[sea_orm(primary_key, auto_increment = false)]
|
||||||
pub id: String,
|
pub id: String,
|
||||||
|
|
|
@ -4,11 +4,12 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "note_watching")]
|
#[sea_orm(table_name = "note_watching")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(primary_key, auto_increment = false)]
|
#[sea_orm(primary_key, auto_increment = false)]
|
||||||
pub id: String,
|
pub id: String,
|
||||||
#[sea_orm(column_name = "createdAt")]
|
#[sea_orm(column_name = "createdAt")]
|
||||||
pub created_at: DateTimeWithTimeZone,
|
pub created_at: DateTime,
|
||||||
#[sea_orm(column_name = "userId")]
|
#[sea_orm(column_name = "userId")]
|
||||||
pub user_id: String,
|
pub user_id: String,
|
||||||
#[sea_orm(column_name = "noteId")]
|
#[sea_orm(column_name = "noteId")]
|
||||||
|
|
|
@ -5,11 +5,12 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "notification")]
|
#[sea_orm(table_name = "notification")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(primary_key, auto_increment = false)]
|
#[sea_orm(primary_key, auto_increment = false)]
|
||||||
pub id: String,
|
pub id: String,
|
||||||
#[sea_orm(column_name = "createdAt")]
|
#[sea_orm(column_name = "createdAt")]
|
||||||
pub created_at: DateTimeWithTimeZone,
|
pub created_at: DateTime,
|
||||||
#[sea_orm(column_name = "notifieeId")]
|
#[sea_orm(column_name = "notifieeId")]
|
||||||
pub notifiee_id: String,
|
pub notifiee_id: String,
|
||||||
#[sea_orm(column_name = "notifierId")]
|
#[sea_orm(column_name = "notifierId")]
|
||||||
|
|
|
@ -5,13 +5,14 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "page")]
|
#[sea_orm(table_name = "page")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(primary_key, auto_increment = false)]
|
#[sea_orm(primary_key, auto_increment = false)]
|
||||||
pub id: String,
|
pub id: String,
|
||||||
#[sea_orm(column_name = "createdAt")]
|
#[sea_orm(column_name = "createdAt")]
|
||||||
pub created_at: DateTimeWithTimeZone,
|
pub created_at: DateTime,
|
||||||
#[sea_orm(column_name = "updatedAt")]
|
#[sea_orm(column_name = "updatedAt")]
|
||||||
pub updated_at: DateTimeWithTimeZone,
|
pub updated_at: DateTime,
|
||||||
pub title: String,
|
pub title: String,
|
||||||
pub name: String,
|
pub name: String,
|
||||||
pub summary: Option<String>,
|
pub summary: Option<String>,
|
||||||
|
|
|
@ -4,11 +4,12 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "page_like")]
|
#[sea_orm(table_name = "page_like")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(primary_key, auto_increment = false)]
|
#[sea_orm(primary_key, auto_increment = false)]
|
||||||
pub id: String,
|
pub id: String,
|
||||||
#[sea_orm(column_name = "createdAt")]
|
#[sea_orm(column_name = "createdAt")]
|
||||||
pub created_at: DateTimeWithTimeZone,
|
pub created_at: DateTime,
|
||||||
#[sea_orm(column_name = "userId")]
|
#[sea_orm(column_name = "userId")]
|
||||||
pub user_id: String,
|
pub user_id: String,
|
||||||
#[sea_orm(column_name = "pageId")]
|
#[sea_orm(column_name = "pageId")]
|
||||||
|
|
|
@ -4,11 +4,12 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "password_reset_request")]
|
#[sea_orm(table_name = "password_reset_request")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(primary_key, auto_increment = false)]
|
#[sea_orm(primary_key, auto_increment = false)]
|
||||||
pub id: String,
|
pub id: String,
|
||||||
#[sea_orm(column_name = "createdAt")]
|
#[sea_orm(column_name = "createdAt")]
|
||||||
pub created_at: DateTimeWithTimeZone,
|
pub created_at: DateTime,
|
||||||
pub token: String,
|
pub token: String,
|
||||||
#[sea_orm(column_name = "userId")]
|
#[sea_orm(column_name = "userId")]
|
||||||
pub user_id: String,
|
pub user_id: String,
|
||||||
|
|
|
@ -5,11 +5,12 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "poll")]
|
#[sea_orm(table_name = "poll")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(column_name = "noteId", primary_key, auto_increment = false, unique)]
|
#[sea_orm(column_name = "noteId", primary_key, auto_increment = false, unique)]
|
||||||
pub note_id: String,
|
pub note_id: String,
|
||||||
#[sea_orm(column_name = "expiresAt")]
|
#[sea_orm(column_name = "expiresAt")]
|
||||||
pub expires_at: Option<DateTimeWithTimeZone>,
|
pub expires_at: Option<DateTime>,
|
||||||
pub multiple: bool,
|
pub multiple: bool,
|
||||||
pub choices: Vec<String>,
|
pub choices: Vec<String>,
|
||||||
pub votes: Vec<i32>,
|
pub votes: Vec<i32>,
|
||||||
|
|
|
@ -4,11 +4,12 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "poll_vote")]
|
#[sea_orm(table_name = "poll_vote")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(primary_key, auto_increment = false)]
|
#[sea_orm(primary_key, auto_increment = false)]
|
||||||
pub id: String,
|
pub id: String,
|
||||||
#[sea_orm(column_name = "createdAt")]
|
#[sea_orm(column_name = "createdAt")]
|
||||||
pub created_at: DateTimeWithTimeZone,
|
pub created_at: DateTime,
|
||||||
#[sea_orm(column_name = "userId")]
|
#[sea_orm(column_name = "userId")]
|
||||||
pub user_id: String,
|
pub user_id: String,
|
||||||
#[sea_orm(column_name = "noteId")]
|
#[sea_orm(column_name = "noteId")]
|
||||||
|
|
|
@ -4,11 +4,12 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "promo_note")]
|
#[sea_orm(table_name = "promo_note")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(column_name = "noteId", primary_key, auto_increment = false, unique)]
|
#[sea_orm(column_name = "noteId", primary_key, auto_increment = false, unique)]
|
||||||
pub note_id: String,
|
pub note_id: String,
|
||||||
#[sea_orm(column_name = "expiresAt")]
|
#[sea_orm(column_name = "expiresAt")]
|
||||||
pub expires_at: DateTimeWithTimeZone,
|
pub expires_at: DateTime,
|
||||||
#[sea_orm(column_name = "userId")]
|
#[sea_orm(column_name = "userId")]
|
||||||
pub user_id: String,
|
pub user_id: String,
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,11 +4,12 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "promo_read")]
|
#[sea_orm(table_name = "promo_read")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(primary_key, auto_increment = false)]
|
#[sea_orm(primary_key, auto_increment = false)]
|
||||||
pub id: String,
|
pub id: String,
|
||||||
#[sea_orm(column_name = "createdAt")]
|
#[sea_orm(column_name = "createdAt")]
|
||||||
pub created_at: DateTimeWithTimeZone,
|
pub created_at: DateTime,
|
||||||
#[sea_orm(column_name = "userId")]
|
#[sea_orm(column_name = "userId")]
|
||||||
pub user_id: String,
|
pub user_id: String,
|
||||||
#[sea_orm(column_name = "noteId")]
|
#[sea_orm(column_name = "noteId")]
|
||||||
|
|
|
@ -4,11 +4,12 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "registration_ticket")]
|
#[sea_orm(table_name = "registration_ticket")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(primary_key, auto_increment = false)]
|
#[sea_orm(primary_key, auto_increment = false)]
|
||||||
pub id: String,
|
pub id: String,
|
||||||
#[sea_orm(column_name = "createdAt")]
|
#[sea_orm(column_name = "createdAt")]
|
||||||
pub created_at: DateTimeWithTimeZone,
|
pub created_at: DateTime,
|
||||||
pub code: String,
|
pub code: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4,13 +4,14 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "registry_item")]
|
#[sea_orm(table_name = "registry_item")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(primary_key, auto_increment = false)]
|
#[sea_orm(primary_key, auto_increment = false)]
|
||||||
pub id: String,
|
pub id: String,
|
||||||
#[sea_orm(column_name = "createdAt")]
|
#[sea_orm(column_name = "createdAt")]
|
||||||
pub created_at: DateTimeWithTimeZone,
|
pub created_at: DateTime,
|
||||||
#[sea_orm(column_name = "updatedAt")]
|
#[sea_orm(column_name = "updatedAt")]
|
||||||
pub updated_at: DateTimeWithTimeZone,
|
pub updated_at: DateTime,
|
||||||
#[sea_orm(column_name = "userId")]
|
#[sea_orm(column_name = "userId")]
|
||||||
pub user_id: String,
|
pub user_id: String,
|
||||||
pub key: String,
|
pub key: String,
|
||||||
|
|
|
@ -5,6 +5,7 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "relay")]
|
#[sea_orm(table_name = "relay")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(primary_key, auto_increment = false)]
|
#[sea_orm(primary_key, auto_increment = false)]
|
||||||
pub id: String,
|
pub id: String,
|
||||||
|
|
|
@ -4,11 +4,12 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "renote_muting")]
|
#[sea_orm(table_name = "renote_muting")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(primary_key, auto_increment = false)]
|
#[sea_orm(primary_key, auto_increment = false)]
|
||||||
pub id: String,
|
pub id: String,
|
||||||
#[sea_orm(column_name = "createdAt")]
|
#[sea_orm(column_name = "createdAt")]
|
||||||
pub created_at: DateTimeWithTimeZone,
|
pub created_at: DateTime,
|
||||||
#[sea_orm(column_name = "muteeId")]
|
#[sea_orm(column_name = "muteeId")]
|
||||||
pub mutee_id: String,
|
pub mutee_id: String,
|
||||||
#[sea_orm(column_name = "muterId")]
|
#[sea_orm(column_name = "muterId")]
|
||||||
|
|
|
@ -4,11 +4,12 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "reply_muting")]
|
#[sea_orm(table_name = "reply_muting")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(primary_key, auto_increment = false)]
|
#[sea_orm(primary_key, auto_increment = false)]
|
||||||
pub id: String,
|
pub id: String,
|
||||||
#[sea_orm(column_name = "createdAt")]
|
#[sea_orm(column_name = "createdAt")]
|
||||||
pub created_at: DateTimeWithTimeZone,
|
pub created_at: DateTime,
|
||||||
#[sea_orm(column_name = "muteeId")]
|
#[sea_orm(column_name = "muteeId")]
|
||||||
pub mutee_id: String,
|
pub mutee_id: String,
|
||||||
#[sea_orm(column_name = "muterId")]
|
#[sea_orm(column_name = "muterId")]
|
||||||
|
|
|
@ -2,7 +2,8 @@
|
||||||
|
|
||||||
use sea_orm::entity::prelude::*;
|
use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Debug, Clone, PartialEq, Eq, EnumIter, DeriveActiveEnum)]
|
#[derive(Debug, PartialEq, Eq, EnumIter, DeriveActiveEnum)]
|
||||||
|
#[napi_derive::napi]
|
||||||
#[sea_orm(rs_type = "String", db_type = "Enum", enum_name = "antenna_src_enum")]
|
#[sea_orm(rs_type = "String", db_type = "Enum", enum_name = "antenna_src_enum")]
|
||||||
pub enum AntennaSrcEnum {
|
pub enum AntennaSrcEnum {
|
||||||
#[sea_orm(string_value = "all")]
|
#[sea_orm(string_value = "all")]
|
||||||
|
@ -18,7 +19,8 @@ pub enum AntennaSrcEnum {
|
||||||
#[sea_orm(string_value = "users")]
|
#[sea_orm(string_value = "users")]
|
||||||
Users,
|
Users,
|
||||||
}
|
}
|
||||||
#[derive(Debug, Clone, PartialEq, Eq, EnumIter, DeriveActiveEnum)]
|
#[derive(Debug, PartialEq, Eq, EnumIter, DeriveActiveEnum)]
|
||||||
|
#[napi_derive::napi]
|
||||||
#[sea_orm(
|
#[sea_orm(
|
||||||
rs_type = "String",
|
rs_type = "String",
|
||||||
db_type = "Enum",
|
db_type = "Enum",
|
||||||
|
@ -34,7 +36,8 @@ pub enum MetaSensitivemediadetectionEnum {
|
||||||
#[sea_orm(string_value = "remote")]
|
#[sea_orm(string_value = "remote")]
|
||||||
Remote,
|
Remote,
|
||||||
}
|
}
|
||||||
#[derive(Debug, Clone, PartialEq, Eq, EnumIter, DeriveActiveEnum)]
|
#[derive(Debug, PartialEq, Eq, EnumIter, DeriveActiveEnum)]
|
||||||
|
#[napi_derive::napi]
|
||||||
#[sea_orm(
|
#[sea_orm(
|
||||||
rs_type = "String",
|
rs_type = "String",
|
||||||
db_type = "Enum",
|
db_type = "Enum",
|
||||||
|
@ -52,7 +55,8 @@ pub enum MetaSensitivemediadetectionsensitivityEnum {
|
||||||
#[sea_orm(string_value = "veryLow")]
|
#[sea_orm(string_value = "veryLow")]
|
||||||
VeryLow,
|
VeryLow,
|
||||||
}
|
}
|
||||||
#[derive(Debug, Clone, PartialEq, Eq, EnumIter, DeriveActiveEnum)]
|
#[derive(Debug, PartialEq, Eq, EnumIter, DeriveActiveEnum)]
|
||||||
|
#[napi_derive::napi]
|
||||||
#[sea_orm(
|
#[sea_orm(
|
||||||
rs_type = "String",
|
rs_type = "String",
|
||||||
db_type = "Enum",
|
db_type = "Enum",
|
||||||
|
@ -68,7 +72,8 @@ pub enum MutedNoteReasonEnum {
|
||||||
#[sea_orm(string_value = "word")]
|
#[sea_orm(string_value = "word")]
|
||||||
Word,
|
Word,
|
||||||
}
|
}
|
||||||
#[derive(Debug, Clone, PartialEq, Eq, EnumIter, DeriveActiveEnum)]
|
#[derive(Debug, PartialEq, Eq, EnumIter, DeriveActiveEnum)]
|
||||||
|
#[napi_derive::napi]
|
||||||
#[sea_orm(
|
#[sea_orm(
|
||||||
rs_type = "String",
|
rs_type = "String",
|
||||||
db_type = "Enum",
|
db_type = "Enum",
|
||||||
|
@ -86,7 +91,8 @@ pub enum NoteVisibilityEnum {
|
||||||
#[sea_orm(string_value = "specified")]
|
#[sea_orm(string_value = "specified")]
|
||||||
Specified,
|
Specified,
|
||||||
}
|
}
|
||||||
#[derive(Debug, Clone, PartialEq, Eq, EnumIter, DeriveActiveEnum)]
|
#[derive(Debug, PartialEq, Eq, EnumIter, DeriveActiveEnum)]
|
||||||
|
#[napi_derive::napi]
|
||||||
#[sea_orm(
|
#[sea_orm(
|
||||||
rs_type = "String",
|
rs_type = "String",
|
||||||
db_type = "Enum",
|
db_type = "Enum",
|
||||||
|
@ -118,7 +124,8 @@ pub enum NotificationTypeEnum {
|
||||||
#[sea_orm(string_value = "reply")]
|
#[sea_orm(string_value = "reply")]
|
||||||
Reply,
|
Reply,
|
||||||
}
|
}
|
||||||
#[derive(Debug, Clone, PartialEq, Eq, EnumIter, DeriveActiveEnum)]
|
#[derive(Debug, PartialEq, Eq, EnumIter, DeriveActiveEnum)]
|
||||||
|
#[napi_derive::napi]
|
||||||
#[sea_orm(
|
#[sea_orm(
|
||||||
rs_type = "String",
|
rs_type = "String",
|
||||||
db_type = "Enum",
|
db_type = "Enum",
|
||||||
|
@ -132,7 +139,8 @@ pub enum PageVisibilityEnum {
|
||||||
#[sea_orm(string_value = "specified")]
|
#[sea_orm(string_value = "specified")]
|
||||||
Specified,
|
Specified,
|
||||||
}
|
}
|
||||||
#[derive(Debug, Clone, PartialEq, Eq, EnumIter, DeriveActiveEnum)]
|
#[derive(Debug, PartialEq, Eq, EnumIter, DeriveActiveEnum)]
|
||||||
|
#[napi_derive::napi]
|
||||||
#[sea_orm(
|
#[sea_orm(
|
||||||
rs_type = "String",
|
rs_type = "String",
|
||||||
db_type = "Enum",
|
db_type = "Enum",
|
||||||
|
@ -148,7 +156,8 @@ pub enum PollNotevisibilityEnum {
|
||||||
#[sea_orm(string_value = "specified")]
|
#[sea_orm(string_value = "specified")]
|
||||||
Specified,
|
Specified,
|
||||||
}
|
}
|
||||||
#[derive(Debug, Clone, PartialEq, Eq, EnumIter, DeriveActiveEnum)]
|
#[derive(Debug, PartialEq, Eq, EnumIter, DeriveActiveEnum)]
|
||||||
|
#[napi_derive::napi]
|
||||||
#[sea_orm(rs_type = "String", db_type = "Enum", enum_name = "relay_status_enum")]
|
#[sea_orm(rs_type = "String", db_type = "Enum", enum_name = "relay_status_enum")]
|
||||||
pub enum RelayStatusEnum {
|
pub enum RelayStatusEnum {
|
||||||
#[sea_orm(string_value = "accepted")]
|
#[sea_orm(string_value = "accepted")]
|
||||||
|
@ -158,7 +167,8 @@ pub enum RelayStatusEnum {
|
||||||
#[sea_orm(string_value = "requesting")]
|
#[sea_orm(string_value = "requesting")]
|
||||||
Requesting,
|
Requesting,
|
||||||
}
|
}
|
||||||
#[derive(Debug, Clone, PartialEq, Eq, EnumIter, DeriveActiveEnum)]
|
#[derive(Debug, PartialEq, Eq, EnumIter, DeriveActiveEnum)]
|
||||||
|
#[napi_derive::napi]
|
||||||
#[sea_orm(
|
#[sea_orm(
|
||||||
rs_type = "String",
|
rs_type = "String",
|
||||||
db_type = "Enum",
|
db_type = "Enum",
|
||||||
|
@ -174,7 +184,8 @@ pub enum UserEmojimodpermEnum {
|
||||||
#[sea_orm(string_value = "unauthorized")]
|
#[sea_orm(string_value = "unauthorized")]
|
||||||
Unauthorized,
|
Unauthorized,
|
||||||
}
|
}
|
||||||
#[derive(Debug, Clone, PartialEq, Eq, EnumIter, DeriveActiveEnum)]
|
#[derive(Debug, PartialEq, Eq, EnumIter, DeriveActiveEnum)]
|
||||||
|
#[napi_derive::napi]
|
||||||
#[sea_orm(
|
#[sea_orm(
|
||||||
rs_type = "String",
|
rs_type = "String",
|
||||||
db_type = "Enum",
|
db_type = "Enum",
|
||||||
|
@ -188,7 +199,8 @@ pub enum UserProfileFfvisibilityEnum {
|
||||||
#[sea_orm(string_value = "public")]
|
#[sea_orm(string_value = "public")]
|
||||||
Public,
|
Public,
|
||||||
}
|
}
|
||||||
#[derive(Debug, Clone, PartialEq, Eq, EnumIter, DeriveActiveEnum)]
|
#[derive(Debug, PartialEq, Eq, EnumIter, DeriveActiveEnum)]
|
||||||
|
#[napi_derive::napi]
|
||||||
#[sea_orm(
|
#[sea_orm(
|
||||||
rs_type = "String",
|
rs_type = "String",
|
||||||
db_type = "Enum",
|
db_type = "Enum",
|
||||||
|
|
|
@ -4,11 +4,12 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "signin")]
|
#[sea_orm(table_name = "signin")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(primary_key, auto_increment = false)]
|
#[sea_orm(primary_key, auto_increment = false)]
|
||||||
pub id: String,
|
pub id: String,
|
||||||
#[sea_orm(column_name = "createdAt")]
|
#[sea_orm(column_name = "createdAt")]
|
||||||
pub created_at: DateTimeWithTimeZone,
|
pub created_at: DateTime,
|
||||||
#[sea_orm(column_name = "userId")]
|
#[sea_orm(column_name = "userId")]
|
||||||
pub user_id: String,
|
pub user_id: String,
|
||||||
pub ip: String,
|
pub ip: String,
|
||||||
|
|
|
@ -4,11 +4,12 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "sw_subscription")]
|
#[sea_orm(table_name = "sw_subscription")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(primary_key, auto_increment = false)]
|
#[sea_orm(primary_key, auto_increment = false)]
|
||||||
pub id: String,
|
pub id: String,
|
||||||
#[sea_orm(column_name = "createdAt")]
|
#[sea_orm(column_name = "createdAt")]
|
||||||
pub created_at: DateTimeWithTimeZone,
|
pub created_at: DateTime,
|
||||||
#[sea_orm(column_name = "userId")]
|
#[sea_orm(column_name = "userId")]
|
||||||
pub user_id: String,
|
pub user_id: String,
|
||||||
pub endpoint: String,
|
pub endpoint: String,
|
||||||
|
|
|
@ -4,11 +4,12 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "used_username")]
|
#[sea_orm(table_name = "used_username")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(primary_key, auto_increment = false)]
|
#[sea_orm(primary_key, auto_increment = false)]
|
||||||
pub username: String,
|
pub username: String,
|
||||||
#[sea_orm(column_name = "createdAt")]
|
#[sea_orm(column_name = "createdAt")]
|
||||||
pub created_at: DateTimeWithTimeZone,
|
pub created_at: DateTime,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
|
#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
|
||||||
|
|
|
@ -5,15 +5,16 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "user")]
|
#[sea_orm(table_name = "user")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(primary_key, auto_increment = false)]
|
#[sea_orm(primary_key, auto_increment = false)]
|
||||||
pub id: String,
|
pub id: String,
|
||||||
#[sea_orm(column_name = "createdAt")]
|
#[sea_orm(column_name = "createdAt")]
|
||||||
pub created_at: DateTimeWithTimeZone,
|
pub created_at: DateTime,
|
||||||
#[sea_orm(column_name = "updatedAt")]
|
#[sea_orm(column_name = "updatedAt")]
|
||||||
pub updated_at: Option<DateTimeWithTimeZone>,
|
pub updated_at: Option<DateTime>,
|
||||||
#[sea_orm(column_name = "lastFetchedAt")]
|
#[sea_orm(column_name = "lastFetchedAt")]
|
||||||
pub last_fetched_at: Option<DateTimeWithTimeZone>,
|
pub last_fetched_at: Option<DateTime>,
|
||||||
pub username: String,
|
pub username: String,
|
||||||
#[sea_orm(column_name = "usernameLower")]
|
#[sea_orm(column_name = "usernameLower")]
|
||||||
pub username_lower: String,
|
pub username_lower: String,
|
||||||
|
@ -57,7 +58,7 @@ pub struct Model {
|
||||||
#[sea_orm(column_name = "followersUri")]
|
#[sea_orm(column_name = "followersUri")]
|
||||||
pub followers_uri: Option<String>,
|
pub followers_uri: Option<String>,
|
||||||
#[sea_orm(column_name = "lastActiveDate")]
|
#[sea_orm(column_name = "lastActiveDate")]
|
||||||
pub last_active_date: Option<DateTimeWithTimeZone>,
|
pub last_active_date: Option<DateTime>,
|
||||||
#[sea_orm(column_name = "hideOnlineStatus")]
|
#[sea_orm(column_name = "hideOnlineStatus")]
|
||||||
pub hide_online_status: bool,
|
pub hide_online_status: bool,
|
||||||
#[sea_orm(column_name = "isDeleted")]
|
#[sea_orm(column_name = "isDeleted")]
|
||||||
|
|
|
@ -4,11 +4,12 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "user_group")]
|
#[sea_orm(table_name = "user_group")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(primary_key, auto_increment = false)]
|
#[sea_orm(primary_key, auto_increment = false)]
|
||||||
pub id: String,
|
pub id: String,
|
||||||
#[sea_orm(column_name = "createdAt")]
|
#[sea_orm(column_name = "createdAt")]
|
||||||
pub created_at: DateTimeWithTimeZone,
|
pub created_at: DateTime,
|
||||||
pub name: String,
|
pub name: String,
|
||||||
#[sea_orm(column_name = "userId")]
|
#[sea_orm(column_name = "userId")]
|
||||||
pub user_id: String,
|
pub user_id: String,
|
||||||
|
|
|
@ -4,11 +4,12 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "user_group_invitation")]
|
#[sea_orm(table_name = "user_group_invitation")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(primary_key, auto_increment = false)]
|
#[sea_orm(primary_key, auto_increment = false)]
|
||||||
pub id: String,
|
pub id: String,
|
||||||
#[sea_orm(column_name = "createdAt")]
|
#[sea_orm(column_name = "createdAt")]
|
||||||
pub created_at: DateTimeWithTimeZone,
|
pub created_at: DateTime,
|
||||||
#[sea_orm(column_name = "userId")]
|
#[sea_orm(column_name = "userId")]
|
||||||
pub user_id: String,
|
pub user_id: String,
|
||||||
#[sea_orm(column_name = "userGroupId")]
|
#[sea_orm(column_name = "userGroupId")]
|
||||||
|
|
|
@ -4,11 +4,12 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "user_group_invite")]
|
#[sea_orm(table_name = "user_group_invite")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(primary_key, auto_increment = false)]
|
#[sea_orm(primary_key, auto_increment = false)]
|
||||||
pub id: String,
|
pub id: String,
|
||||||
#[sea_orm(column_name = "createdAt")]
|
#[sea_orm(column_name = "createdAt")]
|
||||||
pub created_at: DateTimeWithTimeZone,
|
pub created_at: DateTime,
|
||||||
#[sea_orm(column_name = "userId")]
|
#[sea_orm(column_name = "userId")]
|
||||||
pub user_id: String,
|
pub user_id: String,
|
||||||
#[sea_orm(column_name = "userGroupId")]
|
#[sea_orm(column_name = "userGroupId")]
|
||||||
|
|
|
@ -4,11 +4,12 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "user_group_joining")]
|
#[sea_orm(table_name = "user_group_joining")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(primary_key, auto_increment = false)]
|
#[sea_orm(primary_key, auto_increment = false)]
|
||||||
pub id: String,
|
pub id: String,
|
||||||
#[sea_orm(column_name = "createdAt")]
|
#[sea_orm(column_name = "createdAt")]
|
||||||
pub created_at: DateTimeWithTimeZone,
|
pub created_at: DateTime,
|
||||||
#[sea_orm(column_name = "userId")]
|
#[sea_orm(column_name = "userId")]
|
||||||
pub user_id: String,
|
pub user_id: String,
|
||||||
#[sea_orm(column_name = "userGroupId")]
|
#[sea_orm(column_name = "userGroupId")]
|
||||||
|
|
|
@ -4,11 +4,12 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "user_ip")]
|
#[sea_orm(table_name = "user_ip")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(primary_key)]
|
#[sea_orm(primary_key)]
|
||||||
pub id: i32,
|
pub id: i32,
|
||||||
#[sea_orm(column_name = "createdAt")]
|
#[sea_orm(column_name = "createdAt")]
|
||||||
pub created_at: DateTimeWithTimeZone,
|
pub created_at: DateTime,
|
||||||
#[sea_orm(column_name = "userId")]
|
#[sea_orm(column_name = "userId")]
|
||||||
pub user_id: String,
|
pub user_id: String,
|
||||||
pub ip: String,
|
pub ip: String,
|
||||||
|
|
|
@ -4,6 +4,7 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "user_keypair")]
|
#[sea_orm(table_name = "user_keypair")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(column_name = "userId", primary_key, auto_increment = false, unique)]
|
#[sea_orm(column_name = "userId", primary_key, auto_increment = false, unique)]
|
||||||
pub user_id: String,
|
pub user_id: String,
|
||||||
|
|
|
@ -4,11 +4,12 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "user_list")]
|
#[sea_orm(table_name = "user_list")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(primary_key, auto_increment = false)]
|
#[sea_orm(primary_key, auto_increment = false)]
|
||||||
pub id: String,
|
pub id: String,
|
||||||
#[sea_orm(column_name = "createdAt")]
|
#[sea_orm(column_name = "createdAt")]
|
||||||
pub created_at: DateTimeWithTimeZone,
|
pub created_at: DateTime,
|
||||||
#[sea_orm(column_name = "userId")]
|
#[sea_orm(column_name = "userId")]
|
||||||
pub user_id: String,
|
pub user_id: String,
|
||||||
pub name: String,
|
pub name: String,
|
||||||
|
|
|
@ -4,11 +4,12 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "user_list_joining")]
|
#[sea_orm(table_name = "user_list_joining")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(primary_key, auto_increment = false)]
|
#[sea_orm(primary_key, auto_increment = false)]
|
||||||
pub id: String,
|
pub id: String,
|
||||||
#[sea_orm(column_name = "createdAt")]
|
#[sea_orm(column_name = "createdAt")]
|
||||||
pub created_at: DateTimeWithTimeZone,
|
pub created_at: DateTime,
|
||||||
#[sea_orm(column_name = "userId")]
|
#[sea_orm(column_name = "userId")]
|
||||||
pub user_id: String,
|
pub user_id: String,
|
||||||
#[sea_orm(column_name = "userListId")]
|
#[sea_orm(column_name = "userListId")]
|
||||||
|
|
|
@ -4,11 +4,12 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "user_note_pining")]
|
#[sea_orm(table_name = "user_note_pining")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(primary_key, auto_increment = false)]
|
#[sea_orm(primary_key, auto_increment = false)]
|
||||||
pub id: String,
|
pub id: String,
|
||||||
#[sea_orm(column_name = "createdAt")]
|
#[sea_orm(column_name = "createdAt")]
|
||||||
pub created_at: DateTimeWithTimeZone,
|
pub created_at: DateTime,
|
||||||
#[sea_orm(column_name = "userId")]
|
#[sea_orm(column_name = "userId")]
|
||||||
pub user_id: String,
|
pub user_id: String,
|
||||||
#[sea_orm(column_name = "noteId")]
|
#[sea_orm(column_name = "noteId")]
|
||||||
|
|
|
@ -4,11 +4,12 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "user_pending")]
|
#[sea_orm(table_name = "user_pending")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(primary_key, auto_increment = false)]
|
#[sea_orm(primary_key, auto_increment = false)]
|
||||||
pub id: String,
|
pub id: String,
|
||||||
#[sea_orm(column_name = "createdAt")]
|
#[sea_orm(column_name = "createdAt")]
|
||||||
pub created_at: DateTimeWithTimeZone,
|
pub created_at: DateTime,
|
||||||
pub code: String,
|
pub code: String,
|
||||||
pub username: String,
|
pub username: String,
|
||||||
pub email: String,
|
pub email: String,
|
||||||
|
|
|
@ -6,6 +6,7 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "user_profile")]
|
#[sea_orm(table_name = "user_profile")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(column_name = "userId", primary_key, auto_increment = false, unique)]
|
#[sea_orm(column_name = "userId", primary_key, auto_increment = false, unique)]
|
||||||
pub user_id: String,
|
pub user_id: String,
|
||||||
|
|
|
@ -4,6 +4,7 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "user_publickey")]
|
#[sea_orm(table_name = "user_publickey")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(column_name = "userId", primary_key, auto_increment = false, unique)]
|
#[sea_orm(column_name = "userId", primary_key, auto_increment = false, unique)]
|
||||||
pub user_id: String,
|
pub user_id: String,
|
||||||
|
|
|
@ -4,6 +4,7 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "user_security_key")]
|
#[sea_orm(table_name = "user_security_key")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(primary_key, auto_increment = false)]
|
#[sea_orm(primary_key, auto_increment = false)]
|
||||||
pub id: String,
|
pub id: String,
|
||||||
|
@ -12,7 +13,7 @@ pub struct Model {
|
||||||
#[sea_orm(column_name = "publicKey")]
|
#[sea_orm(column_name = "publicKey")]
|
||||||
pub public_key: String,
|
pub public_key: String,
|
||||||
#[sea_orm(column_name = "lastUsed")]
|
#[sea_orm(column_name = "lastUsed")]
|
||||||
pub last_used: DateTimeWithTimeZone,
|
pub last_used: DateTime,
|
||||||
pub name: String,
|
pub name: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4,11 +4,12 @@ use sea_orm::entity::prelude::*;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
|
||||||
#[sea_orm(table_name = "webhook")]
|
#[sea_orm(table_name = "webhook")]
|
||||||
|
#[napi_derive::napi(object)]
|
||||||
pub struct Model {
|
pub struct Model {
|
||||||
#[sea_orm(primary_key, auto_increment = false)]
|
#[sea_orm(primary_key, auto_increment = false)]
|
||||||
pub id: String,
|
pub id: String,
|
||||||
#[sea_orm(column_name = "createdAt")]
|
#[sea_orm(column_name = "createdAt")]
|
||||||
pub created_at: DateTimeWithTimeZone,
|
pub created_at: DateTime,
|
||||||
#[sea_orm(column_name = "userId")]
|
#[sea_orm(column_name = "userId")]
|
||||||
pub user_id: String,
|
pub user_id: String,
|
||||||
pub name: String,
|
pub name: String,
|
||||||
|
@ -17,7 +18,7 @@ pub struct Model {
|
||||||
pub secret: String,
|
pub secret: String,
|
||||||
pub active: bool,
|
pub active: bool,
|
||||||
#[sea_orm(column_name = "latestSentAt")]
|
#[sea_orm(column_name = "latestSentAt")]
|
||||||
pub latest_sent_at: Option<DateTimeWithTimeZone>,
|
pub latest_sent_at: Option<DateTime>,
|
||||||
#[sea_orm(column_name = "latestStatus")]
|
#[sea_orm(column_name = "latestStatus")]
|
||||||
pub latest_status: Option<i32>,
|
pub latest_status: Option<i32>,
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
use crate::impl_into_napi_error;
|
use crate::impl_napi_error_from;
|
||||||
|
|
||||||
#[derive(thiserror::Error, Debug, PartialEq, Eq)]
|
#[derive(thiserror::Error, Debug, PartialEq, Eq)]
|
||||||
pub enum Error {
|
pub enum Error {
|
||||||
|
@ -12,4 +12,4 @@ pub enum Error {
|
||||||
NotFound,
|
NotFound,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl_into_napi_error!(Error);
|
impl_napi_error_from!(Error);
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
#[cfg_attr(feature = "napi", napi_derive::napi(object))]
|
#[napi_derive::napi(object)]
|
||||||
pub struct Acct {
|
pub struct Acct {
|
||||||
pub username: String,
|
pub username: String,
|
||||||
pub host: Option<String>,
|
pub host: Option<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg_attr(feature = "napi", napi_derive::napi)]
|
#[napi_derive::napi]
|
||||||
pub fn string_to_acct(acct: String) -> Acct {
|
pub fn string_to_acct(acct: String) -> Acct {
|
||||||
let split: Vec<&str> = if let Some(stripped) = acct.strip_prefix('@') {
|
let split: Vec<&str> = if let Some(stripped) = acct.strip_prefix('@') {
|
||||||
stripped
|
stripped
|
||||||
|
@ -24,7 +24,7 @@ pub fn string_to_acct(acct: String) -> Acct {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg_attr(feature = "napi", napi_derive::napi)]
|
#[napi_derive::napi]
|
||||||
pub fn acct_to_string(acct: Acct) -> String {
|
pub fn acct_to_string(acct: Acct) -> String {
|
||||||
match acct.host {
|
match acct.host {
|
||||||
Some(host) => format!("{}@{}", acct.username, host),
|
Some(host) => format!("{}@{}", acct.username, host),
|
||||||
|
|
|
@ -1,26 +1,30 @@
|
||||||
use crate::config::server::read_server_config;
|
use crate::config::server::ServerConfig;
|
||||||
use idna;
|
use idna;
|
||||||
use url::Url;
|
use url::Url;
|
||||||
|
|
||||||
#[cfg_attr(feature = "napi", napi_derive::napi)]
|
#[napi_derive::napi]
|
||||||
pub fn get_full_ap_account(username: String, host: Option<String>) -> String {
|
pub fn get_full_ap_account(
|
||||||
|
server_config: ServerConfig,
|
||||||
|
username: String,
|
||||||
|
host: Option<String>,
|
||||||
|
) -> String {
|
||||||
if host.is_none() {
|
if host.is_none() {
|
||||||
format!("{}@{}", username, extract_host(read_server_config().url))
|
format!("{}@{}", username, extract_host(server_config.url))
|
||||||
} else {
|
} else {
|
||||||
format!("{}@{}", username, to_puny(host.unwrap()))
|
format!("{}@{}", username, to_puny(host.unwrap()))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg_attr(feature = "napi", napi_derive::napi)]
|
#[napi_derive::napi]
|
||||||
pub fn is_self_host(host: Option<String>) -> bool {
|
pub fn is_self_host(server_config: ServerConfig, host: Option<String>) -> bool {
|
||||||
if let Some(x) = host {
|
if let Some(x) = host {
|
||||||
extract_host(read_server_config().url) == to_puny(x)
|
extract_host(server_config.url) == to_puny(x)
|
||||||
} else {
|
} else {
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg_attr(feature = "napi", napi_derive::napi)]
|
#[napi_derive::napi]
|
||||||
pub fn extract_host(uri: String) -> String {
|
pub fn extract_host(uri: String) -> String {
|
||||||
to_puny(
|
to_puny(
|
||||||
Url::parse(uri.as_str())
|
Url::parse(uri.as_str())
|
||||||
|
@ -31,12 +35,12 @@ pub fn extract_host(uri: String) -> String {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg_attr(feature = "napi", napi_derive::napi)]
|
#[napi_derive::napi]
|
||||||
pub fn to_puny(host: String) -> String {
|
pub fn to_puny(host: String) -> String {
|
||||||
idna::domain_to_ascii(&host).expect("Failed to encode the host to punycode")
|
idna::domain_to_ascii(&host).expect("Failed to encode the host to punycode")
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg_attr(feature = "napi", napi_derive::napi)]
|
#[napi_derive::napi]
|
||||||
pub fn to_puny_optional(host: Option<String>) -> Option<String> {
|
pub fn to_puny_optional(host: Option<String>) -> Option<String> {
|
||||||
host.map(to_puny)
|
host.map(to_puny)
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
use napi;
|
use napi;
|
||||||
|
|
||||||
#[cfg_attr(feature = "napi", napi_derive::napi(object))]
|
#[napi_derive::napi(object)]
|
||||||
pub struct Post {
|
pub struct Post {
|
||||||
pub text: Option<String>,
|
pub text: Option<String>,
|
||||||
pub cw: Option<String>,
|
pub cw: Option<String>,
|
||||||
|
@ -10,7 +10,7 @@ pub struct Post {
|
||||||
pub visibility: String,
|
pub visibility: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg_attr(feature = "napi", napi_derive::napi)]
|
#[napi_derive::napi]
|
||||||
pub fn convert_to_hidden_post(original_post: Post) -> Post {
|
pub fn convert_to_hidden_post(original_post: Post) -> Post {
|
||||||
Post {
|
Post {
|
||||||
text: match original_post.text {
|
text: match original_post.text {
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
#[cfg_attr(feature = "napi", napi_derive::napi)]
|
#[napi_derive::napi]
|
||||||
pub fn sql_like_escape(src: String) -> String {
|
pub fn sql_like_escape(src: String) -> String {
|
||||||
src.replace('%', r"\%").replace('_', r"\_")
|
src.replace('%', r"\%").replace('_', r"\_")
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg_attr(feature = "napi", napi_derive::napi)]
|
#[napi_derive::napi]
|
||||||
pub fn safe_for_sql(src: String) -> bool {
|
pub fn safe_for_sql(src: String) -> bool {
|
||||||
!src.contains([
|
!src.contains([
|
||||||
'\0', '\x08', '\x09', '\x1a', '\n', '\r', '"', '\'', '\\', '%',
|
'\0', '\x08', '\x09', '\x1a', '\n', '\r', '"', '\'', '\\', '%',
|
||||||
|
|
47
packages/backend/native-utils/src/util/fetch_meta.rs
Normal file
47
packages/backend/native-utils/src/util/fetch_meta.rs
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
use sea_orm::{prelude::*, ActiveValue};
|
||||||
|
use std::sync::Mutex;
|
||||||
|
// use sea_orm::{ActiveValue, prelude::*, sea_query::OnConflict};
|
||||||
|
use crate::database::{JsDbConn, NapiDbErrExt};
|
||||||
|
use crate::model::entity::meta;
|
||||||
|
|
||||||
|
type Meta = meta::Model;
|
||||||
|
|
||||||
|
static CACHE: Mutex<Option<Meta>> = Mutex::new(None);
|
||||||
|
fn update_cache(meta: &Meta) {
|
||||||
|
let _ = CACHE.lock().map(|mut cache| *cache = Some(meta.clone()));
|
||||||
|
}
|
||||||
|
|
||||||
|
#[napi_derive::napi]
|
||||||
|
pub async fn fetch_meta(conn: &JsDbConn, invalidate_cache: bool) -> napi::Result<Meta> {
|
||||||
|
// try using cache
|
||||||
|
if !invalidate_cache {
|
||||||
|
if let Some(cache) = CACHE.lock().ok().and_then(|cache| cache.clone()) {
|
||||||
|
return Ok(cache);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// try fetching from db
|
||||||
|
let db = conn.inner();
|
||||||
|
let meta = meta::Entity::find()
|
||||||
|
.one(db)
|
||||||
|
.await
|
||||||
|
.map_err(NapiDbErrExt::into)?;
|
||||||
|
if let Some(meta) = meta {
|
||||||
|
update_cache(&meta);
|
||||||
|
return Ok(meta);
|
||||||
|
}
|
||||||
|
|
||||||
|
// create a new meta object and insert into db
|
||||||
|
let meta = meta::Entity::insert(meta::ActiveModel {
|
||||||
|
id: ActiveValue::Set("x".to_owned()),
|
||||||
|
..Default::default()
|
||||||
|
})
|
||||||
|
// FIXME handle on conflict
|
||||||
|
// .on_conflict(OnConflict::column(meta::Column::Id).do_nothing().to_owned())
|
||||||
|
// .do_nothing()
|
||||||
|
.exec_with_returning(db)
|
||||||
|
.await
|
||||||
|
.map_err(NapiDbErrExt::into)?;
|
||||||
|
update_cache(&meta);
|
||||||
|
Ok(meta)
|
||||||
|
}
|
|
@ -1,5 +1,5 @@
|
||||||
/// Convert milliseconds to human readable string
|
/// Convert milliseconds to human readable string
|
||||||
#[cfg_attr(feature = "napi", napi_derive::napi)]
|
#[napi_derive::napi]
|
||||||
pub fn format_milliseconds(milliseconds: i32) -> String {
|
pub fn format_milliseconds(milliseconds: i32) -> String {
|
||||||
let mut seconds = milliseconds / 1000;
|
let mut seconds = milliseconds / 1000;
|
||||||
let mut minutes = seconds / 60;
|
let mut minutes = seconds / 60;
|
||||||
|
|
|
@ -1,18 +1,18 @@
|
||||||
//! ID generation utility based on [cuid2]
|
//! ID generation utility based on [cuid2]
|
||||||
|
|
||||||
use basen::BASE36;
|
use basen::BASE36;
|
||||||
use cfg_if::cfg_if;
|
// use cfg_if::cfg_if;
|
||||||
use chrono::Utc;
|
use chrono::Utc;
|
||||||
use once_cell::sync::OnceCell;
|
use once_cell::sync::OnceCell;
|
||||||
use std::cmp;
|
use std::cmp;
|
||||||
|
|
||||||
use crate::impl_into_napi_error;
|
use crate::impl_napi_error_from;
|
||||||
|
|
||||||
#[derive(thiserror::Error, Debug, PartialEq, Eq)]
|
#[derive(thiserror::Error, Debug, PartialEq, Eq)]
|
||||||
#[error("ID generator has not been initialized yet")]
|
#[error("ID generator has not been initialized yet")]
|
||||||
pub struct ErrorUninitialized;
|
pub struct ErrorUninitialized;
|
||||||
|
|
||||||
impl_into_napi_error!(ErrorUninitialized);
|
impl_napi_error_from!(ErrorUninitialized);
|
||||||
|
|
||||||
static FINGERPRINT: OnceCell<String> = OnceCell::new();
|
static FINGERPRINT: OnceCell<String> = OnceCell::new();
|
||||||
static GENERATOR: OnceCell<cuid2::CuidConstructor> = OnceCell::new();
|
static GENERATOR: OnceCell<cuid2::CuidConstructor> = OnceCell::new();
|
||||||
|
@ -61,29 +61,29 @@ pub fn get_timestamp(id: &str) -> i64 {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
cfg_if! {
|
// cfg_if! {
|
||||||
if #[cfg(feature = "napi")] {
|
// if #[cfg(feature = "napi")] {
|
||||||
use napi_derive::napi;
|
use napi_derive::napi;
|
||||||
|
|
||||||
/// Calls [init_id] inside. Must be called before [native_create_id].
|
/// Calls [init_id] inside. Must be called before [native_create_id].
|
||||||
#[napi]
|
#[napi]
|
||||||
pub fn native_init_id_generator(length: u16, fingerprint: String) {
|
pub fn native_init_id_generator(length: u16, fingerprint: String) {
|
||||||
init_id(length, &fingerprint);
|
init_id(length, &fingerprint);
|
||||||
}
|
|
||||||
|
|
||||||
/// Generates
|
|
||||||
#[napi]
|
|
||||||
pub fn native_create_id(date_num: i64) -> String {
|
|
||||||
create_id(date_num).unwrap()
|
|
||||||
}
|
|
||||||
|
|
||||||
#[napi]
|
|
||||||
pub fn native_get_timestamp(id: String) -> i64 {
|
|
||||||
get_timestamp(&id)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Generates
|
||||||
|
#[napi]
|
||||||
|
pub fn native_create_id(date_num: i64) -> String {
|
||||||
|
create_id(date_num).unwrap()
|
||||||
|
}
|
||||||
|
|
||||||
|
#[napi]
|
||||||
|
pub fn native_get_timestamp(id: String) -> i64 {
|
||||||
|
get_timestamp(&id)
|
||||||
|
}
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod unit_test {
|
mod unit_test {
|
||||||
use crate::util::id;
|
use crate::util::id;
|
||||||
|
|
|
@ -2,6 +2,7 @@ pub mod acct;
|
||||||
pub mod convert_host;
|
pub mod convert_host;
|
||||||
pub mod convert_to_hidden_post;
|
pub mod convert_to_hidden_post;
|
||||||
pub mod escape_sql;
|
pub mod escape_sql;
|
||||||
|
pub mod fetch_meta;
|
||||||
pub mod format_milliseconds;
|
pub mod format_milliseconds;
|
||||||
pub mod id;
|
pub mod id;
|
||||||
pub mod random;
|
pub mod random;
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
use rand::{distributions::Alphanumeric, thread_rng, Rng};
|
use rand::{distributions::Alphanumeric, thread_rng, Rng};
|
||||||
|
|
||||||
/// Generate random string based on [thread_rng] and [Alphanumeric].
|
/// Generate random string based on [thread_rng] and [Alphanumeric].
|
||||||
#[cfg_attr(feature = "napi", napi_derive::napi)]
|
#[napi_derive::napi]
|
||||||
pub fn gen_string(length: u16) -> String {
|
pub fn gen_string(length: u16) -> String {
|
||||||
thread_rng()
|
thread_rng()
|
||||||
.sample_iter(Alphanumeric)
|
.sample_iter(Alphanumeric)
|
||||||
|
|
|
@ -3,7 +3,7 @@ import chalk from "chalk";
|
||||||
import Xev from "xev";
|
import Xev from "xev";
|
||||||
|
|
||||||
import Logger from "@/services/logger.js";
|
import Logger from "@/services/logger.js";
|
||||||
import { envOption } from "@/config/index.js";
|
import { envConfig } from "@/misc/native-utils.js";
|
||||||
|
|
||||||
// for typeorm
|
// for typeorm
|
||||||
import "reflect-metadata";
|
import "reflect-metadata";
|
||||||
|
@ -26,14 +26,14 @@ export default async function () {
|
||||||
const type = cluster.isPrimary ? "(master)" : "(worker)";
|
const type = cluster.isPrimary ? "(master)" : "(worker)";
|
||||||
process.title = `Firefish ${mode} ${type}`;
|
process.title = `Firefish ${mode} ${type}`;
|
||||||
|
|
||||||
if (cluster.isPrimary || envOption.disableClustering) {
|
if (cluster.isPrimary || envConfig.disableClustering) {
|
||||||
await masterMain();
|
await masterMain();
|
||||||
if (cluster.isPrimary) {
|
if (cluster.isPrimary) {
|
||||||
ev.mount();
|
ev.mount();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cluster.isWorker || envOption.disableClustering) {
|
if (cluster.isWorker || envConfig.disableClustering) {
|
||||||
await workerMain();
|
await workerMain();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -75,7 +75,7 @@ cluster.on("exit", (worker) => {
|
||||||
});
|
});
|
||||||
|
|
||||||
// Display detail of unhandled promise rejection
|
// Display detail of unhandled promise rejection
|
||||||
if (!envOption.quiet) {
|
if (!envConfig.quiet) {
|
||||||
process.on("unhandledRejection", console.dir);
|
process.on("unhandledRejection", console.dir);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@ import semver from "semver";
|
||||||
import Logger from "@/services/logger.js";
|
import Logger from "@/services/logger.js";
|
||||||
import loadConfig from "@/config/load.js";
|
import loadConfig from "@/config/load.js";
|
||||||
import type { Config } from "@/config/types.js";
|
import type { Config } from "@/config/types.js";
|
||||||
import { envOption } from "@/config/index.js";
|
import { envConfig } from "@/misc/native-utils.js";
|
||||||
import { showMachineInfo } from "@/misc/show-machine-info.js";
|
import { showMachineInfo } from "@/misc/show-machine-info.js";
|
||||||
import { db, initDb } from "@/db/postgre.js";
|
import { db, initDb } from "@/db/postgre.js";
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@ const bootLogger = logger.createSubLogger("boot", "magenta", false);
|
||||||
const themeColor = chalk.hex("#31748f");
|
const themeColor = chalk.hex("#31748f");
|
||||||
|
|
||||||
function greet() {
|
function greet() {
|
||||||
if (!envOption.quiet) {
|
if (!envConfig.quiet) {
|
||||||
//#region Firefish logo
|
//#region Firefish logo
|
||||||
console.log(
|
console.log(
|
||||||
themeColor(
|
themeColor(
|
||||||
|
@ -109,7 +109,7 @@ export async function masterMain() {
|
||||||
|
|
||||||
bootLogger.succ("Firefish initialized");
|
bootLogger.succ("Firefish initialized");
|
||||||
|
|
||||||
if (!envOption.disableClustering) {
|
if (!envConfig.disableClustering) {
|
||||||
await spawnWorkers(config.clusterLimits);
|
await spawnWorkers(config.clusterLimits);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -120,7 +120,7 @@ export async function masterMain() {
|
||||||
);
|
);
|
||||||
|
|
||||||
if (
|
if (
|
||||||
!envOption.noDaemons &&
|
!envConfig.noDaemons &&
|
||||||
config.clusterLimits?.web &&
|
config.clusterLimits?.web &&
|
||||||
config.clusterLimits?.web >= 1
|
config.clusterLimits?.web >= 1
|
||||||
) {
|
) {
|
||||||
|
|
|
@ -1,5 +1,2 @@
|
||||||
import load from "./load.js";
|
import load from "./load.js";
|
||||||
import { readEnvironmentConfig } from "native-utils/built/index.js";
|
|
||||||
|
|
||||||
export default load();
|
export default load();
|
||||||
export const envOption = readEnvironmentConfig();
|
|
||||||
|
|
|
@ -2,7 +2,8 @@ import type { Antenna } from "@/models/entities/antenna.js";
|
||||||
import type { Note } from "@/models/entities/note.js";
|
import type { Note } from "@/models/entities/note.js";
|
||||||
import type { User } from "@/models/entities/user.js";
|
import type { User } from "@/models/entities/user.js";
|
||||||
import { Blockings, Followings, UserProfiles } from "@/models/index.js";
|
import { Blockings, Followings, UserProfiles } from "@/models/index.js";
|
||||||
import { getFullApAccount, stringToAcct } from "native-utils/built/index.js";
|
import { getFullApAccount } from "@/misc/native-utils.js";
|
||||||
|
import { stringToAcct } from "native-utils/built/index.js";
|
||||||
import type { Packed } from "@/misc/schema.js";
|
import type { Packed } from "@/misc/schema.js";
|
||||||
import { Cache } from "@/misc/cache.js";
|
import { Cache } from "@/misc/cache.js";
|
||||||
import { getWordHardMute } from "@/misc/check-word-mute.js";
|
import { getWordHardMute } from "@/misc/check-word-mute.js";
|
||||||
|
@ -25,7 +26,7 @@ export async function checkHitAntenna(
|
||||||
if (antenna.src === "users") {
|
if (antenna.src === "users") {
|
||||||
const accts = antenna.users.map((x) => {
|
const accts = antenna.users.map((x) => {
|
||||||
const { username, host } = stringToAcct(x);
|
const { username, host } = stringToAcct(x);
|
||||||
return getFullApAccount(username, host ?? null).toLowerCase();
|
return getFullApAccount(username, host).toLowerCase();
|
||||||
});
|
});
|
||||||
if (
|
if (
|
||||||
!accts.includes(
|
!accts.includes(
|
||||||
|
|
|
@ -1,12 +1,10 @@
|
||||||
import { db } from "@/db/postgre.js";
|
import type { Meta } from "native-utils/built/index.js";
|
||||||
import { Meta } from "@/models/entities/meta.js";
|
import { fetchMeta } from "@/misc/native-utils.js";
|
||||||
|
|
||||||
let cache: Meta;
|
|
||||||
|
|
||||||
export function metaToPugArgs(meta: Meta): object {
|
export function metaToPugArgs(meta: Meta): object {
|
||||||
let motd = ["Loading..."];
|
let motd = ["Loading..."];
|
||||||
if (meta.customMOTD.length > 0) {
|
if (meta.customMotd.length > 0) {
|
||||||
motd = meta.customMOTD;
|
motd = meta.customMotd;
|
||||||
}
|
}
|
||||||
let splashIconUrl = meta.iconUrl;
|
let splashIconUrl = meta.iconUrl;
|
||||||
if (meta.customSplashIcons.length > 0) {
|
if (meta.customSplashIcons.length > 0) {
|
||||||
|
@ -29,44 +27,7 @@ export function metaToPugArgs(meta: Meta): object {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function fetchMeta(noCache = false): Promise<Meta> {
|
export { fetchMeta } from "@/misc/native-utils.js";
|
||||||
if (!noCache && cache) return cache;
|
|
||||||
|
|
||||||
return await db.transaction(async (transactionalEntityManager) => {
|
// refresh cache
|
||||||
// New IDs are prioritized because multiple records may have been created due to past bugs.
|
setInterval(() => fetchMeta(true), 1000 * 10);
|
||||||
const metas = await transactionalEntityManager.find(Meta, {
|
|
||||||
order: {
|
|
||||||
id: "DESC",
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
const meta = metas[0];
|
|
||||||
|
|
||||||
if (meta) {
|
|
||||||
cache = meta;
|
|
||||||
return meta;
|
|
||||||
} else {
|
|
||||||
// If fetchMeta is called at the same time when meta is empty, this part may be called at the same time, so use fail-safe upsert.
|
|
||||||
const saved = await transactionalEntityManager
|
|
||||||
.upsert(
|
|
||||||
Meta,
|
|
||||||
{
|
|
||||||
id: "x",
|
|
||||||
},
|
|
||||||
["id"],
|
|
||||||
)
|
|
||||||
.then((x) =>
|
|
||||||
transactionalEntityManager.findOneByOrFail(Meta, x.identifiers[0]),
|
|
||||||
);
|
|
||||||
|
|
||||||
cache = saved;
|
|
||||||
return saved;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
setInterval(() => {
|
|
||||||
fetchMeta(true).then((meta) => {
|
|
||||||
cache = meta;
|
|
||||||
});
|
|
||||||
}, 1000 * 10);
|
|
||||||
|
|
28
packages/backend/src/misc/native-utils.ts
Normal file
28
packages/backend/src/misc/native-utils.ts
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
import {
|
||||||
|
readServerConfig,
|
||||||
|
readEnvironmentConfig,
|
||||||
|
initDatabase,
|
||||||
|
fetchMeta as fetchMetaImpl,
|
||||||
|
getFullApAccount as getFullApAccountImpl,
|
||||||
|
isSelfHost as isSelfHostImpl,
|
||||||
|
} from "native-utils/built/index.js";
|
||||||
|
|
||||||
|
export const serverConfig = readServerConfig();
|
||||||
|
export const envConfig = readEnvironmentConfig();
|
||||||
|
const dbPromise = initDatabase();
|
||||||
|
|
||||||
|
type Option<T> = T | null | undefined;
|
||||||
|
|
||||||
|
export const fetchMeta = (invalidateCache = false) =>
|
||||||
|
dbPromise.then((db) => fetchMetaImpl(db, invalidateCache));
|
||||||
|
|
||||||
|
export function getFullApAccount(
|
||||||
|
username: string,
|
||||||
|
host: Option<string>,
|
||||||
|
): string {
|
||||||
|
return getFullApAccountImpl(serverConfig, username, host);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function isSelfHost(host: Option<string>): boolean {
|
||||||
|
return isSelfHostImpl(serverConfig, host);
|
||||||
|
}
|
|
@ -3,7 +3,8 @@ import { Emojis } from "@/models/index.js";
|
||||||
import type { Emoji } from "@/models/entities/emoji.js";
|
import type { Emoji } from "@/models/entities/emoji.js";
|
||||||
import type { Note } from "@/models/entities/note.js";
|
import type { Note } from "@/models/entities/note.js";
|
||||||
import { Cache } from "./cache.js";
|
import { Cache } from "./cache.js";
|
||||||
import { isSelfHost, toPunyOptional } from "native-utils/built/index.js";
|
import { toPunyOptional } from "native-utils/built/index.js";
|
||||||
|
import { isSelfHost } from "@/misc/native-utils.js";
|
||||||
import { decodeReaction } from "./reaction-lib.js";
|
import { decodeReaction } from "./reaction-lib.js";
|
||||||
import config from "@/config/index.js";
|
import config from "@/config/index.js";
|
||||||
import { query } from "@/prelude/url.js";
|
import { query } from "@/prelude/url.js";
|
||||||
|
|
|
@ -15,7 +15,7 @@ export class AbuseUserReport {
|
||||||
public id: string;
|
public id: string;
|
||||||
|
|
||||||
@Index()
|
@Index()
|
||||||
@Column("timestamp with time zone", {
|
@Column("timestamp without time zone", {
|
||||||
comment: "The created date of the AbuseUserReport.",
|
comment: "The created date of the AbuseUserReport.",
|
||||||
})
|
})
|
||||||
public createdAt: Date;
|
public createdAt: Date;
|
||||||
|
|
|
@ -15,12 +15,12 @@ export class AccessToken {
|
||||||
@PrimaryColumn(id())
|
@PrimaryColumn(id())
|
||||||
public id: string;
|
public id: string;
|
||||||
|
|
||||||
@Column("timestamp with time zone", {
|
@Column("timestamp without time zone", {
|
||||||
comment: "The created date of the AccessToken.",
|
comment: "The created date of the AccessToken.",
|
||||||
})
|
})
|
||||||
public createdAt: Date;
|
public createdAt: Date;
|
||||||
|
|
||||||
@Column("timestamp with time zone", {
|
@Column("timestamp without time zone", {
|
||||||
nullable: true,
|
nullable: true,
|
||||||
})
|
})
|
||||||
public lastUsedAt: Date | null;
|
public lastUsedAt: Date | null;
|
||||||
|
|
|
@ -7,13 +7,13 @@ export class Ad {
|
||||||
public id: string;
|
public id: string;
|
||||||
|
|
||||||
@Index()
|
@Index()
|
||||||
@Column("timestamp with time zone", {
|
@Column("timestamp without time zone", {
|
||||||
comment: "The created date of the Ad.",
|
comment: "The created date of the Ad.",
|
||||||
})
|
})
|
||||||
public createdAt: Date;
|
public createdAt: Date;
|
||||||
|
|
||||||
@Index()
|
@Index()
|
||||||
@Column("timestamp with time zone", {
|
@Column("timestamp without time zone", {
|
||||||
comment: "The expired date of the Ad.",
|
comment: "The expired date of the Ad.",
|
||||||
})
|
})
|
||||||
public expiresAt: Date;
|
public expiresAt: Date;
|
||||||
|
|
|
@ -16,7 +16,7 @@ export class AnnouncementRead {
|
||||||
@PrimaryColumn(id())
|
@PrimaryColumn(id())
|
||||||
public id: string;
|
public id: string;
|
||||||
|
|
||||||
@Column("timestamp with time zone", {
|
@Column("timestamp without time zone", {
|
||||||
comment: "The created date of the AnnouncementRead.",
|
comment: "The created date of the AnnouncementRead.",
|
||||||
})
|
})
|
||||||
public createdAt: Date;
|
public createdAt: Date;
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue