Generate TypeScript type definitions from a Cassandra (or ScyllaDB) database, as well as type-safe mappers.
Inspired by kysely-codegen.
Existing Cassandra table | Resulting TypeScript type |
|
export interface CyclistCategoryRow {
category: PartitionKey<string>;
points: Clustering<number, 'desc'>;
id: types.Uuid;
lastname: string;
} |
Additionally, a mapper named cyclistCategoryMapper
is generated, which is similar to the mapper provided by cassandra-driver
, but is more type-safe due to the type annotations specifying partition key & clustering columns.
-
Install using
npm install cassandra-codegen
. -
In your project, run:
cassandra-codegen --host <host> --port <port> --datacenter <datacenter> --username <username> --password <password> --keyspace <keyspace>
Notes:
- Run
cassandra-codegen -h
for extra CLI options. - You may have to run
npm exec cassandra-codegen -- args
, depending on your environment.
- Run
-
In your code (usually inside some
init
function), add the following call:import { initMappers } from "cassandra-codegen"; // The argument should be a connected `cassandra-driver` client. await initMappers(cassandra);
-
You can now use the generated mappers wherever you need them:
import { cyclistCategoryMapper } from "cassandra-codegen"; const cyclistCategory = await cyclistCategoryMapper.get({...});