Skip to content

Recognize type affinities #28

@jlarmstrongiv

Description

@jlarmstrongiv

SQLite supports type affinities with CREATE TABLE:

Example Typenames From TheCREATE TABLE Statement or CAST Expression Resulting Affinity Rule Used To Determine Affinity
INT INTEGER TINYINT SMALLINT MEDIUMINT BIGINT UNSIGNED BIG INT INT2 INT8 INTEGER 1
CHARACTER(20) VARCHAR(255) VARYING CHARACTER(255) NCHAR(55) NATIVE CHARACTER(70) NVARCHAR(100) TEXT CLOB TEXT 2
BLOB no datatype specified BLOB 3
REAL DOUBLE DOUBLE PRECISION FLOAT REAL 4
NUMERIC DECIMAL(10,5) BOOLEAN DATE DATETIME NUMERIC 5

When I use type affinities in SQLite:

CREATE TABLE sqlite_sequence(name,seq);

CREATE TABLE "artists"
(
    ArtistId INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
    Name NVARCHAR(120)
);

It generates invalid TypeScript types:

export const generatedSchema = schema<{
  sqlite_sequence: {
    name: any | null;
    seq: any | null
  };
  "artists": {
    ArtistId: number;
    Name: NVARCHAR | null
  };
}>;

Database originally from https://www.sqlitetutorial.net/sqlite-sample-database/

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions