mirror of
https://github.com/Syngnat/GoNavi.git
synced 2026-07-17 02:42:06 +08:00
157 lines
5.3 KiB
TypeScript
157 lines
5.3 KiB
TypeScript
import type { SqlSnippet } from "../types";
|
|
import { t } from "../i18n";
|
|
|
|
type SqlSnippetTranslator = (key: string) => string;
|
|
|
|
type BuiltinSnippetDefinition = {
|
|
id: string;
|
|
prefix: string;
|
|
nameKey: string;
|
|
descriptionKey: string;
|
|
body: string;
|
|
};
|
|
|
|
const builtinSnippetDefinitions: BuiltinSnippetDefinition[] = [
|
|
{
|
|
id: "builtin-sel",
|
|
prefix: "sel",
|
|
nameKey: "sql_snippets.builtin.sel.name",
|
|
descriptionKey: "sql_snippets.builtin.sel.description",
|
|
body: "SELECT ${1:column_list} FROM ${2:table_name}$0;",
|
|
},
|
|
{
|
|
id: "builtin-selw",
|
|
prefix: "selw",
|
|
nameKey: "sql_snippets.builtin.selw.name",
|
|
descriptionKey: "sql_snippets.builtin.selw.description",
|
|
body: "SELECT ${1:columns} FROM ${2:table_name} WHERE ${3:condition}$0;",
|
|
},
|
|
{
|
|
id: "builtin-selj",
|
|
prefix: "selj",
|
|
nameKey: "sql_snippets.builtin.selj.name",
|
|
descriptionKey: "sql_snippets.builtin.selj.description",
|
|
body: "SELECT ${1:columns}\nFROM ${2:t1}\nINNER JOIN ${3:t2} ON ${4:t1.id} = ${5:t2.id}\nWHERE ${6:condition}$0;",
|
|
},
|
|
{
|
|
id: "builtin-ins",
|
|
prefix: "ins",
|
|
nameKey: "sql_snippets.builtin.ins.name",
|
|
descriptionKey: "sql_snippets.builtin.ins.description",
|
|
body: "INSERT INTO ${1:table_name} (${2:columns})\nVALUES (${3:values})$0;",
|
|
},
|
|
{
|
|
id: "builtin-upd",
|
|
prefix: "upd",
|
|
nameKey: "sql_snippets.builtin.upd.name",
|
|
descriptionKey: "sql_snippets.builtin.upd.description",
|
|
body: "UPDATE ${1:table_name}\nSET ${2:column} = ${3:value}\nWHERE ${4:condition}$0;",
|
|
},
|
|
{
|
|
id: "builtin-del",
|
|
prefix: "del",
|
|
nameKey: "sql_snippets.builtin.del.name",
|
|
descriptionKey: "sql_snippets.builtin.del.description",
|
|
body: "DELETE FROM ${1:table_name}\nWHERE ${2:condition}$0;",
|
|
},
|
|
{
|
|
id: "builtin-ct",
|
|
prefix: "ct",
|
|
nameKey: "sql_snippets.builtin.ct.name",
|
|
descriptionKey: "sql_snippets.builtin.ct.description",
|
|
body: "CREATE TABLE ${1:table_name} (\n ${2:id} INT PRIMARY KEY AUTO_INCREMENT,\n ${3:col} ${4:VARCHAR(255)} NOT NULL\n)$0;",
|
|
},
|
|
{
|
|
id: "builtin-alt",
|
|
prefix: "alt",
|
|
nameKey: "sql_snippets.builtin.alt.name",
|
|
descriptionKey: "sql_snippets.builtin.alt.description",
|
|
body: "ALTER TABLE ${1:table_name}\nADD COLUMN ${2:col} ${3:VARCHAR(255)}$0;",
|
|
},
|
|
{
|
|
id: "builtin-dro",
|
|
prefix: "dro",
|
|
nameKey: "sql_snippets.builtin.dro.name",
|
|
descriptionKey: "sql_snippets.builtin.dro.description",
|
|
body: "DROP TABLE IF EXISTS ${1:table_name}$0;",
|
|
},
|
|
{
|
|
id: "builtin-grp",
|
|
prefix: "grp",
|
|
nameKey: "sql_snippets.builtin.grp.name",
|
|
descriptionKey: "sql_snippets.builtin.grp.description",
|
|
body: "SELECT ${1:col}, COUNT(*)\nFROM ${2:table_name}\nGROUP BY ${1:col}$0;",
|
|
},
|
|
{
|
|
id: "builtin-ljo",
|
|
prefix: "ljo",
|
|
nameKey: "sql_snippets.builtin.ljo.name",
|
|
descriptionKey: "sql_snippets.builtin.ljo.description",
|
|
body: "LEFT JOIN ${1:t} ON ${2:left.col} = ${3:right.col}$0",
|
|
},
|
|
{
|
|
id: "builtin-sub",
|
|
prefix: "sub",
|
|
nameKey: "sql_snippets.builtin.sub.name",
|
|
descriptionKey: "sql_snippets.builtin.sub.description",
|
|
body: "SELECT ${1:cols}\nFROM ${2:t1}\nWHERE ${3:col} IN (\n SELECT ${4:col} FROM ${5:t2} WHERE ${6:cond}\n)$0;",
|
|
},
|
|
{
|
|
id: "builtin-lim",
|
|
prefix: "lim",
|
|
nameKey: "sql_snippets.builtin.lim.name",
|
|
descriptionKey: "sql_snippets.builtin.lim.description",
|
|
body: "SELECT ${1:cols} FROM ${2:table_name} LIMIT ${3:10}$0;",
|
|
},
|
|
{
|
|
id: "builtin-ord",
|
|
prefix: "ord",
|
|
nameKey: "sql_snippets.builtin.ord.name",
|
|
descriptionKey: "sql_snippets.builtin.ord.description",
|
|
body: "SELECT ${1:cols} FROM ${2:table_name} ORDER BY ${3:col} ${4|ASC,DESC|}$0;",
|
|
},
|
|
{
|
|
id: "builtin-seld",
|
|
prefix: "seld",
|
|
nameKey: "sql_snippets.builtin.seld.name",
|
|
descriptionKey: "sql_snippets.builtin.seld.description",
|
|
body: "SELECT ${1:cols} FROM ${2:table_name}\nWHERE ${3:date_col} >= '${CURRENT_YEAR}-${CURRENT_MONTH}-${CURRENT_DATE}'$0;",
|
|
},
|
|
{
|
|
id: "builtin-ctt",
|
|
prefix: "ctt",
|
|
nameKey: "sql_snippets.builtin.ctt.name",
|
|
descriptionKey: "sql_snippets.builtin.ctt.description",
|
|
body: "CREATE TABLE ${1:table_name} (\n ${2:id} INT PRIMARY KEY AUTO_INCREMENT,\n ${3:col} ${4:VARCHAR(255)},\n created_at DATETIME DEFAULT CURRENT_TIMESTAMP,\n updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP\n)$0;",
|
|
},
|
|
{
|
|
id: "builtin-inst",
|
|
prefix: "inst",
|
|
nameKey: "sql_snippets.builtin.inst.name",
|
|
descriptionKey: "sql_snippets.builtin.inst.description",
|
|
body: "INSERT INTO ${1:table_name} (${2:columns}, created_at)\nVALUES (${3:values}, '${CURRENT_YEAR}-${CURRENT_MONTH}-${CURRENT_DATE} ${CURRENT_HOUR}:${CURRENT_MINUTE}:${CURRENT_SECOND}')$0;",
|
|
},
|
|
];
|
|
|
|
export const createDefaultSqlSnippets = (
|
|
translate: SqlSnippetTranslator = t,
|
|
): SqlSnippet[] => {
|
|
const now = Date.now();
|
|
return builtinSnippetDefinitions.map((snippet, index) => ({
|
|
id: snippet.id,
|
|
prefix: snippet.prefix,
|
|
name: translate(snippet.nameKey),
|
|
description: translate(snippet.descriptionKey),
|
|
body: snippet.body,
|
|
isBuiltin: true,
|
|
createdAt: now + index,
|
|
}));
|
|
};
|
|
|
|
export const DEFAULT_SQL_SNIPPETS: SqlSnippet[] = createDefaultSqlSnippets();
|
|
|
|
export const BUILTIN_SNIPPET_MAP: Record<string, SqlSnippet> = {};
|
|
for (const s of DEFAULT_SQL_SNIPPETS) {
|
|
BUILTIN_SNIPPET_MAP[s.id] = { ...s };
|
|
}
|