Query Builder Escrita:
knex('users').where('id', 1)
Resultado:
select * from `users` where `id` = 1
Tipos suportados: PostgreSQL, CockroachDB, MSSQL, MySQL, MariaDB, SQLite3, Better-SQLite3, Oracle, e Amazon Redshift
client: 'mysql', //nome do pacote que foi instalado
connection: {
host: process.env.MYSQL_HOST,
user: process.env.MYSQL_USER,
password: process.env.MYSQL_PASSWORD,
database: process.env.MYSQL_DATABASE,
},
migrations: {
tableName: 'knex_migrations_epice',
directory: path.resolve(__dirname, 'src', 'models', 'migrations'),
},
seeds: {
directory: path.resolve(__dirname, 'src', 'models', 'seeds'),
},
As migrações são uma maneira de fazer alterações ou atualizações no banco de dados, como criar ou descartar tabelas, além de atualizar uma tabela com novas colunas com restrições por meio de scripts gerados.
Vamos criar uma tabela de usuários e tarefas usando a ferramenta de linha de comando knex. Na raiz do nosso projeto execute os seguintes comandos:
yarn knex migrate:make nome_da_tabela
import { Knex } from "knex";
export async function up(knex: Knex): Promise<void> {
return await knex.schema.createTable('database_epice', (table) => {
table.increments('id').primary();
table.text('name').notNullable();
table.text('email').notNullable();
table.text('curso').notNullable();
table.timestamp('created_at').defaultTo(knex.fn.now())
table.timestamp('updated_at').defaultTo(knex.fn.now())
})
}
export async function down(knex: Knex): Promise<void> {
return await knex.schema.dropTable('database_epice');
}
Agora podemos executar o comando abaixo realizando uma migração:
yarn knex migrate:latest
Para desfazer toda nossa tabela, é só rodar a migrate:rollback
yarn knex migrate:rollback
Para iniciar dados em nossa tabela, vamos rodar o seed
, assim criamos um arquivo com alguns dados dentro
yarn knex seed:make 01_users
import { Knex } from "knex";
export async function seed(knex: Knex): Promise<void> {
// Deletes ALL existing entries
await knex("nome_da_tabela").del();
// Inserts seed entries
await knex("nome_da_tabela").insert([
{ name: "Fulano", email: '[email protected]', curso: '2 Informática ' }
{ name: "Beutrano", email: '[email protected]', curso: '2 Geologia' },
{ name: "Ciclano", email: '[email protected]', curso: '2 Edificações' },
]);
};
Agora podemos executar o comando abaixo na raiz do nosso projeto para semear nosso banco de dados!
yarn knex seed:run