0.0.9 • Published 10 months ago

cassandra-codegen v0.0.9

Weekly downloads
-
License
MIT
Repository
github
Last release
10 months ago

Cassandra Codegen

Generate TypeScript type definitions from a Cassandra (or ScyllaDB) database, as well as type-safe mappers.

Inspired by kysely-codegen.

Example output

CREATE TABLE cyclist_category (
    category text,
    points int,
    id UUID,
    last_name text,
    PRIMARY KEY (category, points)
) WITH CLUSTERING ORDER BY (points DESC);
export interface CyclistCategoryRow {
    category: PartitionKey<string>;
    points: Clustering<number, 'desc'>;
    id?: types.Uuid | null;
    lastName?: string | null;
}

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.

Usage instructions

  1. Install using npm install cassandra-codegen.
  2. 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.
  3. 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);
  4. You can now use the generated mappers wherever you need them:

    import { cyclistCategoryMapper } from "cassandra-codegen";
    
    const cyclistCategory = await cyclistCategoryMapper.get({...});

Additional instructions

Using query operators

You can use the query operators available in cassandra-driver in a type-safe manner. For example:

   import { cyclistCategoryMapper, queryOperator } from "cassandra-codegen";

   await cyclistCategoryMapper.find({
      category: 'GC',
      points: queryOperator.gte(42),
   });
0.0.9

10 months ago

0.0.8

10 months ago

0.0.3

10 months ago

0.0.5

10 months ago

0.0.4

10 months ago

0.0.7

10 months ago

0.0.6

10 months ago

0.0.2

10 months ago

0.0.1

10 months ago