Untitled

 avatar
unknown
plain_text
10 days ago
1.1 kB
12
Indexable

class Table { has $.name }

sub table(Str $name) { Table.new(:$name) }

multi sub create(Table $ (:$name), &block) is export {
  my $*SQL = "CREATE TABLE $name (\n";
  my @*SQL-FIELD-DEFINITIONS;

  &block();

  my $sql-body = @*SQL-FIELD-DEFINITIONS.join: ",\n";

  $*SQL ~= "$sql-body\n);";

  return $*SQL; 
}

proto sub add(Str $field-name, Mu $type, *%options) {*}
multi sub add(Str $field-name, Str, :$size) {
  @*SQL-FIELD-DEFINITIONS.push: "$field-name varchar($size)";
}

multi sub add(Str $field-name, Str, *% ()) {
  @*SQL-FIELD-DEFINITIONS.push: "$field-name text";
}


######## In rlwrap raku REPL:

[6] > create table('hello'), { add "name", Str }
Use of uninitialized value element of type Any in string context.
Methods .^name, .raku, .gist, or .say can be used to stringify it to something meaningful.
  in sub add at <unknown file> line 2
  in block <unit> at <unknown file> line 3
  in any <main> at /Users/arun/.rakubrew/versions/moar-2025.10/install/share/perl6/runtime/perl6.moarvm line 1
  in any <entry> at /Users/arun/.rakubrew/versions/moar-2025.10/install/share/perl6/runtime/perl6.moarvm line 1

Editor is loading...
Leave a Comment