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 installFiles 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
QueryHandlerwraps a connection/pool and createsQueryOperatorvia.table(name)TransactionHandlerwraps a promise connection and createsTransactionOperatorvia.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] });
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.