Skip to content

Instantly share code, notes, and snippets.

View davelosert's full-sized avatar

David Losert davelosert

View GitHub Profile
@davelosert
davelosert / connect.sh
Last active February 9, 2021 15:21
K8S PSQL Interactive Shell
#!/usr/bin/env bash
# replace this variable
NAMESPACE="<NAMESPACE>"
function deletePod {
kubectl delete pod psql-client --namespace=$NAMESPACE
}
trap deletePod EXIT
@davelosert
davelosert / App.tsx
Last active January 16, 2021 10:19
Beispiel für Subkomponenten-State
import { Menu } from './Menu';
import { MenuModel } from './MenuModel';
import React from 'react';
export class App extends React.Component<any, IAppState> {
public constructor (props: any) {
super(props);
const mockMenuService: MockMenuService = new MockMenuService();
const menu: MenuModel = mockMenuService.getMenu();
@davelosert
davelosert / spreadAndClass.ts
Last active November 7, 2017 11:28
Object Spread and Classes don't mix
class MyClass {
greet: () => console.log('Hello World')
}
const myObject = {
...new MyClass()
}
// will throw "myObject.greet" is not a function as the greeting is on the prototype, not the acutal instantiated class object
myObject.greet()
declare var MOCK_API: boolean;
const todoRepository = MOCK_API ?
createMockTodoRepository()
: createHTTPTodoRepository('https://jsonplaceholder.typicode.com');
const initialState = {loading: false, todos: []};
const store = createStore<TodoListState>(todo, initialState,
applyMiddleware(
thunk.withExtraArgument(todoRepository())
import {Todo} from '../../state/Todo';
import {TodoRepository} from '../TodoRepository';
export const createMockTodoRepository = (): TodoRepository => ({
loadAllTODOs: () => Promise.resolve(createMockTodos())
});
const emptyArray = Array(1000).fill(0);
const createMockTodos = () => emptyArray.map((val, index) =>
import {TodoRepository} from './TodoRepository';
import {loadingTodos, loadTodosSuccess} from '../state/todo.actions';
import {Todo} from '../state/Todo';
export const fetchAllTodos = () =>
(dispatch, getState, todoRepository: TodoRepository) => {
dispatch(loadingTodos());
todoRepository.loadAllTODOs().then((todos: Todo[]) => {
dispatch(loadTodosSuccess(todos));
});
import {createHTTPTodoRepository} from './todo-repository/http/HttpTodoRepository';
const initialState = {loading: false, todos: []};
const store = createStore<TodoListState>(todo, initialState,
applyMiddleware(
thunk.withExtraArgument(createHTTPTodoRepository())
)
);
import {TodoRepository} from '../TodoRepository';
export const createHTTPTodoRepository = (baseURL: string): TodoRepository => {
return {
loadAllTODOs: () => fetch(`${baseURL}/todos`).then(result => result.json())
}
};
import {Todo} from '../state/Todo';
export interface TodoRepository {
loadAllTODOs(): Promise<Todo[]>;
}
import {loadingTodos, loadTodosSuccess} from '../state/todo.actions';
export const fetchAllTodos = () =>
(dispatch, getState, todoRepository: TodoRepository) => {
dispatch(loadingTodos());
fetch('https://jsonplaceholder.typicode.com/todos')
.then(result => result.json())
.then(todos => dispatch(loadTodosSuccess(todos)))
};