agentskills.codes
OR

orm-mysql-usage

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.

Install

mkdir -p .claude/skills/orm-mysql-usage && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/13425" && unzip -o skill.zip -d .claude/skills/orm-mysql-usage && rm skill.zip

Installs to .claude/skills/orm-mysql-usage

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

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.
270 chars✓ has a “when” triggerlonger than Claude Code's old 250-char listing cap (fine on current versions)

About this skill

@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

ScenarioFile
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] });

Search skills

Search the agent skills registry