[Typescript] Query builder example

class QueryBuilder {
  private fields: string[] = []
  private wheres: Record<string, string> = {}
  private table: string = ""

  select(...columns: string[]) {
    this.fields = columns
    return this
  }

  from (table: string) {
    this.table = table
    return this
  }

  where(column: string, value: string) {
    this.wheres[column] = value
    return this
  }

  build() {
    return `SELECT ${this.fields.join(", ")} FROM ${this.table} WHERE ${Object.entries(this.wheres).map(([k, v]) => `${k} = ${v}`).join(" AND ")}`
  }
}

const query = new QueryBuilder()
  .select("name", "email")
  .from("users")
  .where("id", "1")
  .where("email", "example@a.com")
  .build()

console.log(query) // "SELECT name, email FROM users WHERE id = 1 AND email = example@a.com" 

 

posted @   Zhentiw  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
历史上的今天:
2021-08-02 [SAA + SAP] 16. RDS
2021-08-02 [SAA + SAP] 15. ElastiCache
2021-08-02 [SAA + SAP] 14. CloudFront & AWS Global Accelerator
2018-08-02 [Vue @Component] Extend Vue Components in TypeScript
2017-08-02 [React] Style the body element with styled-components and "injectGlobal"
2017-08-02 [React] Style a React component with styled-components
2017-08-02 [D3] Create DOM Elements with D3 v4
点击右上角即可分享
微信分享提示