diff options
Diffstat (limited to 'src/server/db/schema/comments.ts')
| -rw-r--r-- | src/server/db/schema/comments.ts | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/server/db/schema/comments.ts b/src/server/db/schema/comments.ts new file mode 100644 index 0000000..9c0626b --- /dev/null +++ b/src/server/db/schema/comments.ts @@ -0,0 +1,43 @@ +import { + boolean, + index, + integer, + json, + primaryKey, + serial, + timestamp, + varchar, +} from 'drizzle-orm/pg-core'; +import { pgTableCreator } from 'drizzle-orm/pg-core'; + +const createTable = pgTableCreator((name) => `blog_${name}`); + +export const roles = createTable('roles', { + userId: varchar('userId', { length: 256 }).primaryKey(), + name: varchar('name', { length: 256 }).notNull(), + canDelete: boolean('canDelete').notNull(), +}); + +export const comments = createTable('comments', { + id: serial('id').primaryKey().notNull(), + page: varchar('page', { length: 256 }).notNull(), + thread: integer('thread'), + author: varchar('author', { length: 256 }).notNull(), + content: json('content').notNull(), + timestamp: timestamp('timestamp', { withTimezone: true }) + .defaultNow() + .notNull(), +}); + +export const rates = createTable( + 'rates', + { + userId: varchar('userId', { length: 256 }).notNull(), + commentId: integer('commentId').notNull(), + like: boolean('like').notNull(), + }, + (table) => [ + primaryKey({ columns: [table.userId, table.commentId] }), + index('comment_idx').on(table.commentId), + ], +); |
