Limpando um banco de dados com o Drizzle ORM

3 de abril (4 dias atrás)

import { sql } from 'drizzle-orm'
import { db } from '@/db'

if (!('DATABASE_URL' in process.env))
  throw new Error('DATABASE_URL not found on .env.development')

async function reset() {
  console.log('⏳ Resetting database...')
  const start = Date.now()

  const query = sql`
		-- Delete all tables
		DO $$ DECLARE
		    r RECORD;
		BEGIN
		    FOR r IN (SELECT tablename FROM pg_tables WHERE schemaname = current_schema()) LOOP
		        EXECUTE 'DROP TABLE IF EXISTS ' || quote_ident(r.tablename) || ' CASCADE';
		    END LOOP;
		END $$;
		
		-- Delete enums
		DO $$ DECLARE
			r RECORD;
		BEGIN
			FOR r IN (select t.typname as enum_name
			from pg_type t 
				join pg_enum e on t.oid = e.enumtypid  
				join pg_catalog.pg_namespace n ON n.oid = t.typnamespace
			where n.nspname = current_schema()) LOOP
				EXECUTE 'DROP TYPE IF EXISTS ' || quote_ident(r.enum_name);
			END LOOP;
		END $$;		
		`

  await db.execute(query)

  const end = Date.now()
  console.log(`✅ Reset end & took ${end - start}ms`)
  process.exit(0)
}

reset().catch((err) => {
  console.error('❌ Reset failed')
  console.error(err)
  process.exit(1)
})

Fontes:

Estações de Rádio

Estação Rock

Estação Rock

Rock

Estação Jazz

Estação Jazz

Jazz

Estação Pop

Estação Pop

Pop

Estação Clássica

Estação Clássica

Clássica

Estação Eletrônica

Estação Eletrônica

Eletrônica

Lucas Saliés Brum