Skip to main content
Glama
setup-db.ts1.94 kB
import { neon } from '@neondatabase/serverless'; import dotenv from 'dotenv'; dotenv.config(); const sql = neon(process.env.DATABASE_URL!); async function setupDatabase() { console.log('🚀 Setting up database schema...'); try { // Create todos table await sql` CREATE TABLE IF NOT EXISTS todos ( id SERIAL PRIMARY KEY, user_id TEXT NOT NULL, title TEXT NOT NULL, description TEXT, completed BOOLEAN DEFAULT FALSE, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) `; // Create users table await sql` CREATE TABLE IF NOT EXISTS users ( id SERIAL PRIMARY KEY, user_id TEXT UNIQUE NOT NULL, name TEXT, email TEXT, subscription_status TEXT DEFAULT 'free' CHECK (subscription_status IN ('free', 'active', 'cancelled')), plan TEXT DEFAULT 'free', free_todos_used INTEGER DEFAULT 0, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) `; // Create indexes for better performance await sql` CREATE INDEX IF NOT EXISTS idx_todos_user_id ON todos(user_id) `; await sql` CREATE INDEX IF NOT EXISTS idx_todos_created_at ON todos(created_at) `; await sql` CREATE INDEX IF NOT EXISTS idx_users_user_id ON users(user_id) `; console.log('✅ Database schema created successfully!'); console.log('📋 Tables created:'); console.log(' - todos (id, user_id, title, description, completed, created_at, updated_at)'); console.log(' - users (id, user_id, subscription_status, plan, free_todos_used, created_at, updated_at)'); console.log('🔍 Indexes created for optimal performance'); } catch (error) { console.error('❌ Error setting up database:', error); process.exit(1); } } setupDatabase();

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/sholajegede/todo_mcp_server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server