@aereal/go-dsn: TypeScriptでgo-sql-driverのDSNを組み立てるNPMパッケージを作った

go-sql-driverのDSN (Data Source Name) をオブジェクトから生成するライブラリを書きました。

yarn add @aereal/go-dsn

github.com

使い方をsynopsisから引用します:

import { formatDSN } from "@aereal/go-dsn"

formatDSN({
  dbName: "test-db",
  passwd: "mypasswd",
  user: "root",
})
// => "root:mypasswd@/test-db"

便利。

AWS RDSへ接続するようなGoで書いたアプリをAWS CDKでECSにデプロイする際に使うと便利です。

import { Ec2TaskDefinition } from "@aws-cdk/aws-ecs";
import { DatabaseCluster } from "@aws-cdk/aws-rds";

const taskDef = new Ec2TaskDefinition(this, "TaskDefinition", {});

const dbCluster = DatabaseCluster.import(
  this,
  "DatabaseCluster",
  databaseClusterProps
);

const dsn = formatDSN({
  addr: dbCluster.clusterEndpoint.socketAddress,
  charset: "utf8mb4",
  collation: "utf8mb4_bin",
  dbName: "app",
  user: "root",
});

const appContainer = taskDef.addContainer("app", {
  environment: {
    DSN: dsn,
  },
  // ...
);

たいへん便利! どうぞご利用ください。