Skip to content
cccskills
FreePublished on GitHub

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.

The English summary is being prepared. Showing the original description.

Works withMySQL
See how to install

Files included (6)

  • SKILL.md4.3 KB
  • crud-operations.md5.6 KB
  • pagination.md11.9 KB
  • query-building.md3.1 KB
  • transactions.md4.4 KB
  • where-conditions.md5.1 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

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

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

Report a problem with this skill