vesper-framework/vesper

Need a way to set typeorm connection charset

gregwym opened this issue · 3 comments

Hi Vesper team,

First of all, thanks for this great framework! It works quite well together with TypeORM.

One thing that I couldn't find a solution myself is a way to set the connection charset for MySQL. With Typeorm, I can do the following

  // read connection options from ormconfig file (or ENV variables)
  const connectionOptions = await getConnectionOptions();

  // create a connection using modified connection options
  const connection = await createConnection({
    ...connectionOptions,
    charset: 'UTF8MB4_GENERAL_CI',
  } as MysqlConnectionOptions);

It's not been loaded from option reader so this seems the only option.
I'm thinking we can either allow passing a connection to Vesper or Vesper reuse the existing default connection automatically (instead of die with AlreadyHasActiveConnectionError).

I have also tried query set names utf8mb4 after bootstrap. Even if SHOW VARIABLES indicates character_set_client is using utf8mb4 already, Typeorm isn't getting emojis correctly.

Update:
Adding useContainer(Container); before bootstrap together with set names utf8md4 seems solved it.

Update:
SET NAMES utf8mb4 does not solve all the issues. I will dig more into the code to see if its possible to solve it on typeorm layer properly.