@@ -31,6 +31,12 @@ defmodule AshSqlite.MigrationGenerator.Operation do
3131 # sobelow_skip ["DOS.StringToAtom"]
3232 def as_atom ( value ) , do: Macro . inspect_atom ( :remote_call , String . to_atom ( value ) )
3333
34+ def option ( key , value ) when key in [ :nulls_distinct , "nulls_distinct" ] do
35+ if ! value do
36+ "#{ as_atom ( key ) } : #{ inspect ( value ) } "
37+ end
38+ end
39+
3440 def option ( key , value ) do
3541 if value do
3642 "#{ as_atom ( key ) } : #{ inspect ( value ) } "
@@ -478,10 +484,12 @@ defmodule AshSqlite.MigrationGenerator.Operation do
478484 import Helper
479485
480486 def up ( % {
481- identity: % { name: name , keys: keys , base_filter: base_filter , index_name: index_name } ,
487+ identity: % { name: name , keys: keys , base_filter: base_filter , index_name: index_name } = identity ,
482488 table: table ,
483489 multitenancy: multitenancy
484490 } ) do
491+ nils_distinct? = Map . get ( identity , :nils_distinct? , true )
492+
485493 keys =
486494 case multitenancy . strategy do
487495 :attribute ->
@@ -494,9 +502,9 @@ defmodule AshSqlite.MigrationGenerator.Operation do
494502 index_name = index_name || "#{ table } _#{ name } _index"
495503
496504 if base_filter do
497- "create unique_index(:#{ as_atom ( table ) } , [#{ Enum . map_join ( keys , ", " , & inspect / 1 ) } ], where: \" #{ base_filter } \" , #{ join ( [ "name: \" #{ index_name } \" " ] ) } )"
505+ "create unique_index(:#{ as_atom ( table ) } , [#{ Enum . map_join ( keys , ", " , & inspect / 1 ) } ], where: \" #{ base_filter } \" , #{ join ( [ "name: \" #{ index_name } \" " , option ( "nulls_distinct" , nils_distinct? ) ] ) } )"
498506 else
499- "create unique_index(:#{ as_atom ( table ) } , [#{ Enum . map_join ( keys , ", " , & inspect / 1 ) } ], #{ join ( [ "name: \" #{ index_name } \" " ] ) } )"
507+ "create unique_index(:#{ as_atom ( table ) } , [#{ Enum . map_join ( keys , ", " , & inspect / 1 ) } ], #{ join ( [ "name: \" #{ index_name } \" " , option ( "nulls_distinct" , nils_distinct? ) ] ) } )"
500508 end
501509 end
502510
0 commit comments