Skip to content

Instantly share code, notes, and snippets.

@guillaumewuip
guillaumewuip / Message.ts
Created February 20, 2020 07:53
How to model your entities - 6
// If this function returns true, TS will know the message variable is a TextMessage
function isText(message: Message): message is TextMessage {
return message.messageType === ‘TEXT’;
}
// Repeat for isImage and isAudio
@guillaumewuip
guillaumewuip / Somewhere.ts
Created February 20, 2020 07:51
How to model your entities - 5
function renderMessage(message: Message) {
if (message.messageType === 'TEXT') {
// message is typed as TextMessage here
return <TextComponent text={message.text} />
}
if (message.messageType === 'IMAGE') {
// message is typed as ImageMessage here
return <ImageComponent url={message.url} description={message.description} />
}
@guillaumewuip
guillaumewuip / Message.ts
Created February 20, 2020 07:50
How to model your entities - 4
export type TextMessage = {
messageType: 'TEXT';
...
}
export type ImageMessage = {
messageType: 'IMAGE';
...
}
@guillaumewuip
guillaumewuip / Somewhere.ts
Last active February 20, 2020 09:55
How to model your entities - 3
import { Message } from ‘./Message’
function renderMessage(message: Message) {
if (message.text) {
// ok we know it’s a TextMessage
return <TextComponent text={message.text} />
}
if (message.url) {
// Problem!
@guillaumewuip
guillaumewuip / Message.ts
Created February 20, 2020 07:46
How to model your entities - 2
// Message.ts
export type Message = TextMessage | ImageMessage | AudioMessage;
@guillaumewuip
guillaumewuip / Message.ts
Created February 20, 2020 07:44
How to model your entities - 1
// Message.ts
export type TextMessage = {
text: string;
}
export type ImageMessage = {
mimeType: string;
url: string;
description: string;
}
@guillaumewuip
guillaumewuip / request.sql
Last active November 30, 2016 05:44
Moodle files access
DROP PROCEDURE IF EXISTS getLogsForModule;
DELIMITER $$
CREATE PROCEDURE getLogsForModule(module VARCHAR(255))
BEGIN
-- on doit passer par un concat car le nom d'une table doit être statique
SET @request = CONCAT("SELECT l.*, i.*, c.*, category_path(c.category) as category_path, u.*
FROM mdl_logstore_standard_log l
LEFT OUTER JOIN mdl_", module, " i ON i.id = l.objectid
LEFT OUTER JOIN mdl_course c ON c.id = l.courseid
@guillaumewuip
guillaumewuip / script.js
Last active September 16, 2016 06:20
Google Sheet Script to distribute projects to groups
var CHOICES_SHEETS = 'Choix',
PROJECTS_SHEETS = 'Sujets',
RESULTS_SHEETS = 'Résultat';
/**
* randomInt
* @return {Number} An int in [0; max[
*/
var randomInt = function (max) {
var max = Math.floor(max);
@guillaumewuip
guillaumewuip / org.dokku.start.plist
Last active July 2, 2016 19:25
macOS launch daemon for dokku
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>org.dokku.start</string>
<key>EnvironmentVariables</key>
<dict>
<key>PATH</key>
<string>/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin</string>
@guillaumewuip
guillaumewuip / gitlab_ci.yml
Created June 26, 2016 16:49
Gitlab CI to dokku
###############################################################################
# Variables #
###############################################################################
variables:
DOKKU_HOST: 'host.com'
PROJECT_NAME: 'project_name'
###############################################################################
# Cache #
###############################################################################