1import { column, defineDb, defineTable, NOW } from 'astro:db'; 2 3const Users = defineTable({ 4 columns: { 5 id: column.number({ primaryKey: true }), 6 nickname: column.text({ unique: true, optional: true }), 7 userDid: column.text({ name: "user_did", unique: true }), 8 joinedAt: column.date({ name: "joined_at", default: NOW }), 9 }, 10 indexes: [ 11 { on: ["userDid"], unique: true }, 12 ], 13}); 14 15const Works = defineTable({ 16 columns: { 17 id: column.number({ primaryKey: true }), 18 slug: column.text({ unique: true }), 19 author: column.text({ references: () => Users.columns.userDid }), 20 // recordkey 21 title: column.text(), 22 content: column.text({ multiline: true }), 23 tags: column.json(), 24 createdAt: column.date({ name: "created_at", default: NOW }), 25 updatedAt: column.date({ name: "updated_at", optional: true }), 26 }, 27 indexes: [ 28 { on: ["slug", "createdAt"], unique: true }, 29 ], 30}); 31 32export default defineDb({ 33 tables: { 34 Users, 35 Works, 36 }, 37}); 38