Files
outline/server/models/DocumentInsight.ts
T
Tom Moor 091346dfe8 chore: Migrate to vitest (#12272)
* wip

* Remove obsolete snapshots

* simplify

* chore(test): Convert mocks to TypeScript and tighten fetch mock types

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* Remove unneccessary patches

* Migrate to msw instead of custom fetch mock

* Address PR review comments

- Split chained vi.useFakeTimers().setSystemTime() into separate calls.
- Switch test setup to dynamic imports so EventEmitter.defaultMaxListeners
  assignment runs before module init (static imports were hoisted above it).
- Drop redundant NODE_ENV guard in monkeyPatchSequelizeErrorsForJest; its
  sole caller already gates on env.isTest.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-06 21:10:51 -04:00

85 lines
1.6 KiB
TypeScript

import type { InferAttributes, InferCreationAttributes } from "sequelize";
import {
BelongsTo,
Column,
DataType,
Default,
ForeignKey,
Table,
} from "sequelize-typescript";
import Document from "./Document";
import Team from "./Team";
import IdModel from "./base/IdModel";
import { SkipChangeset } from "./decorators/Changeset";
import Fix from "./decorators/Fix";
@Table({
tableName: "document_insights",
modelName: "documentInsight",
indexes: [
{
fields: ["documentId", "date"],
unique: true,
},
{
fields: ["teamId", "date"],
},
],
})
@Fix
class DocumentInsight extends IdModel<
InferAttributes<DocumentInsight>,
Partial<InferCreationAttributes<DocumentInsight>>
> {
@Column(DataType.DATEONLY)
date: string;
@Default(0)
@Column(DataType.INTEGER)
@SkipChangeset
viewCount: number;
@Default(0)
@Column(DataType.INTEGER)
@SkipChangeset
viewerCount: number;
@Default(0)
@Column(DataType.INTEGER)
@SkipChangeset
commentCount: number;
@Default(0)
@Column(DataType.INTEGER)
@SkipChangeset
reactionCount: number;
@Default(0)
@Column(DataType.INTEGER)
@SkipChangeset
revisionCount: number;
@Default(0)
@Column(DataType.INTEGER)
@SkipChangeset
editorCount: number;
// associations
@BelongsTo(() => Document, "documentId")
document: Document;
@ForeignKey(() => Document)
@Column(DataType.UUID)
documentId: string;
@BelongsTo(() => Team, "teamId")
team: Team;
@ForeignKey(() => Team)
@Column(DataType.UUID)
teamId: string;
}
export default DocumentInsight;