Red.git | t/ | 71-conflicting-column-attribute.rakutest


#!/usr/bin/env raku

use Red;
use Test;

my $*RED-DEBUG          = $_ with %*ENV<RED_DEBUG>;
my $*RED-DEBUG-RESPONSE = $_ with %*ENV<RED_DEBUG_RESPONSE>;
my @conf                = (%*ENV<RED_DATABASE> // "SQLite").split(" ");
my $driver              = @conf.shift;
my $*RED-DB             = database $driver, |%( @conf.map: { do given .split: "=" { .[0] => val .[1] } } );

model A {
    has Str $.id is id;
}

model B {
    has Int $.id is serial;
    has Str $.a-id is column({ name => 'a', model-name => 'A', column-name => 'id' });
    has     $.a    is relationship({ .a-id }, model => 'A');
    has Int $.c-id is referencing(model => 'C', column => 'id' );
    has     $.c is relationship({ .c-id }, model => 'C');
}

model C {
    has Int $.id is serial;
    has DateTime $.d is column = DateTime.now;
    has     @.bs is relationship({ .c-id }, model => 'B' );
}

schema(A, B, C).drop.create;

A.^create( id => 'FOO');

my $c = C.^create;

my $b;

lives-ok { $b = B.^new-from-data: { a => 'FOO', c_id => $c.id } }, "new-from-data with column names";
is $b.a-id, 'FOO', "got the FK in the attribute with the conflicting column name";
is $b.c-id, $c.id, "got the other FK right too";

done-testing;
# vim: ft=raku