npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

orm-postgresql

v1.0.2

Published

Um ORM TypeScript para PostgreSQL com funcionalidades semelhantes ao Entity Framework e suporte a LINQ-like queries.

Downloads

6

Readme

ORM PostgreSQL com LINQ-like Queries

Este pacote é um ORM (Object-Relational Mapping) para PostgreSQL escrito em TypeScript. Ele foi projetado para ser semelhante ao Entity Framework da Microsoft, oferecendo uma API intuitiva e proteção contra SQL Injection. Além disso, ele inclui suporte a consultas LINQ-like para manipulação de dados em memória.

Recursos Principais

  1. Sem SQL Exposto: Consultas são construídas dinamicamente sem expor código SQL diretamente.
  2. Proteção contra SQL Injection: Parâmetros preparados garantem segurança nas consultas.
  3. Suporte a JOINs Dinâmicos: Inclua dados relacionados com facilidade usando o método include.
  4. LINQ-like Queries: Manipule dados em memória com métodos como where, orderBy, select e join.
  5. Tipagem Forte: Totalmente implementado em TypeScript para garantir segurança de tipos.

Instalação

Para instalar o pacote, execute o seguinte comando:

bash

npm install orm-postgresql

Configuração

Antes de usar o pacote, configure as variáveis de ambiente para conexão com o banco de dados PostgreSQL. Crie um arquivo .env no diretório raiz do seu projeto com as seguintes variáveis:

env

DB_HOST=localhost
DB_PORT=5432
DB_USER=your_username
DB_PASSWORD=your_password
DB_NAME=your_database

Uso Básico

  1. Definindo Modelos Cada tabela no banco de dados deve ser representada por uma classe que estende a classe base Model. Por exemplo:

typescript

import { Model } from 'orm-postgresql';

class User extends Model {
static tableName = 'users';
}

class Post extends Model {
static tableName = 'posts';
}
  1. Conexão com o Banco de Dados Conecte-se ao banco de dados antes de executar qualquer operação:

typescript

import { Connection } from 'orm-postgresql';

(async () => {
const connection = Connection.getInstance();
await connection.connect();
// Sua lógica aqui

await connection.close();
})();

Operações CRUD

Criar um Registro

typescript

const newUser = await User.create({
	name: 'Alice',
	email: '[email protected]',
});
console.log(newUser);

Buscar Registros

Buscar Todos os Registros

typescript

const users = await User.findAll();
console.log(users);

Buscar por ID

typescript

const user = await User.find(1);
console.log(user);

Consultas Avançadas

Incluir Dados Relacionados (include)

Use o método include para carregar dados relacionados. Por exemplo, para buscar usuários e seus posts relacionados:

typescript

import { QueryBuilder } from 'orm-postgresql';

const queryBuilder = new QueryBuilder()
.select(['users.id', 'users.name'])
.from('users')
.include({
	table: 'posts',
	alias: 'p',
	foreignKey: 'userId',
	localKey: 'id',
});
const { query, params } = queryBuilder.build();
const usersWithPosts = await User.connection.query(query, params);

console.log(usersWithPosts);

Manipulação de Dados em Memória (LINQ-like Queries)

O pacote inclui uma classe Linq para manipular dados em memória de forma semelhante ao LINQ da Microsoft.

Filtrar Dados (where)

typescript
import { Linq } from 'orm-postgresql';

const users = [
	{ id: 1, name: 'Alice', age: 25 },
	{ id: 2, name: 'Bob', age: 30 },
];

const filteredUsers = new Linq(users)
	.where(user => user.age > 20)
	.toArray();

console.log(filteredUsers);

Ordenar Dados (orderBy)

typescript
const sortedUsers = new Linq(users)
	.orderBy(user => user.name)
	.toArray();
console.log(sortedUsers);

Selecionar Propriedades Específicas (select)

typescript
const names = new Linq(users)
	.select(user => user.name)
	.toArray();

console.log(names);

Combinar Dados de Dois Arrays (join)

typescript
const posts = [
  { userId: 1, title: 'Post 1' },
  { userId: 1, title: 'Post 2' },
  { userId: 2, title: 'Post 3' },
];

const userPosts = new Linq(users).join(
  posts,
  user => user.id, // Chave do array externo
  post => post.userId, // Chave do array interno
  (user, post) => ({
    userName: user.name,
    postTitle: post.title,
  }) // Função para criar o objeto de saída
);

console.log(userPosts);

Contribuição

Contribuições são bem-vindas! Se você deseja melhorar este pacote, siga estas etapas:

  1. Faça um fork do repositório.
  2. Crie uma branch para sua feature (git checkout -b feature/nome-da-feature).
  3. Commit suas alterações (git commit -m 'Adiciona nova feature').
  4. Envie sua branch (git push origin feature/nome-da-feature).
  5. Abra um Pull Request.

Licença

Este projeto está licenciado sob a MIT License .

Contato

Se tiver dúvidas ou sugestões, entre em contato:

Email: [email protected] GitHub: https://github.com/utiyamo