@auth/kysely-adapter
Auth.js / NextAuth.js の公式 Kysely アダプター。
インストール
npm install kysely @auth/kysely-adapter
KyselyAuth<DB, T>
渡されたデータベースインターフェースを検証するための、オリジナルの Kysely
クラスのラッパー。通常の Kysely インスタンスも使用できますが、ラップすることで、データベースインターフェースが Auth.js に必要なフィールドを実装していることが保証されます。kysely-codegen
と併用する場合、Codegen
型を 2 番目のジェネリック引数として渡すことができます。生成された型が使用され、KyselyAuth
は正しいフィールドが存在することのみを検証します。
拡張
Kysely
<DB
>
型パラメーター
型パラメーター | 値 |
---|---|
DB は T を拡張します | - |
T | データベース |
コンストラクター
new KyselyAuth(args)
new KyselyAuth<DB, T>(args): KyselyAuth<DB, T>
パラメーター
パラメーター | 型 |
---|---|
args | KyselyConfig |
戻り値
KyselyAuth
<DB
, T
>
継承元
Kysely<DB>.constructor
new KyselyAuth(args)
new KyselyAuth<DB, T>(args): KyselyAuth<DB, T>
パラメーター
パラメーター | 型 |
---|---|
args | KyselyProps |
戻り値
KyselyAuth
<DB
, T
>
継承元
Kysely<DB>.constructor
プロパティ
#private
private #private: any;
継承元
Kysely.#private
#private
private #private: any;
継承元
Kysely.#private
アクセサー
dynamic
get dynamic(): DynamicModule
DynamicModule モジュールを返します。
DynamicModule モジュールは、厳密な型付けをバイパスし、クエリに動的な値を渡すために使用できます。
戻り値
DynamicModule
fn
get fn(): FunctionModule<DB, keyof DB>
型安全な関数呼び出しを記述するために使用できる FunctionModule を返します。
const { count } = db.fn
await db.selectFrom('person')
.innerJoin('pet', 'pet.owner_id', 'person.id')
.select([
'person.id',
count('pet.id').as('pet_count')
])
.groupBy('person.id')
.having(count('pet.id'), '>', 10)
.execute()
生成されたSQL(PostgreSQL)
select "person"."id", count("pet"."id") as "pet_count"
from "person"
inner join "pet" on "pet"."owner_id" = "person"."id"
group by "person"."id"
having count("pet"."id") > $1
戻り値
FunctionModule
<DB
, keyof DB
>
introspection
get introspection(): DatabaseIntrospector
DatabaseIntrospector | データベースイントロスペクターを返します。
戻り値
DatabaseIntrospector
isTransaction
get isTransaction(): boolean
この Kysely
インスタンスがトランザクションである場合は true を返します。
db instanceof Transaction
を使用することもできます。
戻り値
boolean
schema
get schema(): SchemaModule
データベーススキーマを構築するための SchemaModule モジュールを返します。
戻り値
SchemaModule
メソッド
connection()
connection(): ConnectionBuilder<DB>
単一のデータベース接続にバインドされた kysely インスタンスを提供します。
例
await db
.connection()
.execute(async (db) => {
// `db` is an instance of `Kysely` that's bound to a single
// database connection. All queries executed through `db` use
// the same connection.
await doStuff(db)
})
戻り値
ConnectionBuilder
<DB
>
継承元
Kysely.connection
deleteFrom()
deleteFrom(from)
deleteFrom<TR>(from): DeleteQueryBuilder<DB, ExtractTableAlias<DB, TR>, DeleteResult>
削除クエリを作成します。
削除操作の where 句を指定する方法の例については、DeleteQueryBuilder.where メソッドを参照してください。
クエリの戻り値は DeleteResult のインスタンスです。
例
ID 1 の人物を削除しています
const result = await db
.deleteFrom('person')
.where('person.id', '=', 1)
.executeTakeFirst()
console.log(result.numDeletedRows)
生成されたSQL(PostgreSQL)
delete from "person" where "person"."id" = $1
MySQL のような一部のデータベースは、複数のテーブルからの削除をサポートしています
const result = await db
.deleteFrom(['person', 'pet'])
.using('person')
.innerJoin('pet', 'pet.owner_id', '=', 'person.id')
.where('person.id', '=', 1)
.executeTakeFirst()
生成された SQL (MySQL)
delete from `person`, `pet`
using `person`
inner join `pet` on `pet`.`owner_id` = `person`.`id`
where `person`.`id` = ?
型パラメータ
型パラメーター |
---|
TR は string を拡張します |
パラメータ
パラメーター | 型 |
---|---|
from | TR [] |
戻り値
DeleteQueryBuilder
<DB
, ExtractTableAlias
<DB
, TR
>, DeleteResult
>
継承元
Kysely.deleteFrom
deleteFrom(tables)
deleteFrom<TR>(tables): DeleteQueryBuilder<From<DB, TR>, ExtractAliasFromTableExpression<DB, TR>, DeleteResult>
型パラメータ
型パラメーター |
---|
TR は string | AliasedExpression <any , any > を拡張します |
パラメータ
パラメーター | 型 |
---|---|
tables | TR [] |
戻り値
DeleteQueryBuilder
<From
<DB
, TR
>, ExtractAliasFromTableExpression
<DB
, TR
>, DeleteResult
>
継承元
Kysely.deleteFrom
deleteFrom(from)
deleteFrom<TR>(from): DeleteQueryBuilder<DB, ExtractTableAlias<DB, TR>, DeleteResult>
型パラメータ
型パラメーター |
---|
TR は string を拡張します |
パラメータ
パラメーター | 型 |
---|---|
from | TR |
戻り値
DeleteQueryBuilder
<DB
, ExtractTableAlias
<DB
, TR
>, DeleteResult
>
継承元
Kysely.deleteFrom
deleteFrom(table)
deleteFrom<TR>(table): DeleteQueryBuilder<From<DB, TR>, ExtractAliasFromTableExpression<DB, TR>, DeleteResult>
型パラメータ
型パラメーター |
---|
TR は string | AliasedExpression <any , any > を拡張します |
パラメータ
パラメーター | 型 |
---|---|
table | TR |
戻り値
DeleteQueryBuilder
<From
<DB
, TR
>, ExtractAliasFromTableExpression
<DB
, TR
>, DeleteResult
>
継承元
Kysely.deleteFrom
destroy()
destroy(): Promise<void>
すべてのリソースを解放し、データベースから切断します。
Kysely
インスタンスの使用が完了したら、これを呼び出す必要があります。
戻り値
Promise
<void
>
継承元
Kysely.destroy
executeQuery()
executeQuery<R>(query, queryId?): Promise<QueryResult<R>>
指定されたコンパイル済みクエリまたはクエリビルダーを実行します。
詳細については、ビルド、コンパイル、実行コードの分割レシピを参照してください。
型パラメータ
型パラメーター |
---|
R |
パラメータ
パラメーター | 型 |
---|---|
query | CompiledQuery <R > | Compilable <R > |
queryId ? | QueryId |
戻り値
Promise
<QueryResult
<R
>>
継承元
Kysely.executeQuery
insertInto()
insertInto<T>(table): InsertQueryBuilder<DB, T, InsertResult>
挿入クエリを作成します。
このクエリの戻り値は InsertResult のインスタンスです。InsertResult には、データベースが返した場合に挿入された行の自動インクリメント ID を保持する InsertResult.insertId | insertId フィールドがあります。
詳細と例については、InsertQueryBuilder.values | values メソッドを参照してください。また、PostgreSQL のようなサポートされているデータベースで列を返す方法については、ReturningInterface.returning | returning メソッドを参照してください。
例
const result = await db
.insertInto('person')
.values({
first_name: 'Jennifer',
last_name: 'Aniston'
})
.executeTakeFirst()
console.log(result.insertId)
PostgreSQL のような一部のデータベースは、returning
メソッドをサポートしています
const { id } = await db
.insertInto('person')
.values({
first_name: 'Jennifer',
last_name: 'Aniston'
})
.returning('id')
.executeTakeFirst()
型パラメータ
型パラメーター |
---|
T は string を拡張します |
パラメータ
パラメーター | 型 |
---|---|
table | T |
戻り値
InsertQueryBuilder
<DB
, T
, InsertResult
>
継承元
Kysely.insertInto
replaceInto()
replaceInto<T>(table): InsertQueryBuilder<DB, T, InsertResult>
置換クエリを作成します。
MySQL のみのステートメントで、既存の行を更新する代わりに、衝突時に値を削除して挿入する InsertQueryBuilder.onDuplicateKeyUpdate と似ています。
このクエリの戻り値は InsertResult のインスタンスです。InsertResult には、データベースが返した場合に挿入された行の自動インクリメント ID を保持する InsertResult.insertId | insertId フィールドがあります。
詳細と例については、InsertQueryBuilder.values | values メソッドを参照してください。
例
const result = await db
.replaceInto('person')
.values({
first_name: 'Jennifer',
last_name: 'Aniston'
})
.executeTakeFirst()
console.log(result.insertId)
型パラメータ
型パラメーター |
---|
T は string を拡張します |
パラメータ
パラメーター | 型 |
---|---|
table | T |
戻り値
InsertQueryBuilder
<DB
, T
, InsertResult
>
継承元
Kysely.replaceInto
selectFrom()
selectFrom(from)
selectFrom<TE>(from): SelectQueryBuilder<DB, ExtractTableAlias<DB, TE>, {}>
指定されたテーブルまたはテーブルに対して select
クエリビルダーを作成します。
このメソッドに渡されるテーブルは、クエリの from
句として構築されます。
例
1 つのテーブルの select クエリを作成する
db.selectFrom('person').selectAll()
生成されたSQL(PostgreSQL)
select * from "person"
エイリアスを持つ1つのテーブルのselectクエリを作成する
const persons = await db.selectFrom('person as p')
.select(['p.id', 'first_name'])
.execute()
console.log(persons[0].id)
生成されたSQL(PostgreSQL)
select "p"."id", "first_name" from "person" as "p"
サブクエリから select クエリを作成する
const persons = await db.selectFrom(
(eb) => eb.selectFrom('person').select('person.id as identifier').as('p')
)
.select('p.identifier')
.execute()
console.log(persons[0].identifier)
生成されたSQL(PostgreSQL)
select "p"."identifier",
from (
select "person"."id" as "identifier" from "person"
) as p
生のSQLからselectクエリを作成する
import { sql } from 'kysely'
const items = await db
.selectFrom(sql<{ one: number }>`(select 1 as one)`.as('q'))
.select('q.one')
.execute()
console.log(items[0].one)
生成されたSQL(PostgreSQL)
select "q"."one",
from (
select 1 as one
) as q
sql
タグを使用する場合は、Kysely がクエリの残りの部分で使用できる列を特定できるように、生のコードスニペット/クエリの結果型も提供する必要があります。
selectFrom
メソッドは、複数のテーブルに対して配列も受け入れます。上記のすべての例は、配列でも使用できます。
import { sql } from 'kysely'
const items = await db.selectFrom([
'person as p',
db.selectFrom('pet').select('pet.species').as('a'),
sql<{ one: number }>`(select 1 as one)`.as('q')
])
.select(['p.id', 'a.species', 'q.one'])
.execute()
生成されたSQL(PostgreSQL)
select "p".id, "a"."species", "q"."one"
from
"person" as "p",
(select "pet"."species" from "pet") as a,
(select 1 as one) as "q"
型パラメータ
型パラメーター |
---|
TE は string を拡張します |
パラメータ
パラメーター | 型 |
---|---|
from | TE [] |
戻り値
SelectQueryBuilder
<DB
, ExtractTableAlias
<DB
, TE
>, {}>
継承元
Kysely.selectFrom
selectFrom(from)
selectFrom<TE>(from): SelectQueryBuilder<From<DB, TE>, ExtractAliasFromTableExpression<DB, TE>, {}>
型パラメータ
型パラメーター |
---|
TE は string | AliasedExpression <any , any > | AliasedExpressionFactory <DB , keyof DB > を拡張します |
パラメータ
パラメーター | 型 |
---|---|
from | TE [] |
戻り値
SelectQueryBuilder
<From
<DB
, TE
>, ExtractAliasFromTableExpression
<DB
, TE
>, {}>
継承元
Kysely.selectFrom
selectFrom(from)
selectFrom<TE>(from): SelectQueryBuilder<DB, ExtractTableAlias<DB, TE>, {}>
型パラメータ
型パラメーター |
---|
TE は string を拡張します |
パラメータ
パラメーター | 型 |
---|---|
from | TE |
戻り値
SelectQueryBuilder
<DB
, ExtractTableAlias
<DB
, TE
>, {}>
継承元
Kysely.selectFrom
selectFrom(from)
selectFrom<TE>(from): SelectQueryBuilder<DB & PickTableWithAlias<DB, TE>, ExtractTableAlias<DB, TE>, {}>
型パラメータ
型パラメーター |
---|
TE は ${string} as ${string} を拡張します |
パラメータ
パラメーター | 型 |
---|---|
from | TE |
戻り値
SelectQueryBuilder
<DB
& PickTableWithAlias
<DB
, TE
>, ExtractTableAlias
<DB
, TE
>, {}>
継承元
Kysely.selectFrom
selectFrom(from)
selectFrom<TE>(from): SelectQueryBuilder<From<DB, TE>, ExtractAliasFromTableExpression<DB, TE>, {}>
型パラメータ
型パラメーター |
---|
TE は string | AliasedExpression <any , any > | AliasedExpressionFactory <DB , keyof DB > を拡張します |
パラメータ
パラメーター | 型 |
---|---|
from | TE |
戻り値
SelectQueryBuilder
<From
<DB
, TE
>, ExtractAliasFromTableExpression
<DB
, TE
>, {}>
継承元
Kysely.selectFrom
transaction()
transaction(): TransactionBuilder<DB>
トランザクション内でクエリを実行するために使用できる TransactionBuilder を作成します。
返された TransactionBuilder を使用してトランザクションを構成できます。その後、TransactionBuilder.execute メソッドを呼び出してトランザクションを実行できます。TransactionBuilder.execute は、トランザクション内で実行される関数を受け取ります。関数がスローされると、トランザクションはロールバックされます。それ以外の場合、トランザクションはコミットされます。
TransactionBuilder.execute | execute メソッドに渡されるコールバック関数は、唯一の引数としてトランザクションオブジェクトを受け取ります。トランザクションは Kysely を継承する Transaction 型です。トランザクションオブジェクトを通じて開始されたクエリは、トランザクション内で実行されます。
例
const catto = await db.transaction().execute(async (trx) => {
const jennifer = await trx.insertInto('person')
.values({
first_name: 'Jennifer',
last_name: 'Aniston',
})
.returning('id')
.executeTakeFirstOrThrow()
await someFunction(trx, jennifer)
return await trx.insertInto('pet')
.values({
user_id: jennifer.id,
name: 'Catto',
species: 'cat'
})
.returning('*')
.executeTakeFirst()
})
分離レベルの設定
await db
.transaction()
.setIsolationLevel('serializable')
.execute(async (trx) => {
await doStuff(trx)
})
戻り値
TransactionBuilder
<DB
>
継承元
Kysely.transaction
updateTable()
updateTable(table)
updateTable<TR>(table): UpdateQueryBuilder<DB, ExtractTableAlias<DB, TR>, ExtractTableAlias<DB, TR>, UpdateResult>
更新クエリを作成します。
更新操作の where 句を指定する方法の例については、UpdateQueryBuilder.where メソッドを参照してください。
更新を指定する方法の例については、UpdateQueryBuilder.set メソッドを参照してください。
クエリの戻り値は UpdateResult です。
例
const result = await db
.updateTable('person')
.set({ first_name: 'Jennifer' })
.where('person.id', '=', 1)
.executeTakeFirst()
console.log(result.numUpdatedRows)
型パラメーター
型パラメーター |
---|
TR は string を拡張します |
パラメーター
パラメーター | 型 |
---|---|
table | TR |
戻り値
UpdateQueryBuilder
<DB
, ExtractTableAlias
<DB
, TR
>, ExtractTableAlias
<DB
, TR
>, UpdateResult
>
継承元
Kysely.updateTable
updateTable(table)
updateTable<TR>(table): UpdateQueryBuilder<DB & PickTableWithAlias<DB, TR>, ExtractTableAlias<DB, TR>, ExtractTableAlias<DB, TR>, UpdateResult>
型パラメーター
型パラメーター |
---|
TR extends ${string} as ${string} |
パラメーター
パラメーター | 型 |
---|---|
table | TR |
戻り値
UpdateQueryBuilder
<DB
& PickTableWithAlias
<DB
, TR
>, ExtractTableAlias
<DB
, TR
>, ExtractTableAlias
<DB
, TR
>, UpdateResult
>
継承元
Kysely.updateTable
updateTable(table)
updateTable<TR>(table): UpdateQueryBuilder<From<DB, TR>, ExtractAliasFromTableExpression<DB, TR>, ExtractAliasFromTableExpression<DB, TR>, UpdateResult>
型パラメーター
型パラメーター |
---|
TR は string | AliasedExpression <any , any > を拡張します |
パラメーター
パラメーター | 型 |
---|---|
table | TR |
戻り値
UpdateQueryBuilder
<From
<DB
, TR
>, ExtractAliasFromTableExpression
<DB
, TR
>, ExtractAliasFromTableExpression
<DB
, TR
>, UpdateResult
>
継承元
Kysely.updateTable
with()
with<N, E>(name, expression): QueryCreatorWithCommonTableExpression<DB, N, E>
with
クエリ(共通テーブル式)を作成します。
例
await db
.with('jennifers', (db) => db
.selectFrom('person')
.where('first_name', '=', 'Jennifer')
.select(['id', 'age'])
)
.with('adult_jennifers', (db) => db
.selectFrom('jennifers')
.where('age', '>', 18)
.select(['id', 'age'])
)
.selectFrom('adult_jennifers')
.where('age', '<', 60)
.selectAll()
.execute()
CTE 名は、名前だけでなく、オプションで列名を指定できます。その場合、Kysely は、式が同じ列を持つ行を返すことを要求します。
await db
.with('jennifers(id, age)', (db) => db
.selectFrom('person')
.where('first_name', '=', 'Jennifer')
// This is ok since we return columns with the same
// names as specified by `jennifers(id, age)`.
.select(['id', 'age'])
)
.selectFrom('jennifers')
.selectAll()
.execute()
型パラメーター
型パラメーター |
---|
N extends string |
E extends CommonTableExpression <DB , N > |
パラメーター
パラメーター | 型 |
---|---|
name | N |
expression | E |
戻り値
QueryCreatorWithCommonTableExpression
<DB
, N
, E
>
継承元
Kysely.with
withPlugin()
withPlugin(plugin): Kysely<DB>
指定されたプラグインがインストールされた、この Kysely インスタンスのコピーを返します。
パラメーター
パラメーター | 型 |
---|---|
plugin | KyselyPlugin |
戻り値
Kysely
<DB
>
継承元
Kysely.withPlugin
withRecursive()
withRecursive<N, E>(name, expression): QueryCreatorWithCommonTableExpression<DB, N, E>
再帰的な with
クエリ(共通テーブル式)を作成します。
例および詳細なドキュメントについては、with メソッドを参照してください。
型パラメーター
型パラメーター |
---|
N extends string |
E extends RecursiveCommonTableExpression <DB , N > |
パラメーター
パラメーター | 型 |
---|---|
name | N |
expression | E |
戻り値
QueryCreatorWithCommonTableExpression
<DB
, N
, E
>
継承元
Kysely.withRecursive
withSchema()
withSchema(schema): QueryCreator<DB>
スキーマを明示的に指定しないすべてのテーブル参照に使用されるスキーマを設定します。
これは、このメソッドから返されたビルダーを通じて作成されたクエリにのみ影響し、db
インスタンスは変更しません。
詳細な説明については、このレシピ を参照してください。
例
await db
.withSchema('mammals')
.selectFrom('pet')
.selectAll()
.innerJoin('public.person', 'public.person.id', 'pet.owner_id')
.execute()
生成されたSQL(PostgreSQL)
select * from "mammals"."pet"
inner join "public"."person"
on "public"."person"."id" = "mammals"."pet"."owner_id"
withSchema
は、スキーマが属さないエイリアス、共通テーブル式、またはその他の場所に対してスキーマを追加しないように十分にスマートです。
await db
.withSchema('mammals')
.selectFrom('pet as p')
.select('p.name')
.execute()
生成されたSQL(PostgreSQL)
select "p"."name" from "mammals"."pet" as "p"
パラメーター
パラメーター | 型 |
---|---|
schema | string |
戻り値
QueryCreator
<DB
>
継承元
Kysely.withSchema
withTables()
withTables<T>(): Kysely<DB & T>
データベース型にテーブルが追加された、この Kysely インスタンスのコピーを返します。
このメソッドは型のみを変更し、実行されたクエリには一切影響しません。
例
次の例では、一時テーブルを追加して使用します
型パラメーター
型パラメーター |
---|
T extends Record <string , Record <string , any >> |
戻り値
Kysely
<DB
& T
>
継承元
Kysely.withTables
例
await db.schema
.createTable('temp_table')
.temporary()
.addColumn('some_column', 'integer')
.execute()
const tempDb = db.withTables<{
temp_table: {
some_column: number
}
}>()
await tempDb
.insertInto('temp_table')
.values({ some_column: 100 })
.execute()
withoutPlugins()
withoutPlugins(): Kysely<DB>
プラグインを含まない、この Kysely インスタンスのコピーを返します。
戻り値
Kysely
<DB
>
継承元
Kysely.withoutPlugins
データベース
プロパティ
Account
Account: AdapterAccount;
Session
Session: AdapterSession;
User
User: AdapterUser;
VerificationToken
VerificationToken: VerificationToken;
Codegen
type Codegen: { [K in keyof Database]: { [J in keyof Database[K]]: unknown } };
format
const format: {
from: T;
to: T;
};
型宣言
from()
型パラメーター
型パラメーター |
---|
T |
パラメーター
パラメーター | 型 |
---|---|
object ? | Record <string , any > |
戻り値
T
to()
型パラメーター
型パラメーター |
---|
T |
パラメーター
パラメーター | 型 |
---|---|
object | Record <string , any > |
戻り値
T
KyselyAdapter()
KyselyAdapter(db): Adapter
パラメーター
パラメーター | 型 |
---|---|
db | Kysely <Database > |