Skip to content

Instantly share code, notes, and snippets.

View langpavel's full-sized avatar

Pavel Lang langpavel

View GitHub Profile
@langpavel
langpavel / template1.sql
Created February 11, 2016 06:03
PostgreSQL česká template1 šablona
/* PostgreSQL česká template1 */
UPDATE pg_database SET datistemplate = false WHERE datname = 'template1';
DROP DATABASE template1;
CREATE DATABASE template1 template=template0 encoding='UTF-8' LC_COLLATE='cs_CZ.UTF-8' LC_CTYPE='cs_CZ.UTF-8';
COMMENT ON DATABASE template1 IS 'Výchozí česká databáze';
UPDATE pg_database SET
datacl = (SELECT datacl FROM pg_database WHERE datname = 'template0'),
datistemplate = true
WHERE datname = 'template1';
@langpavel
langpavel / uaccent.sql
Last active July 12, 2021 10:18
PostgreSQL URL slug usable for indices
/**
* original unaccent function isn't usable for indices
*/
CREATE OR REPLACE FUNCTION uaccent(text) RETURNS text AS
$uaccent$
SELECT unaccent('unaccent',$1::text);
$uaccent$ LANGUAGE sql IMMUTABLE;
@langpavel
langpavel / GraphQLTimestamp.js
Last active July 28, 2023 08:46
GraphQLTimestamp.js
import { Kind } from 'graphql/language';
import { GraphQLScalarType } from 'graphql';
function serializeDate(value) {
if (value instanceof Date) {
return value.getTime();
} else if (typeof value === 'number') {
return Math.trunc(value);
} else if (typeof value === 'string') {
return Date.parse(value);
@langpavel
langpavel / keybase.md
Last active September 24, 2016 09:55
Keybase proof

Keybase proof

I hereby claim:

  • I am langpavel on github.
  • I am langpavel (https://keybase.io/langpavel) on keybase.
  • I have a public key ASD90-YIy2SfkHcnDOIr-maeEAW83YKtCSpWkBoHp3lyGgo

To claim this, I am signing this object:

💯 🔢 👍 👎 🥇 🥈 🥉 🎱 🅰️ 🆎

@langpavel
langpavel / CsvTransformStream.js
Created October 26, 2017 23:21
Node Streams: HashThroughStream, ObjectStreamToJSON and CsvTransformStream
import { Transform } from 'stream';
export default class CsvTransformStream extends Transform {
constructor(options) {
super({
decodeStrings: false,
readableObjectMode: true,
});
this.rowFlushed = true;
this.currentColumn = [];
@langpavel
langpavel / mergeExtensionsIntoAST.js
Last active December 4, 2020 15:37
GraphQL: Merge Extensions Into AST
const invariant = require('invariant');
const { Kind } = require('graphql');
const byKindGetInfo = {
// SchemaDefinition
[Kind.SCHEMA_DEFINITION]: def => ({
isExtension: false,
type: 'schema',
typeName: 'schema',
}),
@langpavel
langpavel / graphql-loader-ts.js
Created April 8, 2019 15:14
graphql-loader-ts (really not finished)
/* eslint-disable max-len, consistent-return, no-continue, no-restricted-syntax, func-names, no-throw-literal, global-require */
// really heavily borrowed from 'graphql-tag/loader'
const fs = require('fs');
const gql = require('graphql-tag/src');
const { addTypenameToDocument } = require('apollo-utilities');
// Takes `lines` (the source GraphQL query string)
// and `doc` (the parsed GraphQL document) and tacks on
// the imported definitions.
@langpavel
langpavel / generate-urls.d.ts
Created April 10, 2019 09:43
universal-router generated type definitions
import { Params } from './types';
import UniversalRouter from './universal-router';
export default function generateUrls(router: UniversalRouter<any, any>, options?: any): (routeName: string, params: Params) => string;
//# sourceMappingURL=generate-urls.d.ts.map
@langpavel
langpavel / create-comparator.ts
Created May 29, 2019 22:37
TypeScript comparator factory for Array.sort()
// Usage:
const candidates: any[] = [];
// ...
candidates.sort(createComparator(
(x) => x.ambiguous,
(_, y) => y.refCount, // DESC
(x) => x.name.length,
(x) => x.name,
));