Skip to content

Commit e2897e7

Browse files
committed
Per model database support
Closes #9
1 parent 76b1a5a commit e2897e7

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+113
-75
lines changed

config/database.cr

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,17 @@
11
database_name = "avram_dev"
22

3-
Avram::Database.configure do |settings|
3+
class TestDatabase < Avram::Database
4+
end
5+
6+
TestDatabase.configure do |settings|
47
settings.url = ENV["DATABASE_URL"]? || Avram::PostgresURL.build(
58
hostname: "db",
69
database: database_name,
710
username: "lucky",
811
password: "developer"
912
)
1013
end
14+
15+
Avram.configure do |settings|
16+
settings.database_to_migrate = TestDatabase
17+
end

spec/bool_criteria_spec.cr

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
require "./spec_helper"
22

3-
private class QueryMe < Avram::Model
3+
private class QueryMe < BaseModel
44
COLUMN_SQL = "users.id, users.created_at, users.updated_at, users.admin"
55

66
table users do

spec/criteria_spec.cr

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
require "./spec_helper"
22

3-
private class QueryMe < Avram::Model
3+
private class QueryMe < BaseModel
44
COLUMN_SQL = "users.id, users.created_at, users.updated_at, users.age, users.nickname"
55

66
table users do

spec/model_spec.cr

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
require "./spec_helper"
22

3-
private class QueryMe < Avram::Model
3+
private class QueryMe < BaseModel
44
COLUMN_SQL = "users.id, users.created_at, users.updated_at, users.email, users.age"
55

66
table :users do
@@ -9,40 +9,40 @@ private class QueryMe < Avram::Model
99
end
1010
end
1111

12-
private class ModelWithMissingButSimilarlyNamedColumn < Avram::Model
12+
private class ModelWithMissingButSimilarlyNamedColumn < BaseModel
1313
table :users do
1414
column mickname : String
1515
end
1616
end
1717

18-
private class ModelWithOptionalAttributeOnRequiredColumn < Avram::Model
18+
private class ModelWithOptionalAttributeOnRequiredColumn < BaseModel
1919
table :users do
2020
column name : String?
2121
end
2222
end
2323

24-
private class ModelWithRequiredAttributeOnOptionalColumn < Avram::Model
24+
private class ModelWithRequiredAttributeOnOptionalColumn < BaseModel
2525
table :users do
2626
column nickname : String
2727
end
2828
end
2929

30-
private class MissingTable < Avram::Model
30+
private class MissingTable < BaseModel
3131
table :definitely_a_missing_table do
3232
end
3333
end
3434

35-
private class MissingButSimilarlyNamedTable < Avram::Model
35+
private class MissingButSimilarlyNamedTable < BaseModel
3636
table :uusers do
3737
end
3838
end
3939

40-
private class EmptyModelCompilesOk < Avram::Model
40+
private class EmptyModelCompilesOk < BaseModel
4141
table :no_fields do
4242
end
4343
end
4444

45-
private class InferredTableNameModel < Avram::Model
45+
private class InferredTableNameModel < BaseModel
4646
COLUMN_SQL = "inferred_table_name_models.id, inferred_table_name_models.created_at, inferred_table_name_models.updated_at"
4747

4848
table do

spec/save_operation_spec.cr

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ private class SaveLineItem < LineItem::SaveOperation
2525
permit_columns :name
2626
end
2727

28-
private class ValueColumnModel < Avram::Model
28+
private class ValueColumnModel < BaseModel
2929
table :value_column_model do
3030
column value : String
3131
end
@@ -317,7 +317,7 @@ describe "Avram::SaveOperation" do
317317
it "logs the failure if a logger is set" do
318318
log_io = IO::Memory.new
319319
logger = Dexter::Logger.new(log_io)
320-
Avram::Database.temp_config(logger: logger) do |settings|
320+
Avram.temp_config(logger: logger) do |settings|
321321
SaveUser.create(name: "", age: 30) { |form, record| :unused }
322322
log_io.to_s.should contain(%("failed_to_save":"SaveUser","validation_errors":"name is required. joined_at is required"))
323323
end
@@ -443,7 +443,7 @@ describe "Avram::SaveOperation" do
443443
user = UserQuery.new.first
444444
log_io = IO::Memory.new
445445
logger = Dexter::Logger.new(log_io)
446-
Avram::Database.temp_config(logger: logger) do |settings|
446+
Avram.temp_config(logger: logger) do |settings|
447447
SaveUser.update(user, name: "") { |form, record| :unused }
448448
log_io.to_s.should contain(%("failed_to_save":"SaveUser","validation_errors":"name is required"))
449449
end

spec/spec_helper.cr

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
require "spec"
22
require "../src/avram"
3+
require "./support/base_model"
34
require "./support/**"
45
require "../config/database"
56

67
Db::Create.new.call
78
Db::Migrate.new.call
89

910
Spec.before_each do
10-
Avram::Database.truncate
11+
TestDatabase.truncate
1112
end

spec/string_criteria_spec.cr

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
require "./spec_helper"
22

3-
private class QueryMe < Avram::Model
3+
private class QueryMe < BaseModel
44
COLUMN_SQL = "users.id, users.created_at, users.updated_at, users.name"
55

66
table users do

spec/support/admin.cr

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
class Admin < Avram::Model
1+
class Admin < BaseModel
22
COLUMN_SQL = "admins.id, admins.created_at, admins.updated_at, admins.name"
33

44
table do

spec/support/base_model.cr

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
class BaseModel < Avram::Model
2+
def self.database
3+
TestDatabase
4+
end
5+
end

spec/support/blob.cr

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
class Blob < Avram::Model
1+
class Blob < BaseModel
22
table do
33
column doc : JSON::Any?
44
end

0 commit comments

Comments
 (0)