Value Type

GenORMではSQLの表現を以下の3つの種類に分類し、各SQLの表現にGoの型を対応させることでSQLのミスを防止しています。

  • Literal
  • Expr
  • Column

また、uuid.UUIDなどの「その型自体がsql.Scannerを実装しており、pointerがdriver.Valuerを実装している型」をgenorm.ExprTypeinterfaceに入れることができます。

Literal

SQLでLiteralとして扱われる値です。

genorm.ExprTypeinterfaceに当てはまる型の値がLiteralにあたります。

boolintfloat32などのgenorm.ExprTypeinterfaceに入れられないプリミティブ型の値はgenorm.Wrap関数を用いてgenorm.WrappedPrimitive[T]型とすることで、Literalとして扱えます。

Expr

SQLでexpressionとして扱う値です。

この値はExprを構成する中で使用したテーブルの型とExprが対応するgenorm.ExprTypeinterfaceに当てはまる型を型パラメーターとして持ちます。

例えば、genorm.EqLit(user.IDExpr, uuid.New())の返り値はusersテーブルのidカラムを使用しており、SQLの中で真偽値となるため、*orm.UserTableboolを型パラメーターとして持つExprとなります。

Joinを含まないテーブルのカラムは、usersテーブルのidカラムであればusers.IDExprのように、テーブルに対応するpackage内の~Exprという名前の変数を用いることでExprとして使用できます。 Joinを含むテーブルのカラムは、users INNER JOIN messages ON users.id = messages.user_idであれば、orm.MessageUserParseExpr(user.ID)のように、テーブルに対応する~ParseExprという関数を使ってテーブルのExprに変換できます。

Column

SQLでカラム名として扱われる値です。

この値はカラムを含むテーブルに対応する型とExprが対応するgenorm.ExprTypeinterfaceに当てはまる型を型パラメーターとして持ちます。

Joinを含まないテーブルのカラムは、usersテーブルのidカラムであればusers.IDのように、テーブルに対応するpackage内の変数を用いることでColumnとして使用できます。 Joinを含むテーブルのカラムは、users INNER JOIN messages ON users.id = messages.user_idであれば、orm.MessageUserParse(user.ID)のように、テーブルに対応する~Parseという関数を使ってテーブルのColumnに変換できます。

results matching ""

    No results matching ""