示例#1
0
def handler(event, context):
    sql = db.table('work')
    query_params = event.get('queryStringParameters') or {}

    authors = split(query_params.get('authors'))
    categories = split(query_params.get('categories'))

    if authors:
        sql = (
            sql.join('workRole', 'work.id', '=', 'workRole.workId')
            .where('workRole.type', 'author')
            .where_in('workRole.userId', authors)
        )

    if categories:
        sql = (
            sql.join(
                JoinClause('categoryMap')
                .on('work.id', '=', 'categoryMap.categorizableId')
                .where('categoryMap.categorizableType', '=', 'work')
            )
            .join('category', 'category.id', '=', 'categoryMap.categoryId')
            .where_in('category.key', categories)
        )

    return {
        'body': dumps({'data': list(map(lambda x: parse(x), sql.get()))}),
        'headers': {'Access-Control-Allow-Origin': '*'},
        'statusCode': 200,
    }
示例#2
0
def handler(event, context):
    try:
        body = json.loads(event.get('body'))
    except:
        body = {}

    id_ = body.get('id')
    contents = body.get('contents')

    work = db.table('work').where('id', id_).first()

    try:
        if work is None:
            db.table('work').insert({
                'id': id_,
                'contents': json.dumps(contents)
            })
            work = db.table('work').where('id', id_).first()
        else:
            db.table('work').where('id', id_).update(
                {'contents': json.dumps(contents)})
    except Exception as e:
        return abort(400, parse_sql_error(e))

    return {
        'body': dumps({'data': parse(work)}),
        'headers': {
            'Access-Control-Allow-Origin': '*'
        },
        'statusCode': 201,
    }
示例#3
0
def handler(event, context):
    return {
        'body': dumps({
            'data': db.table('category').lists('key'),
        }),
        'headers': {'Access-Control-Allow-Origin': '*'},
        'statusCode': 200,
    }
示例#4
0
def handler(event, context):
    path_params = event.get('pathParameters')
    work_id = path_params.get('id')

    work = db.table('work').where('id', work_id).first()

    if work is None:
        return abort(404, 'not found')

    return {
        'body': dumps({'data': parse(work)}),
        'headers': {
            'Access-Control-Allow-Origin': '*'
        },
        'statusCode': 200,
    }
示例#5
0
def handler(event, context):
    try:
        body = json.loads(event.get('body'))
    except:
        body = {}

    categorizable_id = body.get('categorizableId')
    categorizable_type = body.get('categorizableType')

    if categorizable_type is not None and categorizable_type not in types:
        return abort(403, new_error('invalid categorizable type', 1))

    category_ids = []

    for key in body.get('keys') or []:
        category_id = db.table('category').where('key', key).pluck('id')

        if category_id is None:
            category_id = db.table('category').insert_get_id({'key': key})

        category_ids.append(category_id)

    if categorizable_id is not None and categorizable_type is not None:
        db.table('categoryMap').where({
            'categorizableId': categorizable_id,
            'categorizableType': categorizable_type,
        }).delete()

        for category_id in category_ids:
            db.table('categoryMap').insert({
                'categoryId':
                category_id,
                'categorizableId':
                categorizable_id,
                'categorizableType':
                categorizable_type,
            })

    return {
        'body': dumps({'data': True}),
        'headers': {
            'Access-Control-Allow-Origin': '*'
        },
        'statusCode': 201,
    }
示例#6
0
def handler(event, context):
    user_id = new_id()

    while db.table('user').where({'id': user_id}).first():
        user_id = new_id()

    try:
        body = json.loads(event.get('body'))
    except:
        body = {}

    props = body.get('props') or {}
    verbose = body.get('verbose')
    unique_props = {k: v for k, v in props.items() if k in UNIQUE_KEYS}
    custom_props = {k: v for k, v in props.items() if k not in unique_props}

    if 'password' in custom_props:
        custom_props['password'] = password(custom_props['password'])

    try:
        set_props(user_id, props=unique_props, unique=True)
        set_props(user_id, props=custom_props)
        db.table('user').insert(id=user_id)
    except Exception as e:
        return abort(400, parse_sql_error(e))

    return {
        'body':
        dumps({
            'data':
            get(
                user_id,
                keys=props.keys(),
                verbose=verbose,
                is_me=True,
            )
        }),
        'headers': {
            'Access-Control-Allow-Origin': '*'
        },
        'statusCode':
        201,
    }