Create a Data Access Object for Linear Data using JDBI

Jerod Johnson
Jerod Johnson
Director, Technology Evangelism
A brief overview of creating a SQL Object API for Linear data in JDBI.

JDBI is a SQL convenience library for Java that exposes two different style APIs, a fluent style and a SQL object style. The CData JDBC Driver for Linear integrates connectivity to live Linear data in Java applications. By pairing these technologies, you gain simple, programmatic access to Linear data. This article explains how to build a basic Data Access Object (DAO) and the accompanying code to read Linear data.

Create a DAO for the Linear Team Entity

The interface below declares the desired behavior for the SQL object to create a single method for each SQL statement to be implemented.


public interface MyTeamDAO {
  //request specific data from Linear (String type is used for simplicity)
  @SqlQuery("SELECT name FROM Team WHERE key = :key")
  String findnameBykey(@Bind("key") String key);

  /*
   * close with no args is used to close the connection
   */
  void close();
}

Open a Connection to Linear

Collect the necessary connection properties and construct the appropriate JDBC URL for connecting to Linear.

You can authenticate to Linear with a personal API key or with OAuth 2.0. The API key is the simplest option for connecting with your own Linear account.

Authenticating with an API Key

Set the following connection properties:

  • AuthScheme: Set this to APIKey.
  • APIKey: A Linear personal API key.

To create a personal API key, log in to Linear, open Settings > Security & access > Personal API keys, select New API key, and create it. Copy the key immediately, because Linear shows it only once.

Authenticating with OAuth

OAuth requires a custom OAuth application registered in Linear (Settings > API > OAuth applications), which provides the OAuthClientId and OAuthClientSecret. Two flows are supported:

  • Authorization code: Set AuthScheme to OAuth, InitiateOAuth to GETANDREFRESH, and provide OAuthClientId, OAuthClientSecret, and the CallbackURL defined in your application (e.g., http://localhost:33333). The driver opens Linear in your browser so you can grant access.
  • Client credentials: Set AuthScheme to OAuthClient and provide OAuthClientId and OAuthClientSecret. This authenticates the application itself, with no browser interaction, and suits machine-to-machine integrations.

By default, the driver requests the read,write scopes. The driver refreshes the access token automatically when it expires.

Built-in Connection String Designer

For assistance in constructing the JDBC URL, use the connection string designer built into the Linear JDBC Driver. Either double-click the JAR file or execute the jar file from the command-line.


java -jar cdata.jdbc.linear.jar

Fill in the connection properties and copy the connection string to the clipboard.

Using the built-in connection string designer to generate a JDBC URL (Salesforce is shown.)

A connection string for Linear will typically look like the following:

jdbc:linear:AuthScheme=APIKey;APIKey=myAPIKey;

Use the configured JDBC URL to obtain an instance of the DAO interface. The particular method shown below will open a handle bound to the instance, so the instance needs to be closed explicitly to release the handle and the bound JDBC connection.


DBI dbi = new DBI("jdbc:linear:AuthScheme=APIKey;APIKey=myAPIKey;");
MyTeamDAO dao = dbi.open(MyTeamDAO.class);

//do stuff with the DAO

dao.close();

Read Linear Data

With the connection open to Linear, simply call the previously defined method to retrieve data from the Team entity in Linear.


//disply the result of our 'find' method
String name = dao.findnameBykey("ENG");
System.out.println(name);

Since the JDBI library is able to work with JDBC connections, you can easily produce a SQL Object API for Linear by integrating with the CData JDBC Driver for Linear. Download a free trial and work with live Linear data in custom Java applications today.

Ready to get started?

Download a free trial of the Linear Driver to get started:

 Download Now

Learn more:

Linear Icon Linear JDBC Driver

Rapidly create and deploy powerful Java applications that integrate with Linear data including AgentSession, Comment, Customer, Cycle, Initiative, Integration, Issue, ProjectStatus, Release, Team, User, and more!