swadhinbiswas Fix: Add date validation in analysis.ts to prevent RangeError · 1/20/2026
a7662cd
73 lines · 2.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
/**
 * Wiki Schema - Drizzle ORM
 * Defines wiki pages and revisions
 */

import { relations } from "drizzle-orm";
import { integer, pgTable, text, timestamp } from "drizzle-orm/pg-core";
import { repositories } from "./repositories";
import { users } from "./users";

export const wikiPages = pgTable("wiki_pages", {
  id: text("id").primaryKey(),
  repositoryId: text("repository_id")
    .notNull()
    .references(() => repositories.id, { onDelete: "cascade" }),
  slug: text("slug").notNull(),
  title: text("title").notNull(),
  content: text("content").notNull(),
  format: text("format").notNull().default("markdown"), // markdown, asciidoc, rst
  parentId: text("parent_id").references((): any => wikiPages.id),
  order: integer("order").default(0),
  lastEditorId: text("last_editor_id").references(() => users.id),
  viewCount: integer("view_count").default(0),
  createdAt: timestamp("created_at").notNull().defaultNow(),
  updatedAt: timestamp("updated_at").notNull().defaultNow(),
});

export const wikiRevisions = pgTable("wiki_revisions", {
  id: text("id").primaryKey(),
  pageId: text("page_id")
    .notNull()
    .references(() => wikiPages.id, { onDelete: "cascade" }),
  content: text("content").notNull(),
  message: text("message"),
  authorId: text("author_id")
    .notNull()
    .references(() => users.id),
  createdAt: timestamp("created_at").notNull().defaultNow(),
});

// Relations
export const wikiPagesRelations = relations(wikiPages, ({ one, many }) => ({
  repository: one(repositories, {
    fields: [wikiPages.repositoryId],
    references: [repositories.id],
  }),
  parent: one(wikiPages, {
    fields: [wikiPages.parentId],
    references: [wikiPages.id],
  }),
  children: many(wikiPages),
  revisions: many(wikiRevisions),
  lastEditor: one(users, {
    fields: [wikiPages.lastEditorId],
    references: [users.id],
  }),
}));

export const wikiRevisionsRelations = relations(wikiRevisions, ({ one }) => ({
  page: one(wikiPages, {
    fields: [wikiRevisions.pageId],
    references: [wikiPages.id],
  }),
  author: one(users, {
    fields: [wikiRevisions.authorId],
    references: [users.id],
  }),
}));

// Types
export type WikiPage = typeof wikiPages.$inferSelect;
export type WikiRevision = typeof wikiRevisions.$inferSelect;