SkillAgentSearch skills...

orm-mysql-usage

Build MySQL queries, perform CRUD operations, and manage transactions using @axiosleo/orm-mysql

Install / Use

npx skills add AxiosLeo/node-orm-mysql

Installs into whichever agent you are using.

About this skill
📄

SKILL.md

Installable skill definition

Quality Score

68/100

Supported Platforms

Universal

name: orm-mysql-usage description: Build MySQL queries, perform CRUD operations, and manage transactions using @axiosleo/orm-mysql. Use when writing database queries, building where conditions, inserting/updating/deleting rows, managing transactions, or working with the ORM query builder in this project.

@axiosleo/orm-mysql Usage Guide

Installation

npm install @axiosleo/orm-mysql

Setup

Create a Connection

const { createClient, QueryHandler } = require("@axiosleo/orm-mysql");

const conn = createClient({
  host: "localhost",
  port: 3306,
  user: "root",
  password: "password",
  database: "my_db",
});

const db = new QueryHandler(conn);

Create a Connection Pool (recommended for production)

const { createPool, QueryHandler } = require("@axiosleo/orm-mysql");

const pool = createPool({
  host: "localhost",
  port: 3306,
  user: "root",
  password: "password",
  database: "my_db",
  connectionLimit: 10,
});

const db = new QueryHandler(pool);

Using MySQLClient

const { MySQLClient } = require("@axiosleo/orm-mysql");

const client = new MySQLClient({
  host: "localhost",
  port: 3306,
  user: "root",
  password: "password",
  database: "my_db",
}, null, "pool"); // "default" | "promise" | "pool"

const rows = await client.table("users").select();
await client.close();

Class Hierarchy

QueryCondition      -- where clauses (where, whereIn, whereLike, whereBetween...)
  └── Query         -- query building (table, attr, join, orderBy, limit, page...)
        └── QueryOperator          -- execution (select, find, insert, update, delete...)
              └── TransactionOperator  -- adds append() for row locking
  • QueryHandler wraps a connection/pool and creates QueryOperator via .table(name)
  • TransactionHandler wraps a promise connection and creates TransactionOperator via .table(name)

Quick Start

const db = new QueryHandler(conn);

// SELECT
const users = await db.table("users")
  .where("age", ">", 18)
  .orderBy("name", "asc")
  .limit(10)
  .select("id", "name", "age");

// INSERT
await db.table("users").insert({ name: "Joe", age: 25 });

// UPDATE
await db.table("users").where("id", 1).update({ age: 26 });

// DELETE
await db.table("users").where("id", 1).delete();

// COUNT
const total = await db.table("users").where("age", ">", 18).count();
// IMPORTANT: for paginated lists, reuse the SAME builder for count() and select() -- see pagination.md

// FIND single row
const user = await db.table("users").where("id", 1).find();

Dry Run with notExec()

Call notExec() before any CRUD method to get a Builder object with .sql and .values instead of executing:

const builder = await db.table("users")
  .where("age", ">", 18)
  .notExec()
  .select("id", "name");

console.log(builder.sql);    // "SELECT `id`, `name` FROM `users` WHERE `age` > ?"
console.log(builder.values); // [18]

Reference Files

| Scenario | File | |----------|------| | Building queries (table, join, orderBy, limit, groupBy, attr) | query-building.md | | Where conditions (where, whereIn, whereLike, whereBetween...) | where-conditions.md | | CRUD operations (select, find, count, insert, update, delete, incrBy, upsertRow) | crud-operations.md | | Pagination (reuse the same builder for count() and select(), avoid duplicated where clauses) | pagination.md | | Transactions (beginTransaction, commit, rollback, FOR UPDATE) | transactions.md |

Hooks

Register pre/post hooks for query operations:

const { Hook } = require("@axiosleo/orm-mysql");

Hook.pre(async (options) => {
  console.log("Before:", options.operator, options.tables);
}, { table: "users", opt: "insert" });

Hook.post(async (options, result) => {
  console.log("After:", result);
}, { table: "users", opt: "insert" });

Schema Helpers

const exists = await db.existTable("users");
const dbExists = await db.existDatabase("my_db");
const fields = await db.getTableFields("my_db", "users", "COLUMN_NAME", "DATA_TYPE");

Raw SQL

const result = await db.query({ sql: "SELECT * FROM users WHERE id = ?", values: [1] });

Related Skills

View on GitHub
GitHub Stars0
CategoryData
Updated3mo ago
Forks0

Security Score

78/100

Audited on Jun 12, 2026

1 medium1 low1 info