タグ

関連タグで絞り込む (1)

タグの絞り込みを解除

TypeScriptと*SQLに関するAkinekoのブックマーク (4)

  • Prismaしか知らない私が、DrizzleというORMについて調べてみたぜ

    記事のサマリ Prismaを使ってきた私が、最近注目されているDrizzle ORMについて調べてみました。型の扱いやマイグレーション周り、そして機能面でPrismaとどう違うのかを実際のドキュメントや比較記事を元に整理しています。SQLに近い記述ができる点や軽量性は魅力的でしたが、Prismaの安定感とも比較してどちらを選ぶか悩ましいところです。 なぜDrizzleを調べることになったのか 普段の開発では、Next.jsアプリでPrismaを使っています。schema.prismaファイルにモデル定義を書いて、prisma migrate devでマイグレーションを生成し、生成されたクライアントで型安全にクエリを書く。この流れがとても気に入っていて、特にマイグレーションの安心感は抜群ですよね。チームで開発していてもデータベーススキーマの管理で困ることはほとんどありません。 そんな中で、

    Prismaしか知らない私が、DrizzleというORMについて調べてみたぜ
  • SQLに対するバックエンドのアプローチ比較、そしてSafeQLの紹介

    はじめに こんにちは。calloc134 です。 バックエンド開発において、DB にデータを保存することはよくあることです。 DB と接続してデータのやり取りを行う必要がありますが、皆さんはどのようにしてデータを取得していますか? ORM やクエリビルダを利用したり、逆に SQL を記述してコード生成を行ったりと、様々な方法があります。 今回はこれらのアプローチについて比較し、比較的斬新な方針を取っているものとして SafeQL を紹介します。 注意点 ここでは、TypeScript のバックエンド開発と、そこで利用されるライブラリを前提として話を進めます。 GoPython など他の言語での利用方法については、別途調査が必要です。 SQL に対するアプローチ まず、SQL に対するアプローチには大きく分けて 2 つの方法があります。 それぞれのライブラリの使い方を、簡単に見ていきま

    SQLに対するバックエンドのアプローチ比較、そしてSafeQLの紹介
  • 生SQLに型を手書きする時代は終わり?Prismaの新機能「TypedSQL」

    SQLを扱う $queryRaw TypeScript向けのORMライブラリとしてPrismaがあります。Prismaは直感的で型安全なAPIを提供し、TypeScript向けのORMとしては第一に名前が上がることが多いライブラリです。 しかしそんな人気なPrismaでも、裏側では少しクセのあるSQLが発行されていたり、欲しいSQLがPrismaのAPIでは実現できない場合があります。 そういった場合のために $queryRaw というメソッドが用意されており、これを使うことで生SQLを書いてその結果を受け取ることができました。他のORMにもよくある機能です。 例えば以下のように実装することができます。 const users = await prisma.$queryRaw` SELECT id, name FROM "Users" WHERE id = ${userID} `; co

    生SQLに型を手書きする時代は終わり?Prismaの新機能「TypedSQL」
  • Prisma以外の選択肢、Drizzle ORMではじめるTypeScriptの快適SQLライフ

    エッジ環境で使えるORMを探していたところ、Drizzle ORMという新しいORMを知り、感動したので紹介します。 Drizzle ORMTypeScript向けの強力で柔軟なRDB用のORMです。 Drizzle ORMの主な特徴 強力な型付け TypeScriptORMなので当たり前ではありますが、強力な型付けによって型安全に開発することができます。 また、スキーマの定義を以下のようにTypeScriptで行うため、Prismaのようにスキーマを定義したあとにクライアントを生成するといったことは必要はありません。 export const popularityEnum = pgEnum('popularity', [ 'unknown', 'known', 'popular', ]); export const countries = pgTable( 'countries',

    Prisma以外の選択肢、Drizzle ORMではじめるTypeScriptの快適SQLライフ
  • 1