// DO NOT EDIT: Code generated by matcha from insert.matcha import gleam/list import gleam/string_builder.{type StringBuilder} import db/schema.{type Column, type Table} import gleam/int import gleam/iterator.{range, to_list} import gleam/pgo.{type Value} import gleam/string fn columns(table: Table) -> StringBuilder { let builder = string_builder.from_string("") let builder = list.fold(table.columns, builder, fn(builder, col: Column) { let builder = string_builder.append( builder, string.replace(string.capitalise(col.name), "_", ""), ) builder }) builder } fn columns2(table: Table) -> StringBuilder { let builder = string_builder.from_string("") let builder = list.fold(table.columns, builder, fn(builder, col: Column) { let builder = string_builder.append(builder, string.replace(col.name, "_", "")) builder }) builder } fn columnsyay(table: Table) -> StringBuilder { let builder = string_builder.from_string("") let builder = list.fold(table.columns, builder, fn(builder, col: Column) { let builder = string_builder.append(builder, " ") let builder = string_builder.append(builder, col.name) let builder = string_builder.append(builder, ", ") builder }) builder } fn num(table: Table) -> StringBuilder { let builder = string_builder.from_string("") let builder = list.fold( to_list(range(1, list.length(table.columns))), builder, fn(builder, i) { let builder = string_builder.append(builder, " $") let builder = string_builder.append(builder, int.to_string(i)) let builder = string_builder.append(builder, ", ") builder }, ) builder } pub fn render_builder(table table: Table) -> StringBuilder { let builder = string_builder.from_string("") let builder = string_builder.append( builder, " ", ) let builder = string_builder.append( builder, " ", ) let builder = string_builder.append( builder, " ", ) let builder = string_builder.append( builder, " ", ) let builder = string_builder.append( builder, " ", ) let builder = string_builder.append( builder, " import funs/", ) let builder = string_builder.append(builder, table.name) let builder = string_builder.append( builder, "_decoder import funs/", ) let builder = string_builder.append(builder, table.name) let builder = string_builder.append( builder, " import gleam/pgo pub fn insert(db: pgo.Connection, values: List(Value)) -> Result(", ) let builder = string_builder.append(builder, table.name) let builder = string_builder.append(builder, ".") let builder = string_builder.append(builder, string.capitalise(table.name)) let builder = string_builder.append( builder, "Row, pgo.QueryError) { let query = \"INSERT INTO ", ) let builder = string_builder.append(builder, table.name) let builder = string_builder.append(builder, " (") let builder = string_builder.append_builder(builder, columnsyay(table)) let builder = string_builder.append(builder, ") VALUES (") let builder = string_builder.append_builder(builder, num(table)) let builder = string_builder.append( builder, ")\" pgo.execute(db, [values], ", ) let builder = string_builder.append(builder, table.name) let builder = string_builder.append(builder, ".") let builder = string_builder.append(builder, table.name) let builder = string_builder.append( builder, "_decoder_) } ", ) builder } pub fn render(table table: Table) -> String { string_builder.to_string(render_builder(table: table)) }